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.

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 />

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!