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.
Ansonsten gilt s ′ → t. Wegen q ← ∗ s ′ → t folgt aus der Konfluenz von →, dass q ↓ t<br />
gilt, d.h., es existiert ein p mit q → ∗ p ← ∗ t. Damit ergibt sich s → ∗ q → ∗ p ← ∗ t, d.h.,<br />
s ↓ t.<br />
s<br />
❊❊ ←→ ∗ s ′<br />
❊❊❊❊❊❊❊<br />
∗<br />
q<br />
−→ t<br />
∗<br />
2 22222222 ∗<br />
4 4 4 4 4 4 4 4 4 4<br />
❋<br />
❋<br />
❋<br />
∗ ❋<br />
❋ <br />
Man erkennt, dass in dem Beispiel R = {b → c,b → a} das Problem daran liegt, dass<br />
der Term b mehrere Normalformen hat. In der Tat folgt aus der Konfluenz, dass jedes<br />
Objekt höchstens eine Normalform hat. Ist die Auswertung darüberhinaus normalisierend,<br />
so besitzt jeder Term genau eine Normalform. Dies macht deutlich, dass die Konfluenz<br />
generell für Programme wichtig ist. Man möchte, dass das Resultat der Auswertung eines<br />
Programms unabhängig von der verwendeten Auswertungsstrategie eindeutig ist (vgl. z.B.<br />
die Diskussion über “call-by-value” <strong>und</strong> “call-by-name”-Auswertung bei funktionalen Programmiersprachen<br />
[Gie05]). Sofern man weiß, dass das Programm terminiert (<strong>und</strong> damit<br />
normalisierend ist), ist die Konfluenz äquivalent zur Eindeutigkeit der Ergebnisse. In Kapitel<br />
5werden wirdaher Verfahrenuntersuchen, umdieKonfluenzautomatischnachzuweisen.<br />
Lemma 3.3.18 (Konfluenz bedeutet eindeutige Normalformen)<br />
p<br />
(a) Wenn eine Relation → konfluent ist, dann hat jedes Objekt höchstens eine Normalform.<br />
(b) Wenn → normalisierend <strong>und</strong> konfluent ist, dann hat jedes Element genau eine Normalform<br />
(d.h., → ist eindeutig normalisierend).<br />
(c) Jede eindeutig normalisierende Relation ist konfluent.<br />
Beweis.<br />
(a) Sei t ein Objekt mit den Normalformen q 1 <strong>und</strong> q 2 . Daraus folgt t → ∗ q 1 <strong>und</strong> t → ∗ q 2 .<br />
Aufgr<strong>und</strong> der Konfluenz muss es also ein Objekt q geben mit q 1 → ∗ q ← ∗ q 2 . Da q 1<br />
<strong>und</strong> q 2 aber Normalformen sind, folgt q 1 = q = q 2 .<br />
(b) Normalisierung bedeutet, dass jedes Objekt mindestens eine Normalform hat, <strong>und</strong><br />
Konfluenz impliziert (nach (a)), dass jedes Objekt höchstens eine Normalform hat.<br />
Daher hat bei einer normalisierenden konfluenten Relation jedes Objekt also genau<br />
eine Normalform.<br />
(c) Nun zeigen wir, dass aus der eindeutigen Normalisierung die Konfluenz folgt. Hierzu<br />
sei s ← ∗ p → ∗ t. Wir müssen zeigen, dass dann s <strong>und</strong> t zusammenführbar sind.<br />
Seien q 1 <strong>und</strong> q 2 die (eindeutigen) Normalformen von s <strong>und</strong> t. Dann sind beide auch<br />
Normalformen von p <strong>und</strong> aufgr<strong>und</strong> der Eindeutigkeit folgt q 1 = q 2 . Somit haben wir<br />
s → ∗ q 1 = q 2 ← ∗ t.<br />
✷<br />
✷