AR: clausale logica De stap naar: resolutie
2 Clausale vorm Veralgemeende vorm van de formules: x1 … xk A1 A2 … Am B1 B2 … Bn Horn clauses is het bijzonder geval met m = 1 We veronderstellen dat S = T {~F} alleen bestaat uit clausale formules. Doel: bewijs dat S inconsistent is.
3 Voorbeeld: Moore’s probleem BlauwofRood Blauw of Rood Gegeven 3 blokken: Bewijs dat er een blauw blok naast een rood blok staat!
4 Moore’s probleem (2): Dit zou een geval-analyse vereisen! In clausale vorm: blauw(Blok1)rood(Blok3) blauw(Blok2) rood(Blok2) naast(Blok1,Blok2)naast(Blok2,Blok1)naast(Blok2,Blok3)naast(Blok3,Blok2) Bewijs: of false naast(b1,b2) blauw(b1) rood(b2) is inconsistent. b1 b2 naast(b1,b2) blauw(b1) rood(b2) PROBLEEM: Modus ponens is niet geschikt voor blauw(Blok2) rood(Blok2)
5 hoog_gequalificeerd(x) phd(x) vroeg_verdienen(x) ~phd(x) rijk(x) hoog_gequalificeerd(x) rijk(x) vroeg_verdienen(x) (1)(2)(3)(4) Introductie van negatie in bodies is equivalent: Voorbeeld: Bewijs: rijk(Ik) Waarom equivalent? (2) is equivalent met verdienen(x) phd(x) vanwege A ~B A B
6 Disjunctie versus negatie in het algemeen: x1 … xk A1 A2 … Am B1 B2 … Bn is equivalent aan: x1 … xk A1 B1 B2 … Bn ~A2 … ~Am of ook aan: x1 … xk Ai B1 B2 … Bn ~A1 .... ~Am Bewijs: A ~B A B en basis relaties tussen , and ~ A ~B A B
7 Het resolutie principe A1 A2 … Am B1 … B … Bn C1 ... B … Ck D1 D2 … Dl A1 A2 … Am C1 .... Ck B1 .... Bn D1 D2 … Dl B1 .... Bn D1 D2 … Dl Propositie geval: Correctheid: duidelijk want: maak van alle andere disjuncten genegeerde body- atomen, pas dan veralgemeende modus ponens toe, breng al die genegeerde body-atomen terug als disjuncten in het hoofd.
8 Resolutie: predicaten logica waarbij = mgu(B,B’). Correctheid: door correctheid van het gegronde geval, toegepast op alle instantiaties van deze regel A1 A2 … Am B1 … B … Bn C1 ... B’ … Ck D1 D2 … Dl (A1 A2 … Am C1 .... Ck) (B1 .... Bn D1 D2 … Dl) (B1 .... Bn D1 D2 … Dl)
9 Kan ook in andere vormen: In conjunctieve normaal vorm: met = mgu(B,B’). A1 A2 … Am ~B1 … ~B … ~Bn C1 ... B’ … Ck ~D1 ~D2 … ~Dl (A1 A2 … Am C1 .... Ck) (~B1 .... ~Bn ~D1 ~D2 … ~Dl) (~B1 .... ~Bn ~D1 ~D2 … ~Dl)
10 Opnieuw Moore’s voorbeeld blauw(Blok2) rood(Blok2) rood(Blok2) naast(Blok2,b2) rood(b2) blauw(Blok1)rood(Blok3) blauw(Blok2) rood(Blok2) naast(Blok1,Blok2)naast(Blok2,Blok1)naast(Blok2,Blok3)naast(Blok3,Blok2) rood(Blok2) naast(Blok2,Blok3) rood(Blok3) rood(Blok2) naast(Blok2,Blok3) false naast(b1,Blok2) blauw(b1) false naast(b1,b2) blauw(b1) rood(b2) false naast(Blok1,Blok2) blauw(Blok1) false naast(Blok1,Blok2) false naast(b1,b2) blauw(b1) rood(b2)
11 Phd voorbeeld rijk(x) false rijk(Ik) false factoring vroeg_verdienen(x) hoog_gequal(x) rijk(y) hoog_gequal(y) rijk(x) rijk(x) vroeg_verdienen(x) rijk(x) rijk(y) vroeg_verdienen(y) hoog_gequal(y) phd(y) vroeg_verdienen(x) phd(x) hoog_gequal(x) phd(x) vroeg_verdienen(x) phd(x) rijk(x) hoog_gequal(x) rijk(x) vroeg_verdienen(x) (1)(2)(3)(4) false rijk(Ik)
12 Factoring: algemeen Zowel: met: is mgu(B,B’) A1 A2 … Am B1 … B … B’ … Bn (A1 A2 … Am B1 … B … … Bn) als: met: is mgu(A,A’). A1 … A … A’ … Am B1 … Bn (A1 … A … … Am B1 … Bn)
13 De nood aan factoring p q p q false p q false p q q p (p q) (p ~q) (~p q) (~p ~q) Zonder factoring is resolutie niet volledig ! Voorbeeld: bewijs {(p ~p) (q ~q)} inconsistent Normalizatie: Clausale vorm: p p q q p q q p Je kan nooit false krijgen !!!!
14 Reden? De lengte van een formule = het aantal atomen (false niet meegerekend): A1 A2 … Am B1 … B … Bn C1 ... B’ … Ck D1 D2 … Dl (A1 A2 … Am C1 .... Ck) (B1 .... Bn D1 D2 … Dl) (B1 .... Bn D1 D2 … Dl) LengteNM N + M - 2 In het vorige voorbeeld hadden alle formules lengte 2 Je kan NOOIT false (lengte 0) krijgen !
15 De resolutie procedure :=initial theory (inconsistent te bewijzen); S:= initial theory (inconsistent te bewijzen); Consistent:= false; Inconsistent:= false; While not(Consistent) and not(Inconsistent) do If false S Then Inconsistent := true Else If S contains no pair (F,G) resolvable and not yet resolved yet resolved Then Consistent:= true Then Consistent:= true Else SELECT a pair (F,G) from S, resolvable and not yet resolved; and not yet resolved; H:= factor( resolvent (F,G) ); H:= factor( resolvent (F,G) ); S:= S H S:= S H End-while
16 Gedrag onder Horn clause resolutie : false ... … ... false false ... … ... false ... … Lineaire resolutie !
17 Gedrag onder Algemene resolutie : Algemene resolutie ! … ... false
18 Lineaire resolutie: De belangrijkste verschillen met Horn clauses: Bij Horn clauses waren de bewijzen altijd LINEAIR ! we starten met de “goal” dan gebruiken we een Horn clause om een nieuwe goal te berekenen enz. Clausale resolutie is NIET lineair Ook: factoring is soms nodig Lineair resolutie (een bewijs is een lineaire opeenvolging van resolutie stappen, startend van de goal) is één van de belangrijkste strategieen om resolutie efficient te maken.
19 Non-determinisme in de resolutie procedure SELECT a pair (F,G) : maakt het een ERG non- deterministische procedure. Het controle probleem voor resolutie is bijzonder moeilijk. Een bewijs is niet meer 1 (lineaire) tak in een boom, maar een subgraaf van de graaf van alle resoluties. Is het correct? Is het volledig? ? Bestaat er een strategie die volledig is???
20 Correctheid / Volledigheid ? Volledigheid: Er bestaat een volledige strategie (standaard vb: de Herbrand stellingenbewijzer). Correctheid: Als de procedure Inconsistent teruggeeft: Dan is false toegevoegd Dan is false een logisch gevolg van S (want de resolutie stap is correct). Dus in alle modellen van S is ook false waar Dus S heeft geen modellen
21 … ... Correctheid / Volledigheid (2) ? Als de procedure Consistent teruggeeft: Dan zijn ALLE MOGELIJKE resolutie stappen uitgevoerd, zonder false te bereiken. Stel toch inconsistent. Er bestaat een VOLLEDIGE strategie: die levert na eindige tijd wél false Maar die doet (een deel van) dezelfde resolutie stappen !! Oorspronkelijke gaf ook Oorspronkelijke gaf ook false … ... … … false
AR voor volledige predicaten logica Normalizatie naar clausale form
23 Wat is er meer nodig voor volledige predicaten logica? NIETS! Clausale logica is equivalent aan volledige predicaten logica: elke theorie T in FOL (first order predicate logic) kan automatisch omgezet worden in een clausale theorie T’, zo dat: T is inconsistent asa T’ is inconsistent
24 Propositioneel: via conjunctieve normal form: Elke formule is equivalent aan een formule van de vorm: (A1 ... An) (B1 … Bm) … (C1 … Ck) waarin alle Ai, Bi, …, Ci ofwel atomair of ~atomair. Idee: p q p q breng alle ~ zo ver mogelijk naar binnen gebruik de distributiviteit van en p q q p q ~p Uiteindelijk: p1 … pn ~q1 … ~qm p1 … pn q1 … qm
25 Predicaten geval: hoofd-stappen Dit vereist soms nieuwe namen voor variabelen. Vb.: x p(x) x q(x) x z p(x) q(z) Merk: x bewolkt(x) x zonnig(x) is niet equivalent met x bewolkt(x) zonnig(x) Prenix normaal vorm (Q1 x) (Q2 y) …(Qn z) F or heeft geen quantoren! Conjunctieve normaal vorm: (Q1 x) (Q2 y) …(Qn z) (.. .. ) (.. .. ) .. (.. .. ) Die 2 stappen worden vermengd.
26 Predicaten geval: vervolg Skolem functies: zoveel argumenten als omsluitende -variabelen Skolem normaal vorm: transformeer naar: ( x) ( y) …( z) (.. .. ) (.. .. ) .. (.. .. ) x rich(x) wordt rich(Sk), met Sk een nieuwe constante (‘skolem constante’) die nog niet in het alphabet voorkomt. Moeilijker: indien genest voorkomt binnen : ‘Everyone has a heart’ x person(x) y heart(y) has(x,y) Niet correct: x person(x) heart(H) has(x,H) Correct: x person(x) heart(H(x)) has(x,H(x))
27 Predicaten geval: vervolg Clausale vorm: x y z (p(x) ~q(y) ~r(y)) (r(A) q(z)) (r(A) q(z)) ~s(x,y) ~s(x,y) S = { x y (p(x) ~q(y) ~r(y)), z (r(A) q(z)), z (r(A) q(z)), x y ~s(x,y) } x y ~s(x,y) } S = {p(x) q(y) r(y), r(A) q(z)), r(A) q(z)), false s(x,y) } false s(x,y) } Disjuncties:
28 Expliciete Procedure: 1. Elimineer en . 2. Breng de negaties naar binnen: ~(~p) p, ~(p q) ~p ~q, (analoog voor ) ~ x x ~, ~ x x ~ 3. Standardizeer variabele namen (maak verschillend). PRENEX NORMAAL VORM 4. Breng quantoren naar voor. SKOLEMS INTRODUCEREN 5. Elimineer . CONJUNCTIEVE VORM 6. Disjuncties naar binnen. VERZAMELING DISJUNC. 7. Laat weg. 8. Laat weg. CLAUSALE VORM 9. ~atomen naar andere kant.
29 Marcus voorbeeld: x y ~(man(x) heerser(y) probeerverm(x,y)) ~loyaalaan(x,y) x y ~man(x) ~heerser(y) ~probeerverm(x,y) ~loyaalaan(x,y) false man(x) heerser(y) probeerverm(x,y) loyaalaan(x,y) x loyaalaan(x,f(x)) loyaalaan(x,f(x)) Feiten 1., 2., 4. en 8. waren al o.k.: ex.: heerser(Cesar) 3. x Pompeier(x) Romein(x) : o.k. ! 6. x y loyaalaan(x,y) 7. x y man(x) heerser(y) probeerverm(x,y) ~loyaalaan(x,y)
30 Axioma’s in Normaal vorm: 1. man(Marcus) 2. Pompeier(Marcus) 3. Romein(x) Pompeier(x) 4. heerser(Cesar) 5. loyaalaan(x,Cesar) haat(x,Cesar) Romein(x) 6. loyaalaan(x,f(x)) 7. false man(x) heerser(y) probeerverm(x,y) loyaalaan(x,y) 8. probeerverm(Marcus,Cesar) Te bewijzen: haat(Marcus,Cesar) Negatie: ~haat(Marcus,Cesar) Normaal Vorm: false haat(Marcus,Cesar)
31 Resolutie bewijs (1): false haat(Marcus,Cesar) loyaalaan(x,Cesar) haat(x,Cesar) Romein(x) loyaalaan(Marcus,Cesar) Romein(Marcus) {x/Marcus}5. Romein(x) Pompeier(x) loyaalaan(Marcus,Cesar) Pompeier(Marcus) {x/Marcus}3. Pompeier(Marcus) loyaalaan(Marcus,Cesar) {}2.
32 Resolutie bewijs (2) loyaalaan(Marcus,Cesar) false man(x) heerser(y) probeerverm(x,y) loyaalaan(x,y) false man(Marcus) heerser(Cesar) probeerverm(Marcus,Cesar) 7.{x/Marcus,y/Cesar} man(Marcus) false heerser(Cesar) probeerverm(Marcus,Cesar) 1. {} heerser(Cesar) false probeerverm(Marcus,Cesar) 4.{} probeerverm(Marcus,Cesar) false 8.{}
33 Een voorbeeld uit groepentheorie: Stel: een groepsoperatie. Noteer prefix: p(x,y,z) x y = z Definitie van een monoide, met linker-neutraal en linker-invers element: is overal gedefinieerd: x y z p(x,y,z) is associatief:(x y) z = x (y z) uv x y z u v w (p(x,y,u) p(y,z,v)) (p(u,z,w) p(x,v,w)) (1) (2)
34 Een voorbeeld uit groepentheorie (2): heeft een linker-neutraal en linker-invers element: x ( y p(x,y,y) y z p(z,y,x) De stelling: er bestaat ook een rechter-invers ! (3) x ( y p(x,y,y) y z p(y,z,x) (4) Automatisch te bewijzen met resolutie.
35 Normalisatie: (1) x y z p(x,y,z) Stappen: 1,2,3,4: o.k. Stap 5: skolemisatie: x y p(x,y,m(x,y)) Stappen: 6,7: o.k. Stap 8: clausale vorm: p(x,y,m(x,y))
36 Normalisatie (vervolg): (2) x y z u v w (p(x,y,u) p(y,z,v)) (p(u,z,w) p(x,v,w)) Stap 1: elimineer en : x y z u v w (p(x,y,u) p(y,z,v)) ((p(u,z,w) p(x,v,w)) (p(x,v,w) p(u,z,w))) ((p(u,z,w) p(x,v,w)) (p(x,v,w) p(u,z,w))) x y z u v w (p(x,y,u) p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) x y z u v w ~(p(x,y,u) p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w)))
37 Normalisatie (vervolg): x y z u v w ~(p(x,y,u) p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) x y z u v w (~p(x,y,u) ~p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) Stap 2: breng negaties naar binnen: Stappen: 3,4,5 o.k. Stap 6: breng disjuncties naar binnen: x y z u v w ((~p(x,y,u) ~p(y,z,v)) (~p(u,z,w) p(x,v,w))) ((~p(x,y,u) ~p(y,z,v)) (~p(x,v,w) p(u,z,w))) A (B C) A (B C) = (A B) (A C) A B A C
38 Normalisatie (vervolg): x y z u v w ((~p(x,y,u) ~p(y,z,v)) (~p(u,z,w) p(x,v,w))) ((~p(x,y,u) ~p(y,z,v)) (~p(x,v,w) p(u,z,w))) x y z u v w ((~p(x,y,u) ~p(y,z,v)) (~p(u,z,w) p(x,v,w))) ((~p(x,y,u) ~p(y,z,v)) (~p(x,v,w) p(u,z,w))) + verwijder redundante haakjes: ( ) x y z u v w (~p(x,y,u) ~p(y,z,v) ~p(u,z,w) p(x,v,w)) (~p(x,y,u) ~p(y,z,v) ~p(x,v,w) p(u,z,w)) Stappen 7,8: elimineer en : ~p(x,y,u) ~p(y,z,v) ~p(x,v,w) p(u,z,w) ~p(x,y,u) ~p(y,z,v) ~p(u,z,w) p(x,v,w)