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.
74 KAPITEL 5. DIE ς-SEMANTIKEN<br />
Änderungen läßt sich die cbn-Transformation auch auf die cbv-Interpretationen und umgekehrt die<br />
cbv-Transformation auf die cbn-Interpretationen anwenden.<br />
Die auf erstere Art entstehende Semantik ist gar nicht so ungewöhnlich. In der Literatur über Fixpunktsemantiken<br />
von Funktionsschemata ([Vui74], [Manna74], [Nivat75], [Dow&Se76], [Loe&Sie87],<br />
[Ind93]) werden ” cbn-Semantiken“ mit nicht-strikten Funktionen über flach geordneten Basisdatentypen<br />
(discrete domains) betrachtet (nur [Ber&Lévy77] und [Cou90] betrachten auch nicht-flach<br />
geordnete Basisdatentypen). Somit wird die ” unnatürliche“, ” erzwungene“ Striktheit der Funktionen<br />
in der Transformation vermieden; aufgrund der flachen Halbordnung des Basisdatentyps bleibt<br />
die gesamte Theorie der Fixpunktsemantik jedoch so einfach wie unsere cbv-Fixpunktsemantik.<br />
Die Semantik, die auf die zweite Art entsteht, ist sogar in der funktionalen Programmiersprache<br />
Hope 1 realisiert worden (Kapitel 4 in [Fie&Har88]). Diese kombiniert nicht-strikte Konstruktoren<br />
mit darüber definierten strikten Funktionen. Auf diese Weise besitzt Hope die mächtigen Ausdrucksmöglichkeiten<br />
unendlicher Datenstrukturen, kann aber den in Implementationen effizienteren<br />
cbv-Auswertungsmechanismus teilweise verwenden.<br />
Durch die möglichen Kombinationen von Interpretationen und Transformationen erhalten wir insgesamt<br />
vier verschiedene Semantiken. Dies hat den unerfreulichen Aspekt, daß wir auch vier verschiedene<br />
Reduktionssemantiken (noch zwei) definieren und viermal die Übereinstimmung von Fixpunktund<br />
Reduktionssemantik beweisen müssen. Zwischen den vier Semantiken bestehen zwar enge Beziehungen<br />
und daher Ähnlichkeiten, aber allgemeine Aussagen über genau diese vier lassen sich<br />
schwer beweisen.<br />
Da außerdem die Hilfsoperationen zum Basisdatentyp gehören, sollte sich ihre Striktheit bzw. Nicht-<br />
Striktheit nach den Konstruktor- und nicht nach den Funktionsoperationen richten. Allerdings sind<br />
ihre Striktheiten aufgrund ihrer speziellen Reduktionsregeln sowieso in allen vier Semantiken gleich.<br />
Die Lösung des Problems besteht in der schlichten Idee einer weiteren Verallgemeinerung. Wir<br />
führen einen neuen Parameter ς ein, der für jede Argumentstelle jedes Operationssymbols angibt,<br />
ob die Operation an dieser Argumentstelle strikt sein soll. Auf diese Weise erhalten wir zwar eine<br />
beliebig große Anzahl von Semantiken (in Abhängigkeit von der Programmsignatur), aber wir<br />
können diese auf ziemlich einfache Weise einheitlich behandeln. Wir werden sehen, daß gerade<br />
diese Verallgemeinerung zu einem tieferen Verständnis — auch der schon untersuchten cbv- und<br />
cbn-Semantiken — führt.<br />
Die Striktheit bzw. Nicht-Striktheit der Konstruktoroperationen wird direkt durch den neuen Parameter<br />
ς bestimmt. Dagegen kann die Striktheit von Funktions- und Hilfsoperationen schon allein<br />
durch das Programm festgelegt sein (siehe dazu Beispiel 3.2, S. 39; die Operation von and ist auch<br />
in der cbn-Semantik strikt). Bei prinzipiell möglicher Nicht-Striktheit von Funktions- oder Hilfsoperationen<br />
soll der Parameter ς die Striktheit jedoch erzwingen können. Dies führt uns zu der<br />
Bezeichung ” erzwungene Striktheit“.<br />
Definition 5.1 Erzwungene Striktheit<br />
Eine Abbildung<br />
ς : <br />
n∈IN<br />
Σn→IB n<br />
heißt erzwungene Striktheit zur Signatur Σ. Sie ordnet jedem Signatursymbol g ∈ Σ seine<br />
erzwungene Striktheit ς(g) zu.<br />
Sei ς eine erzwungene Striktheit, g (n) ∈ Σn und t1, . . .,t n ∈ T∞ Σ,⊥ . g heißt genau dann erzwungen<br />
1 Es existieren neben der Standardimplementierung allerdings auch Implementierungen von Hope, die mit dem<br />
reinen cbn-Auswertungsmechanismus arbeiten.