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.

3.2. DIE REDUKTIONSRELATIONEN 43<br />

Reduktionsregeln fest definiert und nicht durch den Programmierer veränderbar. Somit können diese<br />

in Implementationen direkt effizient, ohne ein explizites Patternmatching, codiert werden (vgl.<br />

mit Stackcode für die Verzweigung in rekursiven Funktionsdefinitionen in [Ind93]).<br />

Das assoziierte Termersetzungssystem eines Programms dient nun als Grundlage operationeller<br />

Semantiken. Es hat die folgende entscheidende Eigenschaft:<br />

Lemma 3.1 Beinahe Orthogonalität assoziierter Termersetzungssysteme<br />

Das assoziierte Termersetzungssystem jedes Programms (mit Pattern oder mit Hilfsfunktionen) ist<br />

beinahe orthogonal.<br />

Beweis:<br />

Assoziierte Termersetzungssysteme sind linkslinear, und die Erfüllung der Eindeutigkeitsbedingung<br />

beinahe orthogonaler Termersetzungssysteme folgt direkt aus der eingeschränkten Form linker Regelseiten<br />

und der Eindeutigkeitsbedingung der Programme mit Pattern bzw. mit Hilfsfunktionen.<br />

Auch die Reduktionsregeln der Hilfssymbole sind linkslinear und erfüllen die Eindeutigkeitsbedingung<br />

der Programme mit Pattern. ✷<br />

Somit gelten alle Eigenschaften beinahe orthogonaler Termersetzungssysteme auch für Programme<br />

bzw. deren assoziierte Termersetzungssysteme. Insbesondere ist die Reduktionsrelation −−→<br />

ˆP<br />

eines assoziierten Termersetzungssystems ˆ P konfluent; eine entscheidende Voraussetzung für die<br />

Wohldefiniertheit operationeller Semantiken, wie wir noch feststellen werden.<br />

In Anbetracht der Tatsache, daß wir die Reduktionsrelationen eines Termersetzungssystems nur auf<br />

Grundtermen definiert haben, wird hier nicht deutlich, daß die Reduktionsrelation −−→ eines bei-<br />

R<br />

nahe orthogonalen Termersetzungssystems R auch über der Menge aller Terme TΣ(X) konfluent ist.<br />

Wir benötigen jedoch nur Grundkonfluenz. Die Menge der grundkonfluenten Termersetzungssysteme<br />

ist echt größer als die Menge der konfluenten Termersetzungssysteme. Da jedoch Grundkonfluenz<br />

eine weitaus schwieriger zu verifizierende Eigenschaft als Konfluenz ist ([KNO90]), verzichten wir<br />

auf die Untersuchung diesbezüglich eventuell möglicher größerer Freiheitsgrade der Syntax unserer<br />

Programme.<br />

Die Bedeutung der Eindeutigkeitsbedingung der Programme und der Forderung der Linkslinearität<br />

ist somit klar. Freilich mag es scheinen, daß in Anbetracht der übrigen syntaktischen Einschränkungen<br />

die Linkslinearität überflüssig wäre. Das folgende Beispiel demonstriert jedoch, daß dann die<br />

Konfluenz verloren ginge.<br />

Beispiel 3.5 Fehlende Konfluenz bei fehlender Linkslinearität (S.174 in [Klop87])<br />

d(x,x) → E<br />

c(x) → d(x,c(x))<br />

a → c(a)<br />

Für den Term c(a) gibt es die zwei Reduktionsketten<br />

c(a) −−→ d(a,c(a)) −−→ d(c(a),c(a)) −−→ E<br />

c(a) −−→ c(c(a)) −−→ c(d(a,c(a))) −−→ c(d(c(a),c(a))) −−→ c(E)<br />

Die beiden Terme E und c(E) lassen sich jedoch nicht zu einem gemeinsamen Term reduzieren. E<br />

ist bereits in Normalform und c(E) läßt sich nicht zu E reduzieren. c(E) besitzt überhaupt keine<br />

Normalform. ✷

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!