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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

(b) Wir zeigen U(S) = U(S ′ ) falls S ′ aus S mit Hilfe der Regel “Variablenreduktion”<br />

entsteht, da die Aussage für alle anderen Regeln offensichtlich ist. Da {x = t} in<br />

gelöster Form ist, ist σ = {x/t} nach Lemma 5.1.6 allgemeinster Unifikator dieses<br />

Unifikationsproblems. Für alle Substitutionen θ mit xθ = tθ gilt nach dem Lemma<br />

demnach θ = σθ. Damit erhält man:<br />

θ ∈ U(S ⊎{x = t}) gdw. xθ = tθ <strong>und</strong> θ ∈ U(S)<br />

gdw. xθ = tθ <strong>und</strong> σθ ∈ U(S)<br />

gdw. xθ = tθ <strong>und</strong> uσθ = vσθ für alle u = v ∈ S<br />

gdw. xθ = tθ <strong>und</strong> θ ∈ U({uσ = vσ | u = v ∈ S})<br />

gdw. θ ∈ U({uσ = vσ | u = v ∈ S}∪{x = t})<br />

(c) Wenn S lösbar ist, kann es keine Gleichungen f(...) = g(...) mit f ≠ g enthalten,<br />

da diese Gleichungen dem Clash Failure entsprechen würden. S kann auch keine<br />

Gleichungen f(...) = f(...) enthalten, da sonst die “Termreduktion”-Regel anwendbar<br />

wäre. Aus s = t ∈ S folgt daher s ∈ V oder t ∈ V. Falls s ∉ V, so wäre die<br />

“Vertauschen”-Regel anwendbar. Somit haben alle Gleichungen in S die Form x = t.<br />

Hierbei gilt x ∉ V(t). Der Gr<strong>und</strong> ist, dass t = x nicht möglich ist, da sonst die<br />

“Löschen”-Regel anwendbar wäre <strong>und</strong> x ∈ V(t) bei t ≠ x würde dem Occur Failure<br />

entsprechen. Die Variable x kommt darüber hinaus in keiner anderen Gleichung aus<br />

S vor, da sonst die “Variablenreduktion” anwendbar wäre. Somit ist S in gelöster<br />

Form.<br />

(d) Die Terminierung von UNIFY folgt direkt aus Teil (a). Somit berechnet UNIFY(S)<br />

also eine Normalform von S, d.h., ein Unifikationsproblem S ′ mit S =⇒ ∗ S ′ , das in<br />

Normalform bezüglich =⇒ ist. Durch Induktion über die Länge der Transformation<br />

kann man mit Hilfe von Teil (b) zeigen, dass U(S) = U(S ′ ) ist. Falls S lösbar ist, ist<br />

U(S) = U(S ′ ) ≠ ∅ <strong>und</strong> somit ist auch S ′ lösbar. Nach Teil (c) ist daher S ′ in gelöster<br />

Form <strong>und</strong> σ S ′ ist nach Lemma 5.1.6 allgemeinster Unifikator von S ′ <strong>und</strong> daher auch<br />

von S. Falls S nicht lösbar ist, ist U(S) = U(S ′ ) = ∅. Somit kann S ′ nicht in gelöster<br />

Form sein <strong>und</strong> der Algorithmus gibt “False” aus.<br />

✷<br />

Aus diesem Satz erhält man sofort den bekannten Unifikationssatz, der sich daraus<br />

ergibt, dass UNIFY zu jedem lösbaren Unifikationsproblem einen allgemeinsten Unifikator<br />

berechnet.<br />

Korollar 5.1.10 (Unifikationssatz) Wenn ein Unifikationsproblem lösbar ist, dann hat<br />

es einen allgemeinsten Unifikator.<br />

Die Effizienz des Algorithmus UNIFY lässt sich natürlich noch verbessern, indem man<br />

sofort mit “False” abbricht, sobald ein Occur oder Clash Failure bemerkt wird. Durch<br />

weitere Verbesserungen (insbesondere durch die Repräsentation der Terme als Graphen)<br />

lässt sich sogar ein Unifikationsalgorithmus mit linearem Aufwand gewinnen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!