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.

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.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!