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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!