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.

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-

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!