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 145<br />
Im wesentlichen haben wir in diesem Abschnitt gezeigt, daß Fixpunkte der cbn-Transformation<br />
Modelle sind, und daß die cbn-Semantik als einzige deklarativ definierbar ist, nämlich durch<br />
DP,cbn = Min 〈Alg ∞ Σ,⊥ ,⊑〉(IntModP,cbn). Außerdem ist für Programme mit Pattern der cbv-Datentyp<br />
auch durch DP,cbv = Min 〈AlgΣ ,⊑〉(IntMod ∗ P,cbv) charakterisierbar. Die Definitionen der Gültigkeit ∗<br />
und des ς-Interpretationsmodells ∗ erscheinen jedoch trotz der Ausgezeichnetheit von ⊥ als ziemlich<br />
willkürlich und ausgefallen. Daher kann DP,cbv = Min 〈AlgΣ ,⊑〉(IntMod ∗ P,cbv) kaum als deklarative<br />
Definition der cbv-Semantik verstanden werden. Diese Charakerisierung des cbv-Datentyps zusammen<br />
mit der Tatsache, daß der Rechenbereich der cbv-Semantik eine einfache flache Halbordnung<br />
ist (〈T⊥ C , ✂〉), und die Quantifizierung der Variablen der Reduktionsregeln beim Gültigkeits∗-Test genau über TC = T⊥ C \ {⊥} erfolgt, führt jedoch zu der Idee, für die cbv-Semantik von Programmen<br />
mit Pattern anstelle der geordneten Algebren mit totalen Operationen sogenannte partielle<br />
Algebren zu verwenden.<br />
6.3 Der partielle cbv-Datentyp von Programmen mit Pattern<br />
Wir haben von Beginn an das spezielle Symbol ⊥ für Undefiniertheit (oder fehlende Information)<br />
verwendet, obwohl der Einsatz partieller Abbildungen eigentlich naheliegender und natürlicher ist.<br />
Allerdings ist das Ergebnis einer partiellen Abbildung grundsätzlich undefiniert, wenn nur eines der<br />
Argumente undefiniert ist; d. h. partielle Abbildungen sind gemäß unserer für Abbildungen über<br />
Halbordnungen definierten Bezeichnungsweise prinzipiell strikt. Daher sind Semantiken, die den<br />
Operationssymbolen partielle Operationen zuordnen, nur für die cbv-Semantik geeignet. Außerdem<br />
sind die Programme mit Hilfsfunktionen ausgeschlossen, weil die Operationen der Verzweigungssymbole<br />
condG an den letzten zwei Argumentstellen prinzipiell nicht-strikt sind.<br />
Im diesem gesamten Abschnitt betrachten wir also nur Programme mit Pattern.<br />
Auf partiellen Algebren beruhende Semantiken algebraischer Spezifikationen werden in<br />
[Broy&Wir82] und in 3.3.2 in [Wir90] betrachtet. Eine umfassende Darstellung der mathematischen<br />
Theorie partieller Algebren ist [Bur86].<br />
Diese Theorie erweist sich leider aufgrund der nötigen Unterscheidung von definierten und undefinierten<br />
Ausdrücken als komplizierter als die allgemein bekannte und bisher verwendete der totalen<br />
Algebren. Die meisten bekannten Begriffe lassen sich zwar leicht auf partielle Algebren übertragen,<br />
erscheinen dort jedoch häufig in mehreren verschiedenen Varianten. So werden beispielsweise<br />
in der Literatur drei verschiedene Arten von Homomorphismen und dem entsprechend auch drei<br />
verschiedene Arten von initialen partiellen Algebren aufgeführt.<br />
Wir führen jedoch nur wenige, für den partiellen cbv-Datentyp wirklich benötigte Begriffe ein.<br />
Definition 6.7 Partielle Operation (vgl. mit Def. der Operation in 2.3)<br />
Ist A eine Menge und n ∈ IN, so heißt eine partielle Abbildung f : A nAn-stellige partielle<br />
Operation auf A. Wir verwenden die Bezeichnungen:<br />
Ops part<br />
n (A) := {f | f : A nA}<br />
Ops part (A) := <br />
n∈IN<br />
Ops part<br />
n (A)<br />
✷