Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4.3. DIE CBN-SEMANTIK 65<br />
Aus der Gleichheit der Datentypen folgt auch die Gleichheit der Grundtermsemantiken.<br />
Korollar 4.6 Gleichheit der li-Reduktionssemantik und der cbv-Fixpunktsemantik<br />
Beweis:<br />
[[·]] li P = [[·]]alg<br />
Dli P<br />
[[·]] li P = [[·]] fix<br />
P,cbv.<br />
= [[·]] alg<br />
Dfix = [[·]]<br />
P,cbv<br />
fix<br />
P,cbv . ✷<br />
4.3 Die cbn-Semantik<br />
Der call-by-name Auswertungsmechanismus übergibt die Argumente einer Funktion an diese in einer<br />
unausgewerteten Form und wertet diese erst aus, wenn sie im Funktionskörper wirklich für das<br />
Funktionsergebnis benötigt werden. Während der cbv-Auswertungsmechanismus die Striktheit der<br />
Funktionen erzwingt, können in mit dem cbn-Auswertungsmechanismus arbeitenden funktionalen<br />
Programmiersprachen Funktionen auch nicht-strikt sein. Da insbesondere die die Datenelemente<br />
aufbauenden Konstruktoren nicht-strikt sind, ist die Spezifikation sogenannter ” unendlicher“<br />
Datenstrukturen möglich. Diese ” unendlichen“ Datenstrukturen können zwar niemals selbst das<br />
Ergebnis einer (terminierenden) Berechnung sein, aber mit ihnen lassen sich viele Programmierprobleme<br />
sehr elegant lösen (siehe Kapitel 4 in [Fie&Har88]).<br />
4.3.1 Die Fixpunktsemantik<br />
Die Definition der cbn-Fixpunktsemantik erfolgt analog zur cbv-Fixpunktsemantik. Unterschiede<br />
ergeben sich nur aus der möglichen Nicht-Striktheit der Operationen. Funktions- und Hilfsoperationen<br />
sind nur noch strikt, wenn sie durch das Programm bzw. das assoziierte Termersetzungssystem<br />
derart spezifiziert sind, und Konstruktoroperationen sind generell nicht-strikt.<br />
Da nun für die Applikation von Konstruktoroperationen auf ⊥ neue Datenelemente benötigt werden,<br />
verwenden wir anstelle von T ⊥ C die Menge der unendlichen, partiellen Konstruktorterme T∞ C,⊥<br />
als Rechenbereich. Die echt partiellen Konstruktorterme stellen Approximationen von totalen<br />
Konstruktortermen dar, und die kanonische Halbordnung 〈T∞ C,⊥ , ✂〉 repräsentiert diese Approximation.<br />
Die Halbordnung 〈T∞ C,⊥ , ✂〉 ist ω-vollständig, wie es für die Fixpunktsemantik benötigt<br />
wird.<br />
Definition 4.7 cbn-Interpretation<br />
Sei 〈T∞ C,⊥ , ✂〉 die kanonische Halbordnung der unendlichen, partiellen Konstruktorterme. Sei<br />
α : <br />
i∈IN<br />
Σn→[(T ∞ C,⊥) n →T ∞ C,⊥]<br />
eine Zuordnung von ω-stetigen Operationen an die Operationssymbole mit<br />
für alle G (n) ∈ C und t1, . . .,t n ∈ T∞ C,⊥ .<br />
Eine ω-vollständige Σ-Algebra=〈T ∞ C,⊥<br />
α(G)(t 1, . . .,t n) = G(t 1, . . .,t n)<br />
, ✂, α〉 heißt cbn-Interpretation. Die Menge aller cbn-<br />
Interpretationen zu einer festen Programmsignatur Σ wird mit IntΣ,cbn bezeichnet. Wir schreiben<br />
⊥cbn := ⊥IntΣ,cbn für das kleinste Element der kanonischen Halbordnung 〈IntΣ,cbn, ⊑〉. ✷