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 ...
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.