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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

236<br />

The steps of the proof are as follows:<br />

– First, all quantifiers are stripped off the goal by repeatedly applying STRIP_TAC.<br />

Thus, all variables become free.<br />

– Then, the definition of the addition is used to rewrite the goal. The resulting<br />

proof obligation contains subterms of the form nmr(abs_frac(x,y)) and<br />

dnm(abs_frac(x,y)).<br />

– Assumptions are added, stating that respectively dnm a * dnm b and dnm b * dnm c<br />

are positive.<br />

– With this, the goal can be simplified. NMR and DNM are used.<br />

– The goal of the form x=y is split up into the two subgoals x==>y and y==>x.<br />

– Both of them are solved by INT_RING_TAC, which transforms all terms of the<br />

goal to a normal form (using ring properties), and then compares them.<br />

In a similar way, some more properties of fractions can be shown, e.g. the following<br />

lemmas:<br />

(* FRAC_MULT_ASSOC: |- !a b c. mul a (mul b c) = mul (mul a b) c *)<br />

(* FRAC_ADD_COMM: |- !a b c. add a b = add b a *)<br />

(* FRAC_MULT_COMM: |- !a b c. mul a b = mul b a *)<br />

(* FRAC_ADD_RID: |- !a. add a frac_0 = a *)<br />

(* FRAC_MUL_RID: |- !a. mul a frac_1 = a *)<br />

(* FRAC_SUB_PLUS: |- !a b c. sub a (add b c) = sub (sub a b) c *)<br />

(* FRAC_SUB_MINUS: |- !a b c. sub a (sub b c) = add (sub a b) c *)<br />

(* SUB_AINV_THM: |- !a b. sub a b = ainv (sub b a) *)<br />

Rational numbers Rational numbers are constructed as equivalence classes of<br />

fractions. Two fractions f1 = f1n<br />

f1 d<br />

and f2 = f2n<br />

f2 d<br />

are equivalent, if the fractions<br />

f1‘ and f2 ′ obtained by reduction of f1 andf2 are equal. This can be defined<br />

as follows:<br />

f1 n<br />

∼ f2 n<br />

⇔ f1 n · f2 d = f2 n · f1 d<br />

f1 d f2 d<br />

In HOL, this definition can be written as:<br />

val rat_equiv_def =<br />

Define ‘rat_equiv f1 f2 = (nmr f1 * dnm f2 = nmr f2 * dnm f1)‘;<br />

The following theorem asserts that the equivalence relation has the intended<br />

meaning:<br />

(* RAT_EQUIV_ALT |- !a. rat_equiv a = \x. (?b c. 0

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!