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