Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
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 />
✷