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 ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
zusammenführbar sind, d.h., es existiert ein Objekt q mit v → ∗ q ← ∗ t.<br />
p ❃ ❃❃❃❃❃❃❃<br />
<br />
s ′ ❄ t ′ ❂<br />
∗ ❄ ❂❂❂❂❂❂❂<br />
∗ ∗ ∗<br />
❄<br />
❄ <br />
s ❅ u t<br />
❅ ∗ ∗<br />
❅<br />
❅ 7 777<br />
∗<br />
v ❅<br />
❅ ∗<br />
❅<br />
❅ 8 88888888<br />
<br />
q<br />
Damit erhält man also s → ∗ q ← ∗ t, d.h., s <strong>und</strong> t sind zusammenführbar. Das hierbei<br />
entstandene Diagramm ähnelt (entfernt) einem Diamanten; daher der Name des Satzes. ✷<br />
Mit dem Diamond Lemma kann der Konfluenztest “lokalisiert” werden. Man muss also<br />
nur bei Verzweigungen nach einem Schritt zeigen, dass sie wieder zusammenführbar<br />
sind. Das Diamond Lemma garantiert dann, dass dies auch bei Verzweigungen nach beliebig<br />
vielen Schritten möglich ist. Dieses Resultat ist insbesondere dann von Vorteil, wenn<br />
die Relation → endlich darstellbar ist (wie bei (endlichen) Termersetzungssystemen). Wir<br />
werden nun zeigen, dass dort die lokale Konfluenz entscheidbar ist. Wenn man also die<br />
Terminierung sicher gestellt hat, ist dann sogar die Konfluenz entscheidbar. Im Rahmen<br />
unseres generellen Vorgehens (Abbildung 3.1), bei dem ja zunächst die Terminierung überprüft<br />
wird, kann also die Konfluenz nun in der Tat bestimmt werden. Es gibt darüber<br />
hinaus Kriterien, die auch für die Konfluenz bei nicht-terminierenden Regeln hinreichend<br />
sind (dies ist insbesondere bei funktionalen Programmen wichtig). Hierzu sei auf Abschnitt<br />
5.3 verwiesen.<br />
Nach dem Diamond Lemma müssen wir bei terminierenden TESen also lediglich die<br />
lokale Konfluenz untersuchen, d.h., wir müssen alle kritischen Situationen der Form<br />
p ❂ ❂❂❂❂❂❂❂<br />
l 2 →r 2<br />
<br />
s<br />
t<br />
l 1 →r 1<br />
überprüfen <strong>und</strong> feststellen, ob man s <strong>und</strong> t jeweils zusammenführen kann. Leider gibt<br />
es natürlich im allgemeinen unendlich viele Terme <strong>und</strong> daher auch unendlich viele solche<br />
kritischen Situationen. Um die (lokale) Konfluenzüberprüfung automatisch durchführen zu<br />
können,müssenwirunsdaheraufendlichvielekritischeSituationenbeschränken. UnserZiel<br />
ist also, eine derartige endliche Menge von kritischen Situationen zu finden, so dass aus der<br />
Zusammenführbarkeit von diesen kritischen Situationen bereits die Zusammenführbarkeit<br />
aller kritischen Situationen <strong>und</strong> damit die lokale Konfluenz folgt.