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 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 />

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!