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.
56 KAPITEL 4. DIE STANDARDSEMANTIKEN<br />
für alle G (n) ∈ C, f (n) ∈ F, condG, selG,i ∈ H und t1, t2, . . . ∈ T⊥ C .<br />
Die ω-vollständige Σ-Algebra=〈T ⊥ C<br />
, ✂, α〉 heißt cbv-Interpretation. Die Menge aller cbv-<br />
Interpretationen zu einer festen Programmsignatur Σ wird mit IntΣ,cbv bezeichnet.<br />
Mit der kanonischen Halbordnungsrelation ⊑ der Σ-Algebren ist 〈IntΣ,cbv, ⊑〉 die kanonische Halbordnung<br />
der cbv-Interpretationen. In der kleinsten cbv-Interpretation ⊥cbv := ⊥IntΣ,cbv ∈ IntΣ,cbv<br />
sind die Ergebniswerte aller Funktions- und Hilfsoperationen konstant ⊥. ✷<br />
In der Definition der cbv-Interpretationen fällt auf, daß alle Operationen — abgesehen von den<br />
Verzweigungsoperationen — als strikt definiert werden. Genau an diesem Punkt geht der cbv-<br />
Auswertungsmechanismus ein, und dies ist der entscheidende Unterschied zur cbn-Interpretation,<br />
die wir in 4.3.1 definieren werden. Da die Argumente einer Funktion vor der Ausführung der Funktion<br />
vollständig ausgerechnet werden, kann der gesamte Funktionsausdruck nicht terminieren, wenn<br />
die Berechnung nur eines Arguments nicht terminiert. Alle Funktionen sind somit strikt; nur die<br />
Verzweigungsoperationen stellen analog zu und aus den gleichen Gründen wie bei der Reduktionssemantik<br />
eine Ausnahme dar.<br />
Die Festlegung der Striktheit der Funktions- und Hilfsoperationen schon in der cbv-Interpretation<br />
ist eigentlich nicht nötig, da sie sich im folgenden auch automatisch ergibt. Wir haben sie nur<br />
der Symmetrie zu den Konstruktoroperationen halber und, da sich dies schon aus dem cbv-<br />
Auswertungsmechanismus unabhängig von einem Programm ergibt, hier festgelegt.<br />
Wir definieren eine cbv-Interpretation als geordnete, ω-vollständige Σ-Algebra und verwenden dabei<br />
die flache Halbordnung mit ⊥ als kleinstem Element. Die Verwendung ω-vollständiger Halbordnungen<br />
und darauf ω-stetiger Abbildungen dient letztendlich allein dem Zweck, in Definition 4.5<br />
einem Programm genau eine ausgezeichnete cbv-Interpretation als Datentyp zuordnen zu können.<br />
Trotzdem kann der Halbordnung eine intuitive Bedeutung zugemessen werden. Die Halbordnung<br />
〈T ⊥ C<br />
, ✂〉 ist eine Ordnung bezüglich des Informationsgehalts. ⊥ als kleinstes Element steht für das<br />
völlige Fehlen von Information. Alle anderen Elemente t ∈ TC sind größer als ⊥, da sie Information<br />
repräsentieren. Sie stellen alle verschiedene Information dar und sind daher nicht miteinander vergleichbar.<br />
Aufgrund dieser Nicht-Vergleichbarkeit stellt die geforderte ω-Stetigkeit der Operationen<br />
auch keine Einschränkung der Operationen über dieser Menge TC dar. Die Menge der durch Programme<br />
beschreibaren Operationen ist also hierdurch diesbezüglich nicht beschränkt. Andererseits<br />
ist die geforderte Monotonie der Operationen über T ⊥ C<br />
auch einleuchtend: Besitzt ein Element b<br />
mehr Information als ein Element a, so erwarten wir von einer Operation ϕ, daß ϕ(b) mehr Information<br />
besitzt als ϕ(a). In nicht-flachen Halbordnungen, wie wir sie ab 4.3.1 betrachten werden,<br />
wird die Abstufung bezüglich des Informationsgehalts noch deutlicher.<br />
Aus der ω-Vollständigkeit der cbv-Interpretationen folgt die ω-Vollständigkeit der Halbordnung<br />
〈IntΣ,cbv, ⊑〉 der cbv-Interpretationen. Wir wollen dies hier nicht beweisen, wie wir überhaupt in<br />
diesem Kapitel auf viele Beweise, insbesondere der Wohldefiniertheit der Fixpunktsemantiken, verzichten.<br />
Hier sollen hauptsächlich die Prinzipien und Konzepte vorgestellt werden. Alle Beweise<br />
werden in Kapitel 5 in einem abstrakteren, allgemeineren Rahmen durchgeführt.<br />
Wir haben hier zum ersten Mal folgende Konvention verwendet: Elemente des Rechenbereichs (T ⊥ C )<br />
werden mit unterstrichenen Kleinbuchstaben t bezeichnet. Die dadurch auch erfolgte Trennung<br />
) ist jedoch mit Vorsicht<br />
von syntaktischen Termen (TΣ) und semantischen Rechentermen (T⊥ C<br />
zu genießen. Die beiden Mengen besitzen gemeinsame Elemente (TΣ ∩ T⊥ C = TC), und in einer<br />
Reduktionssemantik ist der Übergang zwischen beiden praktisch fließend. Es erweist sich außerdem<br />
meistens als unpraktisch, für das gleiche Element t = t sowohl einen syntaktischen (t) als auch<br />
einen semantischen (t) Bezeichner zu verwenden.<br />
Nun definieren wir durch die Reduktionsregeln eines Programms dessen Datentyp. Die Operatio-