08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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, ⊑〉. ✷

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!