08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

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.

66 KAPITEL 4. DIE STANDARDSEMANTIKEN<br />

Die cbn-Transformation unterscheidet sich von der cbv-Transformation im wesentlichen nur durch<br />

die fehlende Erzwingung der Striktheit der Operationen. Da die Nicht-Striktheit der Verzweigungsoperationen<br />

an der 2. und 3. Argumentstelle somit kein Problem mehr darstellt, ist eine getrennte<br />

Definition der Hilfsoperationen hier auch nicht mehr nötig.<br />

Definition 4.8 cbn-Transformation<br />

Die cbn-Transformation zu dem Programm P über Σ,<br />

ist definiert durch<br />

⎧<br />

f ΦP,cbn()<br />

⎪⎨<br />

(t) :=<br />

⎪⎩<br />

ΦP,cbn : [IntΣ,cbn→IntΣ,cbn],<br />

[[r]] alg<br />

, falls eine Reduktionsregel f(p)→r ∈ ˆP ,β<br />

und eine Variablenbelegung β : Var(p)→T ∞ C,⊥<br />

mit [[p1]] alg<br />

⊥cbn,β = t1, . . .,[[pn]] alg<br />

⊥cbn,β = tn existiert<br />

⊥ , andernfalls<br />

für alle f (n) ∈ F,t ∈ (T ∞ C,⊥ )n und∈IntΣ,cbn. ✷<br />

Es ist zu beachten, daß bei der Definition der cbn-Transformation der Einsatz algebraischer Termsemantiken<br />

wirklich nötig ist. Aufgrund der partiellen und der unendlichen Konstruktorterme ist<br />

eine äquivalente Definition mit Substitutionen (wie bei der cbv-Transformation in Bemerkung 4.2,<br />

S. 58, erwähnt) nicht mehr möglich.<br />

Definition 4.9 cbn-Fixpunktdatentyp und cbn-Fixpunktsemantik<br />

Der cbn-Fixpunktdatentyp Dfix des Programms P ist definiert als der kleinste Fixpunkt der<br />

cbn-Transformation ΦP,cbn:<br />

P,cbn<br />

D fix<br />

P,cbn := Fix(ΦP,cbn) = <br />

i∈IN<br />

(ΦP,cbn) i (⊥cbn).<br />

Die cbn-Fixpunktsemantik [[t]] fix<br />

P,cbn des Grundterms t ∈ TΣ bezüglich P ist definiert als die<br />

algebraische Grundtermsemantik von t bezüglich des cbn-Fixpunktdatentyps:<br />

[[t]] fix<br />

P,cbn := [[t]] alg<br />

Dfix .<br />

P,cbn<br />

Zum Vergleich mit der cbv-Fixpunktsemantik (Bsp. 4.5, S. 59) betrachten wir die cbn-Fixpunktsemantik<br />

des für die Normalformsemantik so problematischen Programms aus Beispiel 3.6, S. 45.<br />

Als algebraische Termsemantik ist die cbn-Fixpunktsemantik natürlich invariant.<br />

Beispiel 4.6 Bestimmung eines cbn-Fixpunktdatentyps<br />

liste1 → []:liste1<br />

liste2 → [[]]:liste2<br />

head(x:xs) → x<br />

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!