24.04.2013 Views

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CHAPTER 4. VERIFYING CIRCUIT LAYOUTS 96<br />

2.ÎnRna.<br />

∀ qs137 qs138 qs139. 0 ≤ Height (qs138 ;;; R $ qs137 ;;; qs139);<br />

∀ qs137 qs138 qs139. 0 ≤ Width (qs138 ;;; R $ qs137 ;;; qs139);<br />

∀ l t b r. 0 ≤ irow.width na R l t b r <br />

=⇒ ∀ l t b r. 0 ≤ irow.width (Suc na) R l t b r<br />

The pro<strong>of</strong> should now be completed by auto intro: width ser ge0, however the automatic<br />

pro<strong>of</strong> tools do not work in this case. We can however prove the base case and expand the<br />

induction case using only the simplifier:<br />

> apply (simp, simp)<br />

goal (theorem (width ge0 int), 1 subgoal):<br />

1.ÎRna.<br />

∀ qs137 a b aa ba. 0 ≤ Height R qs137 (a, b) (aa, ba);<br />

∀ qs137 a b aa ba. 0 ≤ Width R qs137 (a, b) (aa, ba);<br />

∀ l t b r. 0 ≤ irow.width na R l t b r <br />

=⇒ ∀ l t b r.<br />

0 ≤ Width<br />

(snd.snd $ (converse.converse $ (apr $ int na)) ;;<br />

beside $<br />

((| Def = λb c. arbitrary, Height = λb c. arbitrary,<br />

Width = λ(l, t). split (irow.width na R l t) |),<br />

R $ int na + 1) ;;<br />

fst . fst $ (apr $ int na))<br />

(l, t) (b, r)<br />

We can apply the width ser ge0 rule manually, after removing the universal quantifiers,<br />

which splits the goal into three sub-goals:<br />

> apply (rule allI )+<br />

> apply (rule width ser ge0)+<br />

goal (theorem (width ge0 int), 3 subgoals):<br />

1.ÎRna l t b r x y xa ya.<br />

∀ qs137 a b aa ba. 0 ≤ Height R qs137 (a, b) (aa, ba);<br />

∀ qs137 a b aa ba. 0 ≤ Width R qs137 (a, b) (aa, ba);<br />

∀ l t b r. 0 ≤ irow.width na R l t b r

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!