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.

Satz 5.1.9 (Korrektheit des Unifikationsalgorithmus)<br />

Sei S ein Unifikationsproblem.<br />

(a) Die Relation =⇒ ist f<strong>und</strong>iert.<br />

(b) Falls S =⇒ S ′ , dann gilt U(S) = U(S ′ ).<br />

(c) Falls S lösbar <strong>und</strong> in Normalform bezüglich =⇒ ist, dann ist S in gelöster Form.<br />

(d) Der Algorithmus UNIFY terminiert <strong>und</strong> ist korrekt.<br />

Beweis.<br />

(a) Der F<strong>und</strong>iertheitsbeweis ist nicht trivial, da durch die “Variablenreduktion” die Anzahl<br />

der Zeichen eines Unifikationsproblems vergrößert werden kann, wie in Bsp. 5.1.8<br />

deutlich wird.<br />

Wir sagen, eine Variable x ist gelöst gdw. sie genau einmal in S auftritt, <strong>und</strong> zwar<br />

auf der linken Seite einer Gleichung x = t, wobei x ∉ V(t). Wir zeigen nun die<br />

F<strong>und</strong>iertheitvon=⇒,indemwireineFunktionangeben,diejedesUnifikationsproblem<br />

S auf einen Tripel (n 1 ,n 2 ,n 3 ) von natürlichen Zahlen abbildet.<br />

– n 1 ist die Anzahl der Variablen in S, die nicht gelöst sind<br />

– n 2 ist die Anzahl der Zeichen in S, d.h. ∑ (s= t)∈S |s|+|t|<br />

– n 3 ist die Anzahl von Gleichungen der Form t = x in S, wobei t ∉ V.<br />

Zur Illustration betrachten wir noch einmal das Unifikationsproblem aus Bsp. 5.1.8<br />

<strong>und</strong> untersuchen, wie sich der Tripel (n 1 ,n 2 ,n 3 ) hier verändert.<br />

{g(f(a),g(x,x)) = g(x,g(x,y))} =⇒ Termreduktion (2,11,0)<br />

{f(a) = x,g(x,x) = g(x,y)} =⇒ Vertauschen (2,9,1)<br />

{x = f(a),g(x,x) = g(x,y)} =⇒ Variablenreduktion (2,9,0)<br />

{x = f(a),g(f(a),f(a)) = g(f(a),y)} =⇒ Termreduktion (1,12,0)<br />

{x = f(a),f(a) = f(a),f(a) = y} =⇒ Löschen (1,10,1)<br />

{x = f(a),f(a) = y} =⇒ Vertauschen (1,6,1)<br />

{x = f(a),y = f(a)} (0,6,0)<br />

Man erkennt nun, dass aus S =⇒ S ′ folgt, dass der Tripel, der zu S gehört, größer<br />

als der Tripel zu S ′ bezüglich der Relation (> IN ) 3 lex ist. Die folgende Tabelle gibt an,<br />

welcheZahlensichbeidenverschiedenen RegelnaufwelcheArt<strong>und</strong>Weiseverkleinern:<br />

n 1 n 2 n 3<br />

Löschen ≥ > =<br />

Termreduktion ≥ ><br />

Vertauschen ≥ = ><br />

Variablenreduktion >

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!