Defaults in deduktiven Datenbanken
Defaults in deduktiven Datenbanken
Defaults in deduktiven Datenbanken
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
3.3. FORMALISIERUNG VON ÄNDERUNGSOPERATIONEN 67Man muß jetzt noch die Abfolge der Züge spezifizieren:succ(1, 2).. . .succ(9, 10).Dies ist ebenso wie die Maximallänge nur aufgrund der Bereichsbeschränkung nötig, sonstkönnte man natürlich e<strong>in</strong> e<strong>in</strong>gebautes Prädikat verwenden. Man braucht schließlich nochfolgende Schlüssel-Deklarationen:<strong>in</strong>(X 1 , X 2 , Y ) ∧ <strong>in</strong>(X 1 , X 2 , Y ′ ) → Y = Y ′ .zug(X, Y ) ∧ zug(X, Y ′ ) → Y = Y ′ .succ(X, Y ) ∧ succ(X, Y ′ ) → Y = Y ′ .Am <strong>in</strong>teressantesten ist nun natürlich die Spezifikation der Auswirkung der Züge:<strong>in</strong>(X, spieler, wald) ∧ zug(X, gehe nördlich) ∧ succ(X, X ′ ) →<strong>in</strong>(X ′ , spieler, höhle).<strong>in</strong>(X, spieler, höhle) ∧ zug(X, gehe südlich) ∧ succ(X, X ′ ) →<strong>in</strong>(X ′ , spieler, wald).<strong>in</strong>(X, honig, Y ) ∧ <strong>in</strong>(X, spieler, Y ) ∧ zug(X, nimm honig) ∧ succ(X, X ′ ) →<strong>in</strong>(X ′ , honig, tasche).<strong>in</strong>(X, honig, tasche) ∧ <strong>in</strong>(X, spieler, höhle) ∧ zug(X, gib honig) ∧ succ(X, X ′ ) →¬hungrig(X ′ , bär) ∧ <strong>in</strong>(X ′ , honig, bär).In der Prädikatenlogik ist dies recht mühsam aufzuschreiben, übersichtlicher geht ist <strong>in</strong>e<strong>in</strong>er dynamischen Logik:<strong>in</strong>(spieler, wald) → [gehe nördlich]<strong>in</strong>(spieler, höhle).<strong>in</strong>(spieler, höhle) → [gehe südlich]<strong>in</strong>(spieler, wald).<strong>in</strong>(honig, Y ) ∧ <strong>in</strong>(X, spieler, Y ) → [nimm honig]<strong>in</strong>(honig, tasche).<strong>in</strong>(honig, tasche) ∧ <strong>in</strong>(spieler, höhle) →[gib honig] ( ¬hungrig(bär) ∧ <strong>in</strong>(honig, bär) ) .Natürlich braucht man wieder <strong>Defaults</strong>, die e<strong>in</strong>e m<strong>in</strong>imale Änderung erzw<strong>in</strong>gen. Da dasPrädikat <strong>in</strong> aufgrund der Schlüsseldeklaration im wesentlichen e<strong>in</strong>e Funktion ist, brauchtman hierfür nur zu fordern, daß sich der alte Wert auf den neuen Zustand fortschreibt:succ(X, X ′ ) ∧ <strong>in</strong>(X, Y 1 , Y 2 ) → <strong>in</strong>(X ′ , Y 1 , Y 2 ).Bei dem echten Prädikat hungrig müssen entsprechend die beiden Wahrheitswerte trueund false andauern:succ(X, X ′ ) ∧ hungrig(X, Y ) → hungrig(X ′ , Y ).succ(X, X ′ ) ∧ ¬hungrig(X, Y ) → ¬hungrig(X ′ , Y ).Überraschenderweise ist diese Spezifikation so noch nicht korrekt, <strong>in</strong>sbesondere folgt nichtdie Formel ¬hungrig(4, bär). Um dies zu verstehen, muß man die maximalen Mengenvon Default-Ausprägungen betrachten, die angenommen werden können. Dies entsprichtalso e<strong>in</strong>er möglichst kle<strong>in</strong>en Menge von Ausnahmen, d.h. nicht geltenden <strong>Defaults</strong>. Bei