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.
(b) Das TES R = {b → a,b → b} ist nicht terminierend, aber eindeutig normalisierend,<br />
d.h., hier hat jeder Term genau eine Normalform. Es gilt z.B. b↓ R = a.<br />
(c) Das TES {b → c,b → a} terminiert, aber es gibt Terme mit mehreren Normalformen.<br />
So hat b sowohl die Normalform a als auch die Normalform c.<br />
(d) Das TES {c → b,a → b} terminiert <strong>und</strong> jeder Term hat genau eine Normalform. Dies<br />
sind die Arten von TESen, die wir im Folgenden zu konstruieren versuchen.<br />
Man erkennt auch, dass die beiden Variablenbedingungen V(r) ⊆ V(l) <strong>und</strong> l ∉ V für<br />
alle Regeln l → r ∈ R notwendig sind, um terminierende TESe zu erhalten. Der Gr<strong>und</strong> ist,<br />
dass man bei einer Variable x ∈ V(r)\V(l) mit r| π = x die folgende unendliche Reduktion<br />
bilden könnte, wobei σ = {x/l} ist:<br />
l → rσ = rσ[l] π → rσ[rσ] π = rσ[rσ[l] π ] π → rσ[rσ[rσ] π ] π = ...<br />
Analog würde man bei einer Regel x → r die folgende Reduktion erhalten, wobei σ 1 =<br />
{x/r}, σ 2 = {x/rσ 1 }, etc.:<br />
x → r → rσ 1 → rσ 2 → ...<br />
Betrachten wir nun noch einmal unsere früheren Beispiele. In Bsp. 3.3.6 haben wir<br />
zur Untersuchung der Frage plus(succ(succ(O)),x) ≡ E plus(succ(O),succ(x)) zunächst die<br />
Normalformen der beiden Terme plus(succ(succ(O)),x) <strong>und</strong> plus(succ(O),succ(x)) gebildet.<br />
Anschließend haben wir überprüft, ob diese beiden Normalformen identisch waren. In diesem<br />
Beispiel war das der Fall, da beide Terme nur eine Normalform, nämlich succ(succ(x))<br />
besitzen.<br />
In Bsp. 3.3.7 hatten wir hingegen ein nicht-terminierendes TES R 1 = {b → c,b →<br />
a,f(a) → f(f(a))}. Bei der Untersuchung von f(a) ≡ E f(c) wollten wir ebenfalls Normalformen<br />
von f(a) <strong>und</strong> f(c) berechnen. Da f(a) aber keine Normalformen besitzt, scheitert dieser<br />
Ansatz. Das TES R 2 = {b → c,b → a,f(a) → f(f(b))} ist im Gegensatz zu R 1 wenigstens<br />
normalisierend, aber ebenfalls nicht terminierend. Hier besitzt f(a) zwar Normalformen<br />
f 2 (c),f 3 (c),..., aber da R nicht terminiert, kann es passieren, dass die Reduktion von f(a)<br />
unendlich weiterläuft, ohne eine Normalform zu finden.<br />
Die Terminierung stellt also sicher, dass wir beliebig reduzieren können <strong>und</strong> stets nach<br />
endlich vielen Schritten eine Normalform erhalten. Dies ist daher eine der Voraussetzungen,<br />
die wir benötigen, um TESe zur Lösung des Wortproblems zu verwenden. Man braucht die<br />
Terminierung auch, um zu untersuchen, ob ein TES eindeutige Normalformen hat, wie man<br />
in Kapitel 5 sehen wird. Darüber hinaus ist die Frage der Terminierung natürlich auch<br />
in anderen Bereichen überaus wichtig. Beispielsweise möchte man bei der Programmverifikation<br />
untersuchen, ob ein Programm bei allen Eingaben stets nach endlicher Zeit anhält.<br />
Die Terminierung ist darüber hinaus bei der automatisierten Programmverifikation wichtig,<br />
um Induktionsbeweise über Programme durchführen zu können (vgl. [Gie03]). Schließlich<br />
wird sich auch herausstellen, dass die Terminierung eine Voraussetzung für Vervollständigungsverfahren<br />
ist, die unvollständige Programme automatisch ergänzen können (Kapitel<br />
6). In Kapitel 4 werden wir daher Verfahren vorstellen, die die Terminierung von TESen<br />
automatisch untersuchen.