Prädikatenlogik 2. Stufe, Circumscription und Situationskalkül 1. Prädikatenlogik 2. Stufe Erweiterung der PL 1. Stufe um Quantifikation über Prädikate (dazu Prädikatsvariablen mit Stelligkeit) und Funktionen (dazu Funktionsvariablen mit Stelligkeit) Semantik: Def. Struktur: wie gehabt, aber zusätzlich werden Prädikats- (Funktions-) variablen der Stelligkeit n auf n-stellige Prädikate (Funktionen) über dem Individuenbereich abgebildet. Sei p n-stellige Prädikatsvariable. p(a1, ..., an) wahr in Struktur A genau dann wenn Tupel aus Elementen des Individuenbereichs, zu denen a1, ..., an in A interpretiert werden, in dem Prädikat enthalten sind, zu dem p interpretiert wird. p F wahr in A gdw. Wenn F wahr ist in jeder Struktur, die p zu einer beliebigen Relation interpretiert, ansonsten mit A übereinstimmt. Begriffe Modell, Folgerung, Inkonsistenz etc. wie gehabt. Ermöglicht es, Standarddefinitionen der Mathematik auszudrücken Beispiel 1. Transitive Hülle RP einer 2stelligen Relation P: kleinste Relation, für die gilt: 1. (x,y) P impliziert (x,y) RP, 2. (x,z) RP und (z,y) P impliziert (x,y) RP. x, y [R(x,y) <-> (P(x,y) v z [R(x,z) & P(z,y)]) ] (1) erfasst nicht Minimalität: Beispiel, Konstanten a, b, c, d, Def. P wie folgt: a c ---- > d b x, y [P(x,y) <-> x = c & y = d] Es gibt Modelle von (1), (2), in denen R zu groß ist, z.B. R = {(a,a), (a,b), (a,c), (a,d), (b,a), (b,b), (b,c), (b,d), (c,a), (c,b), (c,c), (c,d)} Man kann zeigen: es gibt keine Formel 1. Stufe, die für beliebige Relationen P deren transitive Hülle RP definiert. So geht's: (2) x, y [R(x,y) <-> r,v,w,z (P(v,w) -> r(v,w)) & (r(v,z) & P(z,w) -> r(v,w)) -> r(x,y)] Def. Nat Nat kleinste Menge, so dass: 1. 0 Nat 2. t Nat impliziert s(t) Nat Second order definition: x. [Nat(x) <-> p. { p(0) & [y. p(y) -> p(s(y))] -> p(x)}] Anmerkung: daraus ergibt sich Induktionsaxiom wie folgt Allquantor nach vorne, statt <-> nur eine Richtung: p x. [Nat(x) -> {p(0) & [y. p(y) -> p(s(y))] -> p(x)}] Aussagenlogische Äquivalenz: A -> (B -> C) äquivalent zu B -> (A -> C) -A v –B v C P x. [p(0) & [y. p(y) -> p(s(y))] -> {Nat(x) -> p(x)}] P [p(0) & [y. p(y) -> p(s(y))] -> {x. Nat(x) -> p(x)}] 2. Circumscription Grundidee: es gibt Prädikate, die normalerweise von nur wenigen Objekten erfüllt werden (Bsp. rothaarig). Man möchte ableiten können ¬rothaarig(Peter), außer rothaarig(Peter) ist ableitbar. also: gegeben bestimmtes Prädikat P, minimiere Extension von P, d.h. Objekte o, so dass P(o) gilt. aber wie? semantisch: betrachte nur bestimmte Modelle, die mit minimaler Extension von P: Sei T eine (endl. Menge von) Formel(n), P ein zu minimierendes Prädikatensymbol. Wir definieren eine Relation ≤P auf Modellen von T wie folgt. M1 ≤P M2 gdw 1) M1 und M2 stimmen in der Interpretation aller Symbole außer P überein, 2) die Interpretation von P in M1 ist Teilmenge der Interpretation von P in M2. M heißt minimal bezüglich ≤P gdw. M' ≤P M impliziert M ≤P M'. als folgerbar werden alle Formeln betrachtet, die in allen minimalen Modellen von T gelten. syntaktisch: Füge Formel 2. Ordnung hinzu, die Minimalität erzwingt: Notation: P = Q: x [P(x) <-> Q(x)] P ≤ Q: x [P(x) -> Q(x)] P < Q: P ≤ Q & ¬ (Q ≤ P Def.: Sei T Formel, P Prädikatensymbol. Die Circumscription von P in T, Circ[T;P], ist die Formel 2. Ordnung: T & ¬ q [T(q) & q < P] äquivalent: T & q [(T(q) & q ≤ P) -> P ≤ q] hier ist T(q) die Formel, die entsteht, indem man in T jedes Vorkommen von P durch die Prädikatsvariable q ersetzt. Herleitung: q [¬T(q) v ¬ q < P] q [¬T(q) v ¬ (q ≤ P & ¬ (P ≤ q)] q [¬T(q) v ¬ (q ≤ P) v (P ≤ q)] Bsp.: T = rot(Peter) & rot(Klaus), P = rot Substituiere in q [q(Peter) & q(Klaus) & q ≤ P -> P ≤ q] für q das Prädikat Q(x) := [x = Peter v x = Klaus] (Peter = Peter v Peter = Klaus) & (Klaus = Peter v Klaus = Klaus) & x [x = Peter v x = Klaus -> rot(x)] -> x [rot(x) -> x = Peter v x = Klaus] Vorbedingungen wahr, Konsequenz herleitbar. Damit etwa (mit unique names assumption) herleitbar ¬rot(Hans). Anmerkung: n-stellige Prädikate entsprechen Formeln mit n freien Variablen. Um festzulegen, welches Argument welcher freien Variablen entspricht, verwendet man sog. Lambda-Notation: Sei P Formel, x1,...,xn.P(a1,...,an) ist wahr (in einer Struktur A) gdw P[x1/a1, …, xn/an] wahr (in A). Circumscription Beispiele: a) A = P(a) [(a) & (x. (x) -> P(x))] -> (x. P(x) -> (x)) x.x = a [a = a & (x. (x = a) -> P(x))] -> (x. P(x) -> (x = a)) Circ(A;P) |= x. P(x) <-> (x = a) b) A = ¬P(a) [¬(a) & (x. (x) -> P(x))] -> (x. P(x) -> (x)) x.false [¬false & (x. false -> P(x))] -> (x. P(x) -> false) Circ(A;P) |= x. P(x) <-> false äquivalent: x. ¬P(x) c) A = P(a) & P(b) [(a) & (b) &(x. (x) -> P(x))] -> (x. P(x) -> (x)) x.x = a v x = b [(a = a v a = b) & (b = a v b = b) & (x. (x = a v x = b) -> P(x))] -> (x. P(x) -> (x = a v x = b)) Circ(A;P) |= x. P(x) <-> (x = a v x = b) d) A = P(a) v P(b) 2 Substitutionen: x.P(a) & x = a [(a) v (b) &(x. (x) -> P(x))] -> (x. P(x) -> (x)) [((P(a) & a = a) v (P(a) & b = a)) & (x. (P(a) & x = a) -> P(x))] -> (x. P(x) -> (x = a & P(a))) P(a) -> (x. P(x) -> (x = a & P(a))) P(a) -> (x. P(x) -> (x = a)) & P(a) P(a) -> (x. P(x) -> (x = a)) x.P(b) & x = b analog: [((P(b) & b = a) v (P(b) & b = b)) & (x. (P(b) & x = b) -> P(x))] -> (x. P(x) -> (x = b & P(b‚))) P(b) -> (x. P(x) -> (x = b)) daraus wegen A -> B, C -> D |- A v C -> C v D: Circ(A;P) |= x. P(x) <-> (x = a) v x. P(x) <-> (x = b) e) A = x. Q(x) -> P(x) [(x. Q(x) -> (x)) &(x. (x) -> P(x))] -> (x. P(x) -> (x)) x.Q(x) [(x. Q(x) -> Q(x)) & (x.Q(x) -> P(x))] -> (x. P(x) -> Q(x)) Circ(A;P) |= x. P(x) <-> Q(x) Wie benutzt man diese Technik? Einführung Prädikat ab, das minimiert wird. Bird(x) & ¬ab(x) -> Flies(x) pro Default-Regel ein eigenes ab. Anwendung FP etwa: minimiere Affects(a,f,s) Allerdings: Version von Circ wie oben noch nicht ausreichend, Prädikate müssen beim Vergleich von Modellen variieren dürfen. Sei T eine (endl. Menge von) Formel(n), P ein zu minimierendes Prädikatensymbol, s* ein Tupel von Prädikats- und Funktionssymbolen. Wir definieren eine Relation ≤P,s* auf Modellen von T wie folgt. M1 ≤P,s* M2 gdw 1) M1 und M2 stimmen in der Interpretation aller Symbole außer P und denen in s* überein, 2) die Interpretation von P in M1 ist Teilmenge der Interpretation von P in M2. Def.: Sei T Formel, P Prädikatensymbol, s* Tupel von Prädikaten-/Funktionssymbolen. Die Circumscription von P in T mit variierenden Symbolen s*, Circ[T;P;s*], ist die Formel 2. Ordnung: T & ¬ q,r* [T(q,r*) & q < P] äquivalent: T & q,r* [(T(q,r*) & q ≤ P) -> P ≤ q] hier ist T(q,r*) die Formel, die entsteht, indem man in T jedes Vorkommen von P durch die Prädikatsvariable q und jedes Vorkommen eines Symbols in s* durch eine entsprechende Variable ersetzt. T = Bird(Tw) & [Bird(x) & ¬ab(x) -> Flies(x)] Circ(T; ab; Flies) |= Flies(Tw) Bird(Tw) & [Bird(x) & ¬ab(x) -> Flies(x)] & q,f [Bird(Tw) & (Bird(x) & ¬q(x) -> f(x)) & q ≤ ab) -> ab ≤ q] Substituiere: q(x) := false; f(x) := Bird(x) [Bird(Tw) & (Bird(x) & ¬false -> Bird(x)) & false ≤ ab) -> ab ≤ false] daraus ableitbar: x [ab(x) -> false] , also x [¬ab(x)] damit ¬ab(Tw) und Flies(Tw). Weitere Verallgemeinerungen der Circumscription: parallele Circ. mehrere Prädikate, Circ. mehrerer Präd. mit unterschiedlicher Präferenz. 3. Anwendung der Circumscription auf Frame Problem Situationskalkül. McCarthy, Hayes, 1963, 1969 Situationen: Schnappschüsse von Weltzuständen, entsprechen Folgen von Aktionen Fluents: zeitabhängige Eigenschaften, können verschiedene Werte annehmen (etwa w,f) Aktionen: führen von Situation zu Nachfolgesituation holds(f,s) result(a,s) S0 f ist wahr in s Situation nach Ausführen von a in s Anfangszustand Universelles Frame Axiom: [Holds(f, Result(a,s)) <-> Holds(f,s)] <- ¬ Affects(a,f,s) Idee: statt zu spezifizieren, welche Aktion welches Fluent beeinflusst, minimiere Affects (oder ersetze Affects durch Ab und minimiere Ab) und lasse dabei Holds variieren. gegeben: betrachte: Konjunktion von Effekt-Axiomen, Constraints und Beobachtungen S Circ(S & UFA; Ab; Holds) Beispiel (das funktioniert): 2 Geräte, an in S0, können durch Toggle1 und Toggle2 aus- und angeschaltet werden. 1) Holds(On1, S0) 2) Holds(On2, S0) 3) Holds(On1,Result(Toggle1,s)) <-> ¬Holds(On1,s) 4) Holds(On2,Result(Toggle2,s)) <-> ¬Holds(On2,s) Unique names assumption: UFA UNA[f1,...,fk] ist Abkürzung für fi(x1,...,xm) ≠ fj(y1,...,yn) für alle i < j ≤ k und fi(x1,...,xm) = fi(y1,...,ym) -> [x1 = y1 & ... & xm = ym] i ≤ k wir brauchen 5) UNA[S0,Result] 6) UNA[On1,On2] 7) UNA[Toggle1, Toggle2] Es gilt: Circ(S & UFA; Ab; Holds) |= Ab(a,f,s) <-> [a = Toggle1 & f = On1] v [a = Toggle2 & f = On2] Beweis: etwas länglich Beispiel (das nicht funktioniert): Yale Shooting Problem 1) Holds(Loaded(Result(Load,s)) 2) ¬Holds(Alive, Result(Shoot,s)) <- Holds(Loaded,s) 3) Holds(Alive,S0) 4) ¬Holds(Loaded,S0) 5) UNA[Load,Wait,Shoot] & UNA[Alive, Loaded] & UNA[S0,Result] Betrachte Situation nach Load, Wait, Shoot Es gilt: Circ(S & UFA; Ab; Holds) |≠ ¬Holds(Alive,Result(Shoot,Result(Wait,Result(Load,S0)))) Beweis: Betrachte ein Modell M, so dass M |= Holds(Loaded, Result(Load,S0)) M |= ¬Holds(Loaded, Result(Wait, Result(Load,S0))) M |= Holds(Alive,Result(Shoot,Result(Wait,Result(Load,S0)))) Solche Modelle existieren. In ihnen gilt: Ab(Load, Loaded, S0) und Ab(Wait, Loaded,Result(Load,S0)) keine weiteren Abnormalities. Nicht weiter zu minimieren, also minimales Modell. Gewehr entlädt sich auf mysteriöse Weise. Anomales Modell. S0 Result(Load,S0) Result(Wait,...) Result(Shoot,...) Alive ¬Loaded Alive Loaded Alive Loaded ¬Alive Loaded ab(Load,Loaded,S0) Alive ¬Loaded Alive Loaded ab(Shoot,Alive, ...) Alive ¬Loaded Alive ¬Loaded ab(Load,Loaded,S0) ab(Wait, Loaded, ...) Bedeutung für Forschung: 1. Nicht beschränkt auf Circumscription 2. Tritt nicht nur auf bei Aktionen mit Vorbedingungen 3. Allgemein als Herausforderung für logikorientierten Ansatz betrachtet. Lösungsversuche: 1. Chronologische Minimierung Beobachtung: Im Yale-Shooting Szenario entsteht das nicht-intendierte Modell durch unnötig frühe Veränderung. Idee: Veränderungen (Abnormalitäten) so weit wie möglich rauszögern. (Kautz, Shoham, Lifschitz) Formalisierung: Def.: Ein Situationsterm s1 ist Vorläufer eines Situationsterms Result(a,s2) gdw. 1) s1 = s2 oder 2) s1 ist Vorläufer eines Situationsterms s3 und s3 ist Vorläufer von s2. Def.: M1 ist chronologisch (mindestens) so klein wie M2, M1 ≤c M2, falls gilt: 1) M1 und M2 stimmen in der Interpretation aller Symbole außer Holds und Ab überein 2) für alle Situationsterme s gilt • {(a,f) | (a, f, M1[[s]]) in M1[[ab]]} Teilmenge von {(a,f) | (a, f, M2[s]]) in M2[[ab]]} oder • es gibt einen Vorläufer s' von s so dass {(a,f) | (a, f, M1[[s']]) in M1[[ab]]} echte Teilmenge von {(a,f) | (a, f, M2[s']]) in M2[[ab]]} Sei S die Konjunktion einer Menge von Effekt Axiomen, Domain Constraints und Beobachtungen zusammen mit den Baumaxiomen und dem universellen Frame Axiom. F ist Konsequenz der chronologischen Minimierung von S gdw. F in allen chronologisch minimalen Modellen von S gilt. Entsprechendes Circumscriptionsaxiom wurde von Kautz angegeben. Yale Shooting Problem gelöst: unintendiertes Modell ist nicht chronologisch minimal, da im intendierten Modell Abnormalität später auftritt. Scheint für Prediction zu funktionieren. Aber: Erklärung (Postdiction). Stolen car scenario (Kautz). Auto morgens in Parkhaus abgestellt, abends nicht vorgefunden, Schluß: Auto wurde unmittelbar vorher gestohlen. S |=c ¬Ab(Wait, Stolen, S0) & Ab(Wait, Stolen, Result(Wait,S0)) 2. Kausale Minimierung bisher: Veränderung der zugrundeliegenden Logik, jetzt: Veränderung der Modellierung Unintendiertes Modell in YSP weist Veränderungen auf, die nicht durch Aktionen erklärt werden können. 2 neue Prädikate: Causes(a,f,v): Precond(f,v,a): Aktion a bewirkt, dass Fluent f Wahrheitswert v bekommt. Fluent f muß Wahrheitswert v haben, damit Aktion a Effekt haben kann neue Sorte truth value, Konstanten True, False, Axiom (CM1) True ≠ False Precond und Causes werden minimiert. Dient auch zur Lösung des Qualifikation Problems: In order to fully represent the conditions for the successful performance of an action, an impractical and implausible number of qualifications would have to be included in the sentences expressing them (J. McCarthy, 1980) (CM2) [Success(a,s) & Causes(a,f,v)] -> [Holds(f, Result(a,s) <-> v = True] (CM3) ¬Affects(a,f,s) -> [Holds(f, Result(a,s)) <-> Holds(f,s)] CM3 besagt, dass alle Änderungen durch Aktionen verursacht sein müssen. Success und Affects sind hier Abkürzungen: Success(a,s) = Forall f [Precond(f,v,a) -> [Holds(f,s) <-> v = True]] Affects(a,f,s) = Success(a,s) & Exists v Causes(a,f,v) YSP: 1) Holds(Alive,S0) 2) ¬Holds(Loaded,S0) 3) UNA[Load,Wait,Shoot] & UNA[Alive, Loaded] & UNA[S0,Result] 4) Causes(Load,Loaded,True) 5) Causes(Shoot, Alive, False) 6) Precond(Loaded,True,Shoot) Sei S die Konjunktion aus 1,...,6,CM1,CM2,CM3 Es gilt: Circ[S; Causes, Precond; Holds] |= ¬Holds(Alive,Result(Shoot,Result(Wait,Result(Load,S0)))) Beweis: Es sei S1 = Result(Load,S0), S2 = Result(Wait,S1), S3 = Result(Shoot,S2) Die Minimierung von Causes und Precond bewirkt, dass 4,5,6 die einzigen gültigen Instanzen von Causes und Precond sind. D.h. wir haben: Causes(a,f,v) <-> [a = Load & f = Loaded & v = True] v [a = Shoot & f = Alive & v = False] Precond(f,v,a) <-> [f = Loaded & v = True & a = Shoot] Damit bekommen wir Success(Load,S0) und mit Causes(Load,Loaded,True) aus (CM2) Holds(Loaded,S1). Da es kein Causes(Wait,Loaded,v) gibt, gilt ¬Affects(Wait,Loaded,S1) und mit CM3 Holds(Loaded, S2). Wir haben Success(Shoot,S2). Daraus ergibt sich mit 5 aus CM2 ¬Holds(Alive, S3). Allerdings auch hier wieder Probleme: a) Modellierung kontextabhängiger Effekte (Trick: pro Kontext neue Aktion) b) domain constraints und indirekte Effekte. c) Postdiction zu c) Stolen car scenario SC1) ¬Holds(Stolen, S0) SC2) S2 = Result(Wait, Result(Wait,S0)) SC3) Holds(Stolen,S2) Aus diesen Axiomen und CM3 folgt: Affects(Wait,Stolen,S0) v Affects(Wait, Stolen,Result(Wait,S0)) Daraus kriegt man mit der Definition von Affects: Exists v Causes(Wait,Stolen,v) & [Success(Wait,S0] v Success(Wait,Result(Wait,S0))] Hieraus kriegt man mit CM2 Causes(Wait,Stolen,True) Offensichtlich nicht intendiert also: noch keine zufriedenstellende Lösung Beobachtung: Formulierung als Logikprogramm führt nicht zu Problemen bei YSP: Holds(Loaded,Result(Load,s)) Affects(Shoot,Alive,s) <- Holds(Loaded,s) Holds(Alive, S0) Holds(f,Result(a,s)) <- Holds(f,s) & not Affects(a,f,s) Univ. Frame Axiom Prop.: Aus obigem Programm lässt sich ableiten: not Holds(Alive,Result(Shoot,Result(Wait,Result(Load,S0))) wieso? Direktionalität der Regeln. a <- not b ≠ b <- not a Abkürzungen: S1 = Result(Load,S0) S2 = Result(Wait,S1) S3 = Result(Shoot,S2) not Holds(Alive,S3) Holds(Alive,S3) Holds(Alive,S2) & not Affects(Shoot, Alive, S2) Affects(Shoot, Alive, S2) Holds(Loaded,S2) Holds(Loaded,S1) & not Affects(Wait,Loaded, S1) Affects(Wait,Loaded, S1) [] FAIL [] FAIL