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.

104 KAPITEL 5. DIE ς-SEMANTIKEN<br />

gilt. Die einfachere Definitionsform vermittels der Konstruktornormalform ist für jede ς-Reduktionssemantik<br />

möglich, deren kanonische Ordnung des Rechenbereichs flach, also gleich 〈T⊥ C , ✂〉<br />

ist.<br />

Aus dem neugewonnenen Blickwinkel der ς-Semantiken sehen wir somit, daß der Unterschied zwischen<br />

Reduktionssemantiken der cbv- und der cbn-Semantik nur scheinbar auf der Position im<br />

Term (inner- oder outermost) der reduzierten Redexe beruht. Stattdessen liegt der wesentliche Unterschied<br />

in den verschiedenen Arten von Redexen (cbv- oder cbn-Redexe), die reduziert werden.<br />

Die ς-Semantiken sind, auch wenn sie abgesehen von der cbv- und der cbn-Semantik und vielleicht<br />

noch den zwei anfangs erwähnten Mischformen nie in realen Programmiersprachen eingesetzt werden,<br />

in einem weiteren Punkt nützlich: Die cbv-Auswertung erweist sich in der Praxis als effizienter<br />

implementierbar als die cbn-Auswertung. Insbesondere aufgrund der Möglichkeiten der unendlichen<br />

Datenstrukturen besitzen jedoch viele moderne funktionale Programmiersprachen wie Miranda und<br />

Haskell cbn-Semantik. Das Effizienzproblem wird dann mit einer Striktheitsanalyse angegangen, die<br />

beispielsweise mit der schon erwähnten abstrakten Interpretation durchgeführt werden kann. Diese<br />

bestimmt — soweit möglich — welche Operationen an welchen Argumentstellen strikt sind. An diesen<br />

Stellen kann dann der effizientere cbv-Auswertungsmechanismus eingesetzt werden. Insgesamt<br />

entsteht so eine Mischung von cbv- und cbn-Auswertung.<br />

Die ς-Semantiken bieten hierfür eine theoretische Grundlage. Man führt die Striktheitsanalyse im<br />

Rahmen einer cbn-Semantik durch. Aus der Definition der ς-Fixpunktsemantik ist leicht ersichtlich,<br />

daß die erzwungene Striktheit einer Argumentstelle eines Operationssymbols von nicht-strikt zu<br />

strikt geändert werden kann, wenn die Operation an dieser Argumentstelle strikt ist, ohne dadurch<br />

die Semantik (den Datentyp) des Programms zu verändern. Aus der Striktheitsanalyse gewinnt man<br />

somit eine möglichst strikte“ erzwungene Striktheit ς mit D<br />

” fix<br />

P,ς = Dfix P,cbn . Berechnungen können<br />

nun mit einer ς-Reduktionssemantik erfolgen.<br />

Die Korrektheit eines derart optimierenden Interpreters oder Compilers ließe sich also durch den<br />

Beweis der Übereinstimmung mit einer ς-Reduktionssemantik nachweisen.<br />

5.3.3 Die Wohldefiniertheit<br />

Wir beweisen nun noch die Wohldefiniertheit der allgemeinen ς-Reduktionssemantik und der po-ς-<br />

Reduktionssemantik. Die hierfür bewiesenen zentralen Lemmata 5.23 und 5.24 sind auch für den<br />

Beweis der Übereinstimmung der ς-Fixpunkt- und der ς-Reduktionssemantiken in 5.5 von großer<br />

Bedeutung.<br />

Zuerst zeigen wir eine Hilfsaussage für das darauf folgende Lemma.<br />

Lemma 5.22 Vertauschung von semantischer Approximation und Teiltermersetzung<br />

Seien t, t ′ ∈ TΣ Grundterme und u ∈ Occ(t). Dann ist<br />

Beweis:<br />

[[t[u ← t ′ ]]] alg<br />

⊥ς<br />

u = ε: [[t[ε ← t ′ ]]] alg<br />

⊥ς = [[t′ ]] alg<br />

= [[t]]alg<br />

⊥ς ⊥ς [ε ← [[t′ ]] alg<br />

⊥ς ].<br />

u = i.u ′ : (i ∈ IN+)<br />

= [[t]]alg<br />

⊥ς [u ← [[t′ ]] alg<br />

⊥ς ].

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!