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.

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. ✷

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!