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 ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Lemma 5.1.4 (Darstellung der Lösungen eines Unifikationsproblems) Sei S ein<br />
Unifikationsproblem über Σ <strong>und</strong> V <strong>und</strong> sei σ ein allgemeinster Unifikator von S. Dann<br />
gilt U(S) = {σδ|δ ∈ SUB(Σ,V)}.<br />
Beweis. Da σ Unifikator ist, gilt für alle s = t ∈ S jeweils sσ = tσ <strong>und</strong> somit auch<br />
sσδ = tσδ. Andererseits existiert für jeden Unifikator σ ′ von S eine Substitution δ mit<br />
σ ′ = σδ.<br />
✷<br />
Wir führen nun ein Verfahren ein, das zu einem Unifikationsproblem entscheidet, ob<br />
es lösbar ist <strong>und</strong> gegebenenfalls einen allgemeinsten Unifikator berechnet. Die Idee besteht<br />
darin, das Unifikationsproblem so zu transformieren, bis es in einer “gelösten Form” ist,<br />
aus der man die Lösung unmittelbar ablesen kann.<br />
Definition 5.1.5 (Gelöste Form eines Unifikationsproblems) Ein Unifikationsproblem<br />
S = {x 1 = t 1 ,...,x n = t n } ist in gelöster Form gdw. die x i paarweise verschiedene<br />
Variablen sind, die in den Termen t 1 ,...,t n nicht vorkommen. Zu einem Unifikationsproblem<br />
in gelöster Form wie oben definieren wir die Substitution σ S = {x 1 /t 1 ,...,x n /t n }.<br />
Der Vorteil von Unifikationsproblemen S in gelöster Form ist, dass die entsprechende<br />
Substitution σ S ein allgemeinster Unifikator ist.<br />
Lemma 5.1.6 (Lösung eines Unifikationsproblems in gelöster Form) Sei S ein<br />
Unifikationsproblem in gelöster Form. Dann ist σ S ein allgemeinster Unifikator von S,<br />
wobei für alle Unifikatoren σ ′ von S jeweils σ ′ = σ S σ ′ gilt.<br />
Beweis. Dadie x i nicht indent i auftreten, folgtx i σ S = t i = t i σ S , d.h., σ S ist einUnifikator<br />
von S. Sei nun σ ′ ein weiterer Unifikator von S. Zu zeigen ist, dass dann σ ′ = σ S σ ′ gilt:<br />
Für x i gilt x i σ ′ = t i σ ′ = x i σ S σ ′ . Für sonstige Variablen x gilt xσ ′ = xσ S σ ′ . ✷<br />
Zur Lösung von Unifikationsproblemen geben wir nun ein Verfahren an, um ein Unifikationsproblem<br />
in gelöste Form zu überführen. Hierzu führen wir die folgende Transformation<br />
von Unifikationsproblemen ein:<br />
Definition 5.1.7 (Transformation von Unifikationsproblemen) Wir definieren die<br />
folgende Relation =⇒ auf Unifikationsproblemen durch vier Transformationsregeln.<br />
Löschen S ⊎{t = t} =⇒ S<br />
Termreduktion S ⊎{f(s 1 ,..,s n ) = f(t 1 ,..,t n )} =⇒ S ∪{s 1 = t 1 ,...,s n = t n }<br />
Vertauschen S ⊎{t = x} =⇒ S ∪{x = t}, falls t ∉ V<br />
Variablenreduktion S ⊎{x = t} =⇒ {uσ = vσ | u = v ∈ S}∪{x = t},<br />
falls σ = {x/t},x ∉ V(t),x ∈ V(S)<br />
Hierbei bezeichnet ⊎ die disjunkte Vereinigung, so dass die bearbeitete Gleichung aus<br />
dem aktuellen Unifikationsproblem (gegebenenfalls) entfernt wird. Die erste Regel löscht<br />
triviale Gleichungen, die nicht zum Unifikationsproblem beitragen. Die zweite Regel ersetzt<br />
Gleichungen zwischen Termen, die mit demselben Funktionssymbol gebildet werden, durch<br />
die Gleichungen zwischen ihren Argumenten. Die dritte Regel orientiert Gleichungen so,