08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.2. DIE CBV-SEMANTIK 59<br />

Für den durch ein Programm spezifizierten Datentyp D ∈ IntΣ,cbv muß natürlich D = ΦP,cbv(D)<br />

gelten, d. h. D muß ein Fixpunkt der Transformation sein. Die Transformationen der meisten Programme<br />

besitzen allerdings viele Fixpunkte:<br />

undef → undef<br />

Da dieses Programm über den semantischen Wert von undef überhaupt nichts aussagt, ist es sinnvoll,<br />

undef den semantischen Wert für fehlende Information oder Undefiniertheit, ⊥, zuzuordnen.<br />

Entsprechend wählen wir von allen Fixpunkten der Transformation den kleinsten als Datentyp des<br />

Programms. Dieser kleinste Fixpunkt ist praktisch der kleinste gemeinsame Nenner aller Fixpunkte<br />

bezüglich des Informationsgehalts und besitzt somit nur die Eigenschaften, die durch das Programm<br />

eindeutig spezifiziert werden.<br />

Definition 4.5 cbv-Fixpunktdatentyp und cbv-Fixpunktsemantik<br />

Der cbv-Fixpunktdatentyp Dfix des Programms P ist definiert als der kleinste Fixpunkt der<br />

cbv-Transformation ΦP,cbv:<br />

P,cbv<br />

D fix<br />

P,cbv := Fix(ΦP,cbv) = <br />

i∈IN<br />

(ΦP,cbv) i (⊥cbv).<br />

Die cbv-Fixpunktsemantik [[t]] fix<br />

P,cbv des Grundterms t ∈ TΣ bezüglich P ist definiert als die<br />

algebraische Grundtermsemantik von t bezüglich des cbv-Fixpunktdatentyps:<br />

[[t]] fix<br />

P,cbv := [[t]] alg<br />

Dfix .<br />

P,cbv<br />

Hier wird die ω-Vollständigkeit der cbv-Interpretation benötigt. Aus ihr folgt die ω-Stetigkeit der<br />

cbv-Transformation (siehe Kapitel 5) und mit dem Fixpunktsatz von Tarski wissen wir, daß jede<br />

cbv-Transformation einen kleinsten Fixpunkt besitzt. Somit ordnet unsere Fixpunktsemantik<br />

wirklich jedem syntaktisch korrekten Programm genau eine Bedeutung, einen Datentyp zu.<br />

Der Fixpunktsatz gibt uns sogar gewissermaßen eine Methode zur Bestimmung des cbv-Fixpunktdatentyps.<br />

Beginnend mit der kleinsten Interpretation ⊥cbv können wir durch fortwährende Anwendung<br />

der Transformation unseren Datentyp erreichen. Freilich stellt dies kein effektives Verfahren<br />

zur Berechnung des Datentyps dar, da erstens die Iteration im allgemeinen bis ∞ geht, und wir<br />

zweitens Interpretationennicht direkt endlich darstellen können. Interpretationen lassen sich<br />

durch Programme darstellen, womit wir uns aber im Kreis drehen. Somit ist die Fixpunktsemantik<br />

wirklich keine operationelle Semantik, sondern eine denotationelle. Ein Programm denotiert einen<br />

Datentyp.<br />

Diese Methode der iterativen Anwendung der Transformation bildet übrigens die Grundlage der<br />

abstrakten Interpretation (Kapitel 20 in [Fie&Har88]). Damit lassen sich gewisse semantische<br />

Eigenschaften von Programmen — insbesondere für Optimierungszwecke — feststellen.<br />

Beispiel 4.5 Bestimmung eines cbv-Fixpunktdatentyps (siehe Bsp. 3.6, S. 45)<br />

liste1 → []:liste1<br />

liste2 → [[]]:liste2<br />

head(x:xs) → x<br />

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!