20.01.2015 Aufrufe

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

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.

Dieses Paar ist also zusammenführbar. Das zweite kritische Paar (5.8) ist hingegen nicht<br />

zusammenführbar. Es lautet 〈f(f(x,y),i(y)),f(x,e)〉. Der Term f(x,e) kann hierbei noch<br />

zu seiner Normalform x reduziert werden, aber da die Normalformen f(f(x,y),i(y)) <strong>und</strong> x<br />

verschieden sind, erkennt man hier die Nicht-Konfluenz des Beispiels. Das dritte kritische<br />

Paar (5.9) ist hingegen wieder zusammenführbar:<br />

f(f(x ′ ,x),f(y,z))<br />

f(x ′ ,f(f(x,y),z))<br />

∗<br />

∗<br />

❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙ ❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦<br />

f(f(f(x ′ ,x),y),z)<br />

Der Algorithmus CONFLUENCE würde also aufgr<strong>und</strong> des nicht-zusammenführbaren kritischen<br />

Paars (5.8) feststellen, dass das TES nicht konfluent ist.<br />

Es ist uns also gelungen, die Frage der Eindeutigkeit von Berechnungen auf die Betrachtung<br />

von nur endlich vielen Termpaaren (den kritischen Paaren) zu reduzieren. Diese<br />

lassen sich mit der in Abschnitt 5.1 vorgestellten Technik der Unifikation berechnen <strong>und</strong> auf<br />

diese Weise lässt sich die Konfluenz eines (terminierenden) TES automatisch überprüfen.<br />

Die in diesem Kapitel vorgestellten Ergebnisse (Unifikation, Diamond Lemma, Kritisches-<br />

Paar-Lemma) haben auch über den Bereich der Termersetzungssysteme hinaus Bedeutung,<br />

wie z.B. bei der Untersuchung der Eindeutigkeit anderer Berechnungsformalismen. Das<br />

Konzept der kritischen Paare ist darüber hinaus entscheidend für das im nächsten Kapitel<br />

vorgestellte Vervollständigungsverfahren.<br />

5.3 Konfluenz ohne Terminierung<br />

Das Verfahren aus dem vorigen Abschnitt dient dazu, die Konfluenz von terminierenden<br />

TESen zu entscheiden. Dies ist insbesondere für die funktionale Programmierung wichtig.<br />

Ein funktionales Programm ist im wesentlichen eine Sammlung von Termersetzungsregeln<br />

<strong>und</strong> es wäre wieder wünschenswert, wenn man unabhängig von der Auswertungsstrategie<br />

immer das gleiche Ergebnis erhalten würde. Natürlich ist es aber möglich, nichtterminierende<br />

funktionale Programme zu schreiben. Daher benötigt man ein Kriterium,<br />

dass auch bei nicht-terminierenden Programmen die Konfluenz sicher stellt.<br />

In diesem Abschnitt werden wir zeigen, dass sogenannte orthogonale TESe stets konfluent<br />

sind, auch wenn sie nicht terminieren. Da funktionale Programme orthogonalen TESen<br />

entsprechen, folgt daraus die Konfluenz funktionaler Programme.<br />

Im vorigen Abschnitt wurde gezeigt, dass ein TES lokal konfluent ist gdw. all seine<br />

kritischen Paarezusammenführbar sind. Bei terminierenden TESen ist diesgleichbedeutend<br />

zur Konfluenz. Um ein von der Terminierung unabhängiges Konfluenzkriterium zu finden,<br />

liegt es daher nahe, TESe zu betrachten, die gar keine kritischen Paare haben.<br />

Definition 5.3.1 (Nicht-überlappendes TES) Ein TES ist nicht-überlappend, falls es<br />

keine kritischen Paare hat.<br />

Man könnte vermuten, dass nicht-überlappende TESe stets konfluent sind. Das folgende<br />

Gegenbeispiel zeigt aber, dass dies nicht der Fall ist.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!