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.
4.3. DIE CBN-SEMANTIK 67<br />
Seii := (ΦP,cbn) i (⊥cbn) für alle i ∈ IN.<br />
i = 0 i = 1 i = 2 . . . i = ∞ (Dfix P,cbv =i)<br />
liste1i () ⊥ [] : ⊥ [] : [] : ⊥ . . . [[], [], [], . . .]<br />
liste2i () ⊥ [[]] : ⊥ [[]] : [[]] : ⊥ . . . [[[]], [[]], [[]], . . .]<br />
headi t ↦→ ⊥<br />
⎛<br />
⎜<br />
⎝<br />
⊥ ↦→ ⊥<br />
[] ↦→ ⊥<br />
t 1:t 2 ↦→ t 1<br />
⎞<br />
⎟<br />
⎠ wie i = 1 . . . wie i = 1<br />
mit t, t 1, t 2 ∈ T ∞ C,⊥ .<br />
Somit ist<br />
[[liste1]] fix<br />
P,cbn = [[], [], [], . . .] und [[liste2]] fix<br />
P,cbn = [[[]], [[]], [[]], . . .],<br />
und<br />
[[head(liste1)]] fix<br />
P,cbn = [] und [[head(liste2)]] fix<br />
P,cbn = [[]]<br />
stellt keinen Widerspruch zur Invarianz dar. ✷<br />
Ein anderes Beispiel verdeutlicht die Ausdrucksmächtigkeit der Programme mit Pattern zusammen<br />
mit der cbn-Semantik. Wir werden in Kapitel 7 noch einmal auf dieses Beispiel eingehen.<br />
Beispiel 4.7 Paralleles And<br />
and(False,x) → False<br />
and(x,False) → False<br />
and(True,True) → True<br />
Die Operation and Dfix<br />
P,cbn wird durch die folgende Wertetabelle beschrieben.<br />
and Dfix<br />
P,cbn ⊥ False True<br />
⊥ ⊥ False ⊥<br />
False False False False<br />
True ⊥ False True<br />
Bemerkung 4.3: Überabzählbarkeit des Rechenbereichs<br />
Die Menge aller unendlichen, partiellen Konstruktorterme ist leider überabzählbar, wir wie in 2.4.2<br />
festgestellt haben. Da jedoch nur eine abzählbare Menge von syntaktischen Termen TΣ und eine<br />
abzählbare Menge von Programmen existiert, benötigen wir für deren Semantik eigentlich auch<br />
nur einen abzählbaren Rechenbereich (wir können ” abzählbar“ sogar durch ” aufzählbar“ ersetzen).<br />
Für viele Elemente t des Rechenbereichs T ∞ C,⊥ existiert kein t ∈ TΣ und kein Programm P mit<br />
[[t]] fix<br />
P,cbn = t. Es ist jedoch keine sinnvolle Charakterisierung der wirklich benötigten Teilmenge von<br />
T∞ C,⊥ bekannt. Die schlichte Definition der benötigten Teilmenge als die Menge aller durch einen<br />
beliebigen Term bei einem beliebigen Programm denotierten unendlichen, partiellen Konstruktorterme<br />
stellt keine nützliche Lösung dar. Außerdem sind alle endlichen, partiellen Konstruktorterme<br />
TC,⊥ denotierbar, und die echt unendlichen werden zumindest für die Fixpunktsemantik (und<br />
auch für die Reduktionssemantik wie wir sehen werden) aufgrund der geforderten ω-Vollständigkeit<br />
benötigt. ✷<br />
✷