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.
60 KAPITEL 4. DIE STANDARDSEMANTIKEN<br />
Seii := (ΦP,cbv) i (⊥cbv) für alle i ∈ IN.<br />
i = 0 i = 1 i = 2 . . . i = ∞ (Dfix P,cbv =i)<br />
alg<br />
liste1i () ⊥ [[[] : liste1]] ⊥cbv,(liste1↦→⊥) = ⊥ wie i = 1 . . . wie i = 1<br />
alg<br />
liste2i () ⊥ [[[[]] : liste2]] = ⊥ wie i = 1 . . . wie i = 1<br />
headi t ↦→ ⊥<br />
⎛<br />
⎜<br />
⎝<br />
⊥cbv,(liste2↦→⊥) ⎞<br />
⊥ ↦→ ⊥<br />
[] ↦→ ⊥<br />
t 1:t 2 ↦→ t 1<br />
⎟<br />
⎠ wie i = 1 . . . wie i = 1<br />
mit t ∈ T ⊥ C , t 1, t 2 ∈ TC. ✷<br />
Wir geben hier auch noch kurz die Hilfsoperationen an, da diese wie gesagt unabhängig von einem<br />
konkreten Programm sind und zum Basisdatentyp gehören.<br />
Korollar 4.3 Hilfsoperationen des cbv-Fixpunktdatentyps<br />
cond Dfix<br />
P,cbv<br />
G<br />
(t 1, t 2, t 3) =<br />
sel Dfix<br />
P,cbv<br />
G,i (t) =<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
⊥ , falls t 1 = ⊥<br />
t 2 , falls eine Variablenbelegung β : {x1, . . .,xn}→TC<br />
mit [[G(x1, . . .,xn)]] alg<br />
⊥cbv,β = t 1 (= ⊥) existiert<br />
t 3 , andernfalls<br />
β(xi) , falls eine Variablenbelegung β : {x1, . . .,xn}→TC<br />
mit [[G(x1, . . .,xn)]] alg<br />
⊥cbv,β = t (= ⊥) existiert<br />
⊥ , andernfalls<br />
für alle condG, selG,i ∈ H und t, t 1, t 2, t 3 ∈ T ⊥ C .<br />
Beweis:<br />
Ergibt sich direkt aus der cbv-Transformation. ✷<br />
Es stellt sich nun die Frage, ob diese cbv-Fixpunktsemantik gleich der li-Reduktionssemantik ist,<br />
oder ob wir wohlmöglich zwei verschiedene statt einer cbv-Semantik definiert haben.<br />
4.2.3 Übereinstimmung der Reduktions- und der Fixpunktsemantik<br />
Obwohl die Definitionen der li-Reduktions- und der cbv-Fixpunktsemantik viele Ähnlichkeiten aufweisen,<br />
ist ein direkter Beweis der Gleichheit der beiden Grundtermsemantiken [[·]] li P und [[·]]fix P,cbv<br />
ziemlich schwierig. Eine strukturelle Induktion über den Termaufbau ist nicht möglich. Eine Induktion<br />
über die Anzahl der li-Reduktionsschritte bis zur Normalform läßt uns noch das nicht-triviale<br />
Problem übrig, zu zeigen, daß für alle Terme t ∈ TΣ, die keine li-(Konstruktor)normalform besitzen<br />
[[t]] fix<br />
P,cbv = ⊥ gilt. Auch zu zeigen, daß Dfix P,cbv ein Datentyp der Grundtermsemantik [[·]]li P ist, erweist<br />
sich als ähnlich schwierig.<br />
Wir verwenden daher hier eine ganz andere Beweismethode. Wir definieren zu der li-Reduktions-<br />
semantik [[·]] li P einen Datentyp Dli P<br />
, und zeigen dann, daß dieser gleich dem cbv-Fixpunktdatentyp<br />
Dfix P,cbv ist.<br />
Wir haben allerdings schon festgestellt, daß es im allgemeinen mehrere Datentypen einer Grundtermsemantik<br />
gibt. Das Problem liegt darin, daß zu einem (semantischen) Rechenterm, d. h. einem<br />
Element des Trägers, eventuell kein syntaktischer Term existiert, der den Rechenterm denotiert.<br />
Diese Möglichkeit existiert auch bei der li-Reduktionssemantik, nämlich, wenn es keinen undefi-<br />
”<br />
nierten“ Term gibt, d.h. kein t⊥ ∈ TΣ mit [[t⊥]] li P = ⊥. In diesem Fall müssen wir, um genau einen<br />
Datentyp zu erhalten, die Definition des Datentyps der li-Reduktionssemantik ergänzen“.<br />
”