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.
6.3. DER PARTIELLE CBV-DATENTYP VON PROGRAMMEN MIT PATTERN 147<br />
Definition 6.11 Gültigkeit, Partielles Modell<br />
(vgl. mit Def. 6.1, S. 133, und auch mit Def. 6.6, S. 142)<br />
Eine Termersetzungsregel l→r mit l, r ∈ TΣ(X) ist in einer partiellen Algebra=〈A, α〉 ∈ Alg part<br />
Σ<br />
genau dann gültig, wenn für alle Variablenbelegungen β : X→A<br />
entweder [[l]] alg<br />
und [[r]] ,β alg<br />
undefiniert sind ,β<br />
oder [[l]] alg<br />
= [[r]] ,β alg<br />
,β gilt.<br />
Eine Algebra∈Alg part<br />
Σ heißt genau dann partielles Modell des Programms P, wenn alle<br />
Reduktionsregeln des Programms P ingültig sind.<br />
Die Klasse aller partiellen Modelle des Programms P wird mit Mod part<br />
P bezeichnet. ✷<br />
Die für den Begriff der Gültigkeit einer Termersetzungsregel definierte Art von Gleichheit heißt<br />
starke Gleichheit (strong equality). In der Literatur findet man noch eine zweite, andere Inter-<br />
pretation der Gleichheit, die existenzielle Gleichheit (existential equality). Hierbei heißt eine<br />
Termersetzungsregel l→r genau dann gültig in einer partiellen Algebra=〈A, α〉 ∈ Alg part<br />
Σ , wenn<br />
für alle Variablenbelegungen β : X→A [[l]] alg<br />
,β und<br />
[[r]] alg<br />
,β definiert<br />
sind und [[l]] alg<br />
,β =<br />
[[r]] alg<br />
,β ist.<br />
Unsere Wahl der starken Gleichheit läßt sich sehr einfach anhand des schlichten Programms<br />
a → a<br />
begründen. Bei Verwendung der existenziellen Gleichheit müßte ain jedem Modelldes Programms<br />
definiert sein. Wir wollen jedoch, daß in dem im weiteren definierten partiellen cbv-<br />
Datentyp die Operation von a undefiniert ist, da das Programm keine Information über den<br />
semantischen Wert von a liefert. Bei existenzieller Gleichheit würde schon das Erscheinen eines<br />
Funktionssymbols auf einer rechten Programmregelseite zur Definiertheit seiner Operation führen.<br />
Ein kleinstes partielles cbv-Interpretationsmodell — wie wir es im weiteren definieren — würde bei<br />
existenzieller Gleichheit im allgemeinen nicht existieren.<br />
Spätestens jetzt ist auch eine Bemerkung zur Bedeutung der Gleichheit in unserer Metasprache<br />
angebracht. Wir vergleichen in diesem Abschnitt häufig die Ergebnisse partieller Abbildungen. a = b<br />
soll implizieren, daß a und b definierte Ausdrücke sind. Wir verwenden also in der Metasprache die<br />
existenzielle Gleichheit. Die definierende Gleichheit a := b wird nur verwendet, wenn b definiert<br />
ist, und impliziert selbstverständlich, daß auch a definiert ist. Wir geben jedoch die Undefiniertheit<br />
von Ausdrücken auch oft explizit an.<br />
Definition 6.12 Partielle cbv-Interpretation<br />
(vgl. mit Def. 4.3, S. 55, der cbv-Interpretation)<br />
Sei∈Alg part<br />
Σ (TC) eine partielle Algebra mit dem Träger TC. Sei<br />
G(t) := G(t)<br />
für alle G (n) ∈ C, t ∈ (TC) n . Dann heißtpartielle cbv-Interpretation Die Menge aller cbv-<br />
Interpretationen bezeichnen wir mit Int part<br />
Σ,cbv .<br />
〈Int part<br />
Σ,cbv , ⊑〉 ist die kanonische Halbordnung aller partiellen cbv-Interpretationen entsprechend Definition<br />
6.9. ✷