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.

Kapitel 5<br />

Konfluenz von<br />

Termersetzungssystemen<br />

Wie in Abbildung 3.1 illustriert, benötigen wir neben Techniken zur Überprüfung der Terminierung<br />

auch ein Verfahren, um die Konfluenz von Termersetzungssystemen zu untersuchen.<br />

Allgemein sind solche Techniken von Interesse, weil sie verwendet werden können, um<br />

Programme oder Berechnungsformalismen auf ihre Eindeutigkeit zu untersuchen.<br />

Ebenso wie die Terminierung ist auch die Frage der Konfluenz im allgemeinen unentscheidbar.<br />

Für terminierende TESe ist es aber entscheidbar, ob sie konfluent sind. Sofern<br />

wir also bereits die Terminierung eines TES (z.B. mit den Techniken des vorigen Kapitels)<br />

nachgewiesen haben, so lernen wir nun eine Methode kennen, die automatisch herausfinden<br />

kann, ob das TES konfluent ist. In unserem Vorgehen zur Konstruktion konvergenter<br />

TESe (Abb. 3.1) wird immer zuerst die Terminierung sicher gestellt, so dass die Frage der<br />

Konfluenz hier tatsächlich entschieden werden kann.<br />

Das Verfahren zur Untersuchung der Konfluenz (ebenso wie das Vervollständigungsverfahren<br />

im nächsten Kapitel) beruht auf der Verwendung der Unifikation. Darüber hinaus<br />

ist Unifikation von Termen auch in vielen weiteren Bereichen (außerhalb von Termersetzungssystemen)<br />

von großer Bedeutung. Wir stellen daher in Abschnitt 5.1 zuerst einen<br />

Unifikationsalgorithmus vor. Hierbei gehen wir auch darauf ein, wie dieser Algorithmus als<br />

Matchingalgorithmus verwendet werden kann. Matching von Termen wird natürlich immer<br />

benötigt, um die Termersetzungsrelation zu implementieren. Anschließend betrachten<br />

wir dann in Abschnitt 5.2 das Verfahren zur Konfluenzuntersuchung (bei terminierenden<br />

TESen). Schließlich zeigen wir in Abschnitt 5.3 ein hinreichendes Kriterium, um auch bei<br />

nicht-terminierenden TESen die Konfluenz nachzuweisen. Dieses Kriterium wird insbesondere<br />

in der funktionalen Programmierung verwendet.<br />

5.1 Unifikation<br />

Die Frage der Unifikation untersucht, ob es zu zwei Termen s <strong>und</strong> t eine Substitution σ<br />

gibt, so dass sσ = tσ gilt. Bislang haben wir immer die Gültigkeit von Gleichungen in<br />

Algebren (bzw. in einer Menge von Algebren) untersucht. Dabei bedeutete A |= s ≡ t,<br />

dass für alle Variablenbelegungen die Terme s <strong>und</strong> t in der Algebra A gleich gedeutet<br />

81

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!