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 ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
werden. Ebenso bedeutete das Wortproblem s ≡ E t, dass in allen Modellen A von E bei<br />
allen Variablenbelegungen s <strong>und</strong> t gleich interpretiert werden. Bislang haben wir also die<br />
Variablen in Termen immer als implizit allquantifiziert betrachtet.<br />
DieUnifikation entspricht hingegen eher einem “Erfüllbarkeitsproblem”. Im allgemeinen<br />
wird hier untersucht, ob es zu einer Algebra A (bzw. einer Menge von Algebren) eine<br />
Substitution σ gibt, so dass A |= sσ ≡ tσ gilt. Je nachdem, welche Algebra A bzw. welche<br />
MengevonAlgebrenmanbetrachtet,kanndiesesProblementscheidbar oderunentscheidbar<br />
sein <strong>und</strong> es existieren jeweils unterschiedliche Unifikationsalgorithmen.<br />
Wir wollen im folgenden die einfachste Unifikationsproblematik untersuchen. Hierbei<br />
wird überprüft, ob es eine Substitution σ gibt, so dass die Gleichung sσ ≡ tσ in allen<br />
Algebren gilt. Mit anderen Worten, man untersucht, ob man durch eine geeignete Substitution<br />
σ die beiden Terme s <strong>und</strong> t syntaktisch gleich machen kann. Beispielsweise ist<br />
das Unifikationsproblem g(f(x),y) = g(y,f(z)) lösbar <strong>und</strong> hat unter anderem die Lösung<br />
σ = {x/z,y/f(z)}. Solche Lösungssubstitutionen bezeichnet man als Unifikatoren. Die folgende<br />
Definitionführt die benötigten Begriffe ein, wobei wir im folgenden nicht nur einzelne<br />
Gleichungen, sondern Systeme von Gleichungen als Unifikationsprobleme betrachten.<br />
Definition 5.1.1 (Unifikation) Zwei Terme s <strong>und</strong> t sind unifizierbar, falls es eine Substitution<br />
σ mit sσ = tσ gibt. Solch eine Substitution heißt ein Unifikator von s <strong>und</strong> t.<br />
Ein Unifikationsproblem über Σ <strong>und</strong> V ist eine endliche Menge von Termgleichungen<br />
S = {s 1 = t 1 ,...,s n = t n } mit s i ,t i ∈ T (Σ,V). Eine Substitution σ ist eine Lösung oder<br />
ein Unifikator des Unifikationsproblems S gdw. s i σ = t i σ für alle 1 ≤ i ≤ n gilt. Die Menge<br />
aller Unifikatoren von S bezeichnen wir mit U(S).<br />
Wir benötigen die Unifikation, um die Konfluenz von TESen zu überprüfen <strong>und</strong> um<br />
TESe zu vervollständigen. Unifikation spielt aber auch in anderen Bereichen der Informatik<br />
eine wichtige Rolle. Beispielsweise ist Unifikation der Gr<strong>und</strong>mechanismus bei der Auswertungvonlogischen<br />
Programmen(z.B. inderSprache prolog),vgl. [Gie06].Außerdem wird<br />
Unifikation im Bereich des automatischen Beweisens (z.B. für den sogenannten Resolutionskalkül)<br />
benötigt. Weiterhin wird Unifikation bei der Implementierung von polymorph<br />
getypten Programmiersprachen zur Typinferenz <strong>und</strong> -überprüfung verwendet, vgl. [Gie05].<br />
Dies ist beispielsweise bei den meisten modernen funktionalen Sprachen wie haskell oder<br />
ml der Fall.<br />
Dieobenskizzierte Frageder (syntaktischen) Unifikationist entscheidbar <strong>und</strong>dieMenge<br />
aller Unifikatoren zu einem Unifikationsproblem lässt sich auf endliche Weise charakterisieren.<br />
Im allgemeinen kann ein Unifikationsproblem natürlich mehrere Unifikatoren haben.<br />
Das obige Unifikationsproblem g(f(x),y) = g(y,f(z)) hat neben der Lösung σ =<br />
{x/z,y/f(z)} z.B. auch die Lösungen σ 1 = {x/a,y/f(a),z/a}, σ 2 = {x/f(z),y/f(f(z)),<br />
z/f(z)} <strong>und</strong> σ 3 = {z/x,y/f(x)}. Die Substitutionen σ <strong>und</strong> σ 3 sind insofern allgemeiner<br />
als die anderen beiden Substitutionen, da hier nur solche Variablen ersetzt werden, die unbedingt<br />
ersetzt werden müssen. Man nennt eine Substitution σ allgemeiner als eine andere<br />
Substitution σ 1 , wenn σ 1 eine Spezialisierung von σ ist, d.h., falls man den Effekt von σ 1<br />
erhält, indem man erst σ anwendet <strong>und</strong> anschließend die Variablen möglicherweise weiter<br />
instantiiert. In der Tat gilt σ 1 = σ ◦δ 1 , wobei δ 1 = {z/a} ist. Ebenso gilt σ 2 = σ ◦δ 2 mit<br />
δ 2 = {z/f(z)} <strong>und</strong> σ 3 = σ◦δ 3 mit δ 3 = {z/x}. Die Substitution σ ist ein allgemeinster Uni-