380 likes | 533 Views
AR: clausale logica. De stap naar: resolutie. Veralgemeende vorm van de formules:. x1 … xk A1 A2 … Am B1 B2 … Bn. Clausale vorm. Horn clauses is het bijzonder geval met m = 1 We veronderstellen dat S = T {~F} alleen bestaat uit clausale formules.
E N D
AR: clausale logica De stap naar: resolutie
Veralgemeende vorm van de formules: • x1 … xk A1 A2 … Am B1 B2 … Bn Clausale vorm • 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.
BlauwofRood Voorbeeld: Moore’s probleem • Gegeven 3 blokken: • Bewijs dat er een blauw blok naast een rood blok staat!
In clausale vorm: blauw(Blok1) rood(Blok3) blauw(Blok2) rood(Blok2) naast(Blok1,Blok2) naast(Blok2,Blok1) naast(Blok2,Blok3) naast(Blok3,Blok2) • Bewijs: • offalse naast(b1,b2) blauw(b1) rood(b2)is inconsistent. b1 b2 naast(b1,b2) blauw(b1) rood(b2) Dit zou een geval-analyse vereisen! Moore’s probleem (2): • PROBLEEM: Modus ponens is niet geschikt voorblauw(Blok2) rood(Blok2)
hoog_gequalificeerd(x) phd(x) vroeg_verdienen(x) ~phd(x) rijk(x) hoog_gequalificeerd(x) rijk(x) vroeg_verdienen(x) (1) (2) (3) (4) • Bewijs: rijk(Ik) • Waarom equivalent? • (2) is equivalent met verdienen(x) phd(x) vanwegeA ~B A B Introductie van negatie in bodies is equivalent: • Voorbeeld:
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 Disjunctie versus negatie in het algemeen: x1 … xk A1 A2 … Am B1 B2 … Bn
A1 A2 … Am B1 … B … Bn C1 ... B … Ck D1 D2 … Dl A1 A2 … Am C1 .. .. Ck B1 .. .. Bn D1 D2 … Dl Het resolutie principe • 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.
A1 A2 … Am B1 … B … Bn C1 ... B’ … Ck D1 D2 … Dl (A1 A2 … Am C1 .. .. Ck) (B1 .. .. Bn D1 D2 … Dl) Resolutie: predicaten logica • waarbij = mgu(B,B’). • Correctheid: • door correctheid van het gegronde geval, toegepast op alle instantiaties van deze regel
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)
blauw(Blok1) rood(Blok3) blauw(Blok2) rood(Blok2) naast(Blok1,Blok2) naast(Blok2,Blok1) naast(Blok2,Blok3) naast(Blok3,Blok2) blauw(Blok2) rood(Blok2) rood(Blok3) rood(Blok2) naast(Blok2,b2) rood(b2) naast(Blok2,Blok3) rood(Blok2) naast(Blok2,Blok3) rood(Blok2) false naast(b1,b2) blauw(b1) rood(b2) false naast(b1,Blok2) blauw(b1) blauw(Blok1) naast(Blok1,Blok2) false naast(Blok1,Blok2) false Opnieuw Moore’s voorbeeld false naast(b1,b2) blauw(b1) rood(b2)
false rijk(Ik) hoog_gequal(x) phd(x) vroeg_verdienen(x) phd(x) rijk(x) hoog_gequal(x) rijk(x) vroeg_verdienen(x) (1) (2) (3) (4) vroeg_verdienen(x) phd(x) hoog_gequal(y) phd(y) vroeg_verdienen(x) hoog_gequal(x) rijk(y) hoog_gequal(y) vroeg_verdienen(x) rijk(x) rijk(y) vroeg_verdienen(y) rijk(x) rijk(x) factoring rijk(x) false rijk(Ik) false Phd voorbeeld
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) Factoring: algemeen
q q p q p q q p false p q p p p q q p De nood aan factoring • Zonder factoring is resolutie niet volledig ! • Voorbeeld: bewijs{(p ~p) (q ~q)}inconsistent • Normalizatie: (p q) (p ~q) (~p q) (~p ~q) • Clausale vorm: Je kan nooitfalse krijgen !!!!
Lengte A1 A2 … Am B1 … B … Bn C1 ... B’ … Ck D1 D2 … Dl (A1 A2 … Am C1 .. .. Ck) (B1 .. .. Bn D1 D2 … Dl) Je kan NOOIT false (lengte 0) krijgen ! Reden? • De lengte van een formule = het aantal atomen (false niet meegerekend): N M N + M - 2 • In het vorige voorbeeld hadden alle formules lengte 2
Whilenot(Consistent) and not(Inconsistent) do Else Else SELECT a pair (F,G) from S, resolvable and not yet resolved; De resolutie procedure S:=initial theory (inconsistent te bewijzen); Consistent:= false; Inconsistent:= false; Iffalse SThenInconsistent := true IfScontains no pair(F,G)resolvable and not yet resolved ThenConsistent:= true H:= factor( resolvent (F,G) ); S:= S H End-while
false ... … ... false ... … ... false ... … ... ... Gedrag onder Horn clause resolutie : Lineaire resolutie ! false
… ... … ... … ... … ... … ... … ... … ... … ... false Gedrag onderAlgemene resolutie : Algemene resolutie !
Bij Horn clauseswaren de bewijzen altijd LINEAIR ! Lineaire resolutie: • De belangrijkste verschillen met Horn clauses: • 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.
Bestaat er een strategie die volledig is??? 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? ?
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
… ... … ... … ... … ... … ... … ... … ... … ... … … false … ... … ... … ... Oorspronkelijke gaf ook false 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 !!
AR voor volledige predicaten logica Normalizatie naar clausale form
NIETS! Wat is er meer nodig voor volledige predicaten logica? • 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: Tis inconsistentasaT’is inconsistent
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 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.
Prenix normaal vorm (Q1 x) (Q2 y) …(Qn z) F heeft geen quantoren! or 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) • Conjunctieve normaal vorm: (Q1 x) (Q2 y) …(Qn z) ( .. .. ) ( .. .. ) .. ( .. .. ) Predicaten geval: hoofd-stappen • Die 2 stappen worden vermengd.
Skolem normaal vorm: transformeer naar: ( x) ( y) …( z) ( .. .. ) ( .. .. ) .. ( .. .. ) • ‘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)) Skolem functies: zoveel argumenten als omsluitende -variabelen Predicaten geval: vervolg • 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 :
S = {x y (p(x) ~q(y) ~r(y)) , z (r(A) q(z)) , x y ~s(x,y) } S = {p(x) q(y) r(y) , r(A) q(z)) , false s(x,y) } Predicaten geval: vervolg • Clausale vorm: • Disjuncties: x y z (p(x) ~q(y) ~r(y)) (r(A) q(z)) ~s(x,y)
4. Breng quantoren naar voor. PRENEX NORMAAL VORM 5. Elimineer . SKOLEMS INTRODUCEREN 6. Disjuncties naar binnen. CONJUNCTIEVE VORM 7. Laat weg. VERZAMELING DISJUNC. 9. ~atomen naar andere kant. CLAUSALE VORM 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). 8. Laat weg.
x loyaalaan(x,f(x)) loyaalaan(x,f(x)) Marcus voorbeeld: • Feiten 1. , 2. , 4. en 8. waren al o.k.: • ex.:heerser(Cesar) • 3.x Pompeier(x) Romein(x) : o.k. ! • 6.x yloyaalaan(x,y) • 7. xy man(x) heerser(y) probeerverm(x,y) ~loyaalaan(x,y) xy~(man(x) heerser(y) probeerverm(x,y)) ~loyaalaan(x,y) xy~man(x)~heerser(y)~probeerverm(x,y) ~loyaalaan(x,y) false man(x)heerser(y)probeerverm(x,y) loyaalaan(x,y)
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)
5. loyaalaan(x,Cesar) haat(x,Cesar) Romein(x) {x/Marcus} loyaalaan(Marcus,Cesar) Romein(Marcus) 3. Romein(x) Pompeier(x) {x/Marcus} loyaalaan(Marcus,Cesar) Pompeier(Marcus) 2. {} Pompeier(Marcus) loyaalaan(Marcus,Cesar) Resolutie bewijs (1): false haat(Marcus,Cesar)
7. false man(x) heerser(y) probeerverm(x,y) loyaalaan(x,y) {x/Marcus,y/Cesar} false man(Marcus) heerser(Cesar) probeerverm(Marcus,Cesar) man(Marcus) 1. {} false heerser(Cesar) probeerverm(Marcus,Cesar) 4. heerser(Cesar) {} 8. false probeerverm(Marcus,Cesar) probeerverm(Marcus,Cesar) {} false Resolutie bewijs (2) loyaalaan(Marcus,Cesar)
u v Een voorbeeld uit groepentheorie: • Stel: een groepsoperatie. • Noteer prefix: p(x,y,z)xy = z • Definitie van een monoide, met linker-neutraal en linker-invers element: • is overal gedefinieerd: xyz p(x,y,z) (1) • is associatief: (x y) z = x (y z) xyzuvw (p(x,y,u) p(y,z,v)) (p(u,z,w) p(x,v,w)) (2)
Een voorbeeld uit groepentheorie (2): • heeft een linker-neutraal en linker-invers element: x(y p(x,y,y) yz p(z,y,x) (3) • De stelling: er bestaat ook een rechter-invers ! x(y p(x,y,y) yz p(y,z,x) (4) • Automatisch te bewijzen met resolutie.
xy p(x,y,m(x,y)) Normalisatie: • Stappen: 1,2,3,4: o.k. • Stap 5: skolemisatie: (1) xyz p(x,y,z) • Stappen: 6,7: o.k. • Stap 8: clausale vorm: p(x,y,m(x,y))
Normalisatie (vervolg): • Stap 1: elimineer en : (2) xyzuvw (p(x,y,u) p(y,z,v)) (p(u,z,w) p(x,v,w)) xyzuvw (p(x,y,u) p(y,z,v)) ((p(u,z,w) p(x,v,w)) (p(x,v,w) p(u,z,w))) xyzuvw (p(x,y,u) p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) xyzuvw ~(p(x,y,u) p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w)))
A (B C) A B A C Normalisatie (vervolg): xyzuvw ~(p(x,y,u) p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) • Stap 2: breng negaties naar binnen: xyzuvw (~p(x,y,u) ~p(y,z,v)) ((~p(u,z,w) p(x,v,w)) (~p(x,v,w) p(u,z,w))) • Stappen:3,4,5 o.k. • Stap 6: breng disjuncties naar binnen: A (B C) = (A B) (A C) xyzuvw ((~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)))
~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) Normalisatie (vervolg): xyzuvw ((~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))) xyzuvw ((~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: ( ) xyzuvw (~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 :