Verifikation reaktiver Systeme - Universität Kaiserslautern
Verifikation reaktiver Systeme - Universität Kaiserslautern
Verifikation reaktiver Systeme - Universität Kaiserslautern
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
245<br />
val SUB_def = Define ‘SUB(in1:num->num,in2:num->num,out:num->num) =<br />
!t. out t = (in1 t - in2 t)‘;<br />
val LESS_def = Define ‘LESS(in1:num->num,in2:num->num,out:num->bool) =<br />
!t. out t = (in1 t < in2 t)‘;<br />
val LSB_def = Define ‘LSB(inp:num->num,out:num->bool) =<br />
!t. out t = ((inp t) MOD 2 = 1)‘;<br />
val BGCD_IMP_def = Define ‘BGCD_IMP<br />
(initX:num, initY:num,<br />
regX:num->num, regY:num->num, regK:num->num) =<br />
? inX, inY, regXshift, regYshift, oddX, oddY, regXcor, regYcor,<br />
evenX, evenY, evenXY, oddXY, oddXYy, oddXYx,<br />
subX, subY, subXY, subYX.<br />
REG(inX,regX,initX) /\ REG(inY,regY,initY) /\<br />
SHIFT(regX,regXshift) /\ SHIFT(regY,regYshift) /\<br />
LSB(regX,oddX) /\ LSB(regY,oddY) /\<br />
MUX(oddX,regX,regXshift,regXcor) /\ MUX(oddY,regY,regYshift,regYcor) /\<br />
NOT(oddX,evenX) /\ NOT(oddY,evenY) /\<br />
AND(evenX,evenY,evenXY)/\<br />
COUNTER(evenXY,regK)/\<br />
AND(oddX, oddY, oddXY) /\<br />
LESS(regXcor,regYcor,oddXYx) /\ LESS(regYcor,regXcor,oddXYy) /\<br />
AND(oddXY,oddXYx,subX) /\ AND(oddXY,oddXYy,subY) /\<br />
SUB(regXcor,regYcor,subXY) /\ SUB(regYcor,regXcor,subYX) /\<br />
MUX(subX,regXcor,subXY,inX) /\ MUX(subY,regYcor,subYX,inY)‘;<br />
A.2 fractionScript<br />
(*==========================================================================*)<br />
(* Theory of fractions. (Jens Brandt) *)<br />
(* *)<br />
(* The fractions are pairs of integers. Denominator of fractions is always *)<br />
(* positive. *)<br />
(* *)<br />
(* February 2004 *)<br />
(* *)<br />
(*==========================================================================*)<br />
open HolKernel boolLib Parse bossLib;<br />
(* interactive mode<br />
app load ["integerTheory","intLib","ringLib",<br />
"integerRingTheory","integerRingLib"];<br />
*)<br />
open<br />
arithmeticTheory ringTheory ringLib<br />
integerTheory intLib integerRingTheory integerRingLib;<br />
val _ = new_theory "fraction";