25.11.2014 Aufrufe

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

259<br />

end;<br />

,<br />

])<br />

ARW_TAC[] THEN<br />

UNDISCH_TAC ‘‘abs_frac(nmr a * nmr (abs_frac (b,b)),<br />

dnm a * dnm (abs_frac (b,b))) = abs_frac(nmr f<br />

* nmr (abs_frac (c,c)),dnm f * dnm (abs_frac (c,c)))‘‘ THEN<br />

REWRITE_TAC[NMR_CONV ‘‘nmr (abs_frac (b,b))‘‘,<br />

NMR_CONV ‘‘nmr (abs_frac (c,c))‘‘, DNM_CONV ‘‘dnm<br />

(abs_frac (b,b))‘‘, DNM_CONV ‘‘dnm (abs_frac (c,c))‘‘] THEN<br />

ASSUME_TAC (UNDISCH_ALL (SPEC ‘‘b:int‘‘<br />

(SPEC ‘‘a:frac‘‘ lemma1))) THEN<br />

ASSUME_TAC (UNDISCH_ALL<br />

(SPEC ‘‘c:int‘‘ (SPEC ‘‘f:frac‘‘ lemma1))) THEN<br />

STRIP_TAC THEN<br />

ASSUME_TAC (UNDISCH_ALL lemma2) THEN<br />

UNDISCH_TAC ‘‘rep_frac (abs_frac (nmr a * b,dnm a * b))<br />

= rep_frac (abs_frac (nmr f * c,dnm f * c))‘‘ THEN<br />

SUBST_TAC[lemma3,lemma4] THEN<br />

ARW_TAC[] THEN<br />

REWRITE_TAC[subst1, subst2] THEN<br />

REWRITE_TAC[EQT_ELIM(RING_CONV<br />

‘‘nmr a * dnm f * b * c = (nmr a * b) * dnm f * c‘‘)] THEN<br />

ARW_TAC[] THEN<br />

REWRITE_TAC[EQT_ELIM (RING_CONV<br />

‘‘nmr f * b * dnm a * c = (dnm a * b) * nmr f * c‘‘)] THEN<br />

ARW_TAC[]<br />

(*--------------------------------------------------------------------------*<br />

* type definition<br />

*--------------------------------------------------------------------------*)<br />

val rat_def = define_quotient_type "rat"<br />

"abs_rat"<br />

"rep_rat"<br />

RAT_EQUIV_REF RAT_EQUIV_SYM RAT_EQUIV_TRANS;<br />

(*--------------------------------------------------------------------------*<br />

* operations<br />

*--------------------------------------------------------------------------*)<br />

(* numerator, denominator, sign of a fraction *)<br />

val rat_nmr_def = Define ‘rat_nmr r = nmr (rep_rat r)‘;<br />

val rat_dnm_def = Define ‘rat_dnm r = dnm (rep_rat r)‘;<br />

val rat_sgn_def = Define ‘rat_sgn r = sgn (rep_rat r)‘;<br />

(* additive, multiplicative inverse of a fraction *)<br />

val rat_0_def = Define ‘rat_0 = abs_rat( frac_0 )‘;<br />

val rat_1_def = Define ‘rat_1 = abs_rat( frac_1 )‘;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!