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.

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,

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!