Verification of Parameterised FPGA Circuit Descriptions with Layout ...
Verification of Parameterised FPGA Circuit Descriptions with Layout ... Verification of Parameterised FPGA Circuit Descriptions with Layout ...
APPENDIX C. PLACED COMBINATOR LIBRARIES 252 by auto end bool,(’t11*’t12)=>(’t13*’t14)=>int)block) *(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=> int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’ t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>bool" height:: "((((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int)block) *(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=> int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’ t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>int" width:: "((((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int)block) *(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=> int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’ t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>int" surround:: "(((((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int) block)*(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’ t12=>int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=> bool,’t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>bool, ((((’t11*’t12) =>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int)block)*(((’t16=>’t11=>bool ,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=>int)block))*(((’t13=>’ t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’t14=>’t22=>int)block))) =>(’t16*’t18)=>(’t20*’t22)=>int)block" defs struct_def: "struct == % (A, (B, C), (D, E)) (l, t) (b, r). EX (l2::’t11) (t2::’ t12) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)" height_def: "height == % (A, (B, C), (D, E)) (l, t) (b, r). let l2 = (THE (l2::’t11). EX (t2::’t12) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in
APPENDIX C. PLACED COMBINATOR LIBRARIES 253 let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;; E ;;; r))) ((max (Height (b2 ;;; D ;;; b)) ((max ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A ;;; (b2, r2)))) ((max ((max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;; E ;;; r))) ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A ;;; (b2, r2))))) + (Height (t ;;; C ;;; t2))) ((Height (b2 ;;; D ;;; b)) + ( Height (l ;;; B ;;; l2)))))))))" width_def: "width == % (A, (B, C), (D, E)) (l, t) (b, r). let l2 = (THE (l2::’t11). EX (t2::’t12) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A ;;; (b2, r2))) + ( Width (r2 ;;; E ;;; r))) ((max ((Width (l ;;; B ;;; l2)) + (Width (b2 ;;; D ;;; b))) ((max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A ;;; (b2, r2)))) ((max ((Width (l ;;; B ;;; l2)) + (Width (t ;;; C ;;; t2 ))) (Width (l ;;; B ;;; l2))))))))" surround_def: "surround == (| Def = struct, Height = height, Width = width|)" declare width_def [simp] declare height_def [simp] declare struct_def [simp] section {* Validity of width and height functions *} theorem height_ge0_int : "!! (A::(((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13 *’t14)=>int)block)) (B::((’t16=>’t11=>bool,’t16=>’t11=>int)block)) (C::((’t18=>’ t12=>bool,’t18=>’t12=>int)block)) (D::((’t13=>’t20=>bool,’t13=>’t20=>int)block)) (E::((’t14=>’t22=>bool,’t14=>’t22=>int)block)) (l::’t16) (t::’t18) (b::’t20) (r ::’t22). [| ALL (qs32::(’t11*’t12)) (qs33::(’t13*’t14)). 0
- Page 211 and 212: APPENDIX B. THEORETICAL BASIS FOR L
- Page 213 and 214: APPENDIX B. THEORETICAL BASIS FOR L
- Page 215 and 216: APPENDIX B. THEORETICAL BASIS FOR L
- Page 217 and 218: Appendix C Placed Combinator Librar
- Page 219 and 220: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 221 and 222: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 223 and 224: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 225 and 226: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 227 and 228: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 229 and 230: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 231 and 232: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 233 and 234: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 235 and 236: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 237 and 238: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 239 and 240: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 241 and 242: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 243 and 244: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 245 and 246: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 247 and 248: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 249 and 250: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 251 and 252: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 253 and 254: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 255 and 256: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 257 and 258: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 259 and 260: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 261: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 265 and 266: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 267 and 268: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 269 and 270: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 271 and 272: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 273 and 274: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 275 and 276: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 277 and 278: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 279 and 280: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 281 and 282: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 283 and 284: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 285 and 286: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 287 and 288: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 289 and 290: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 291 and 292: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 293 and 294: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 295 and 296: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 297 and 298: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 299 and 300: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 301 and 302: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 303 and 304: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 305 and 306: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 307 and 308: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 309 and 310: APPENDIX D. CIRCUIT LAYOUT CASE STU
- Page 311 and 312: APPENDIX D. CIRCUIT LAYOUT CASE STU
APPENDIX C. PLACED COMBINATOR LIBRARIES 253<br />
let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B<br />
;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />
(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />
let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B<br />
;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />
(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />
let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B<br />
;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />
(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />
max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;; E ;;; r))) ((max (Height (b2<br />
;;; D ;;; b)) ((max ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A<br />
;;; (b2, r2)))) ((max ((max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;;<br />
E ;;; r))) ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A ;;; (b2,<br />
r2))))) + (Height (t ;;; C ;;; t2))) ((Height (b2 ;;; D ;;; b)) + (<br />
Height (l ;;; B ;;; l2)))))))))"<br />
width_def: "width == % (A, (B, C), (D, E)) (l, t) (b, r).<br />
let l2 = (THE (l2::’t11). EX (t2::’t12) (b2::’t13) (r2::’t14). Def (l ;;; B<br />
;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />
(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />
let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B<br />
;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />
(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />
let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B<br />
;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />
(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />
let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B<br />
;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />
(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />
max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A ;;; (b2, r2))) + (<br />
Width (r2 ;;; E ;;; r))) ((max ((Width (l ;;; B ;;; l2)) + (Width (b2<br />
;;; D ;;; b))) ((max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A<br />
;;; (b2, r2)))) ((max ((Width (l ;;; B ;;; l2)) + (Width (t ;;; C ;;; t2<br />
))) (Width (l ;;; B ;;; l2))))))))"<br />
surround_def: "surround == (| Def = struct, Height = height, Width = width|)"<br />
declare width_def [simp]<br />
declare height_def [simp]<br />
declare struct_def [simp]<br />
section {* Validity <strong>of</strong> width and height functions *}<br />
theorem height_ge0_int : "!! (A::(((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13<br />
*’t14)=>int)block)) (B::((’t16=>’t11=>bool,’t16=>’t11=>int)block)) (C::((’t18=>’<br />
t12=>bool,’t18=>’t12=>int)block)) (D::((’t13=>’t20=>bool,’t13=>’t20=>int)block))<br />
(E::((’t14=>’t22=>bool,’t14=>’t22=>int)block)) (l::’t16) (t::’t18) (b::’t20) (r<br />
::’t22). [| ALL (qs32::(’t11*’t12)) (qs33::(’t13*’t14)). 0