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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!