Innehåll Föreläsning 13-14 ÿsvarsextraktion ÿsundhet och fullständighet för resolution i redikatlogiken. Logik med tillämningar 02-03-12 och 02-03-14 ÿavsnitt 3, Kaitel 4.1 (Obs inte 2.7!) och 7.8 Svarsextraktion ÿofta ställer man frågor av tyen x(x) och med hjäl av resolution kan man (kanske) visa att det existerar ett x. ÿmen om man veta vilket/vilka x det gäller då? ÿvi kan använda svarsextraktion. ÿartificiell Intelligens Ett exemel De som har vingar och lägger ägg är fåglar x(has_wings(x) lays_eggs(x) is_bird(x)) Fåglar är djur y(is_bird(y) animal(y)) Klara lägger ägg och har vingar lays_eggs(klara) has_wings(klara) Finns det något djur? w(animal(w)) 1. has_wings(x) lays_eggs(x) is_bird(x) 2 is_bird(y) animal(y) 3. lays_eggs(klara) 4. has_wings(klara) 5. animal(w) 6. is_bird(y) {w y} 2, 5 7. has_wings(y) lays_eggs(y) {x y} 1, 6 8. has_wings(klara) {y Klara} 3, 7 9. [] 4, 8 ÿ Vi vet att det existerar ett djur men inte vem (om vi inte tjuvtittar å unifieringen). Träden i läsematerialet ÿ Slarviga, saknar tex beskrivning av vilken unifiering som gjorts. ÿ Vårt exemel som ett träd: is_bird(y) animal(y) animal(w) {w y} is_bird(y) has_wings(x) lays_eggs(x) is_bird(x) {x y} has_wings(w) lays_eggs(w) lays_eggs(klara) {y Klara} has_wings(klara) has_wings(klara) []
Lägg till ett svarsredikat ÿefter man gjort om frågan till klausulform gör man den till en tautologi. ÿi vårtexemel: animal(w) animal(w) ÿgör om resolutionen igen å exakt samma sätt som tidigare fast nu med svarsredikatet också. 6. is_bird(w) animal(w) {w y} 2, 5 7. has_wings(w) lays_eggs(w) animal(w) {x y} 1, 6 8. has_wings(klara) animal(klara) {y Klara} 3, 7 9. animal(klara) 4, 8 ÿoch då får vi vårt svar, det ett djur och denna någon är Klara! ÿmen vad händer om vi lägger till fakta om fågeln Jaco också? Hur vet vi att vi funnit alla lösningar som finns? ÿmåste generera fler bevis. Men man kan inte alltid söka efter alla lösningar. Vi kan få generiska svar också ÿ En grandarent är en förälder till en förälder x y z (arent(x, y) arent(y, z) grandarent(x,z)) Alla har en förälder y x arent(x, y) Finns det ett x och y så att x är grandarent till y? x y grandarent(x, y) ÿ Klausulerna: arent(x 1,y 1 ) arent(y 1,z 1 ) grandarent(x 1,z 1 ) arent(f(y 2 ), y 2 ) grandarent(x 3,y 3 ) 1. arent(x 1,y 1 ) arent(y 1,z 1 ) grandarent(x 1,z 1 ) 2. arent(f(y 2 ), y 2 ) 3. grandarent(x 3,y 3 ) 4. arent(y 2,z 1 ) grandarent(f(y 2 ),z 1 ) {x 1 f(y 2 ), y 1 y 2 }1,2 2. arent(f(w 2 ), w 2 ) (Dö om variablerna i 2) 5. grandarent(f(f(w 2 )),w 2 ) {y 2 f(w 2 ), z 1 w 2 }2,4 6. [] {x 3 f(f(w 2 )), y 3 w 2 }3,5 OBS! Exakt samma resolution med exakt samma unifieringar! 1. arent(x 1,y 1 ) arent(y 1,z 1 ) grandarent(x 1,z 1 ) 2. arent(f(y 2 ), y 2 ) 3. grandarent(x 3,y 3 ) grandarent(x 3,y 3 ) 4. arent(y 2,z 1 ) grandarent(f(y 2 ),z 1 ) {x 1 f(y 2 ), y 1 y 2 }1,2 2. arent(f(w 2 ), w 2 ) (Dö om variablerna i 2) 5. grandarent(f(f(w 2 )),w 2 ) {y 2 f(w 2 ), z 1 w 2 }2,4 6. grandarent(f(f(w 2 )), w 2 ) {x 3 f(f(w 2 )), y 3 w 2 }3,5 ÿom vi låter f(x) vara en funktion som talar om vad föräldern till x heter så visar vårt svar att för ett valfritt w 2 blir f(f(w 2 )) föräldern till föräldern till w 2 och då ufylls villkoren för vår fråga. ÿkan bli mer komlicerade extraktioner om frågorna innehåller flera redikat eller blir udelad i flera klausuler. Finns fler exemel i läsematerialet. Läs och förstå!
Exemel å flera redikat i frågan ÿanna, Bo och Cissi är läkare. Varje läkare som inte är en secialist, är en allmänläkare. Allmänläkare gillar inte skaleller och om man inte gillar forskning är man inte secialist. Anna gillar inte det Bo gillar och tvärtom. Anna gillar skaleller och forskning. ÿfinns det någon läkare som är en allmänläkare men inte secialist? Formler ÿ Använder redikaten läkare/1, secialist/1, allmänläkare/1, gillar/2. ÿ Anna, Bo och Cissi är läkare. läkare(anna) läkare(bo) läkare(cissi) ÿ Varje läkare som inte är en secialist, är en allmänläkare. x (läkare(x) secialist(x) allmänläkare(x)) ÿ Allmänläkare gillar inte skaleller och om man inte gillar forskning är man inte secialist. x (allmänläkare(x) gillar(x, skaleller)) x( gillar(x, forskning) secialist(x)) Formler ÿ Anna gillar inte det Bo gillar och tvärtom. x(gillar(bo, x) gillar(anna, x)) % Anna gillar inte det Bo gillar x( gillar(anna, x) gillar(bo, x)) % Bo gillar det Anna inte gillar ÿ Anna gillar skaleller och forskning. gillar(anna, skaleller) gillar(anna, forskning) ÿ Finns det någon läkare som är en allmänläkare men inte secialist? x (läkare(x) allmänläkare(x) secialist(x)) och tvärtom ÿ Översätts med en ekvivalens. ÿ "Den som står i skuggan står inte i solen och tvärtom Låt A = står i skuggan och B = står inte i solen. Första delen, A B, säger inget om det finns några andra latser än skuggan där man inte står i solen. ÿ Tänkbara tolkningar i naturligt sråk (1:a korrekt, 2:a vanlig feltolkning): "den som står i skuggan står inte i solen och den som inte står i solen står i skuggan (a b) ( b a) vilket om man tar bort blir ( a b) (b a) lägger till att alla som inte står i solen står i skuggan. Dvs det finns bara två latser att vara å: i solen eller i skuggan. "den som står i skuggan står inte i solen och den som står i solen står inte i skuggan" (a b) (b a) vilket om man tar bort blir ( a b) ( b a) Ingen ny information! Vi vet fortfarande inte om det finns fler latser förutom skuggan där man kan stå utan att stå i solen. Omvandling till klausulform 1. läkare(anna) 2. läkare(bo) 3. läkare(cissi) 4. läkare(x 4 ) secialist(x 4 ) allmänläkare(x 4 ) 5. allmänläkare(x 5 ) gillar(x 5, skaleller) 6. gillar(x 6, forskning) secialist(x 6 ) 7. gillar(bo, x 7 ) gillar(anna, x 7 ) 8. gillar(anna, x 8 ) gillar(bo, x 8 ) 9. gillar(anna, skaleller) 10. gillar(anna, forskning) 11. läkare(x 11 ) allmänläkare(x 11 ) secialist(x 11 ) Resolution 12. gillar(bo, forskning) 10 och 7 {x 7 forskning} 13. secialist(bo) 12 och 6 {x 6 Bo} 14. läkare(bo) allmänläkare(bo) 13 och 4 {x 4 Bo } 15. allmänläkare(bo) 14 och 2 16. läkare(bo) secialist(bo) 15 och 11 {x 11 Bo } 17. secialist(bo) 16 och 2 18. 17 och 13
Svarsextraktionen ÿgör om frågan till en tautologi. ÿ läkare(x 11 ) allmänläkare(x 11 ) secialist(x 11 ) (läkare(x 11 ) allmänläkare(x 11 ) secialist(x 11 )) ÿgör om resolutionen. ÿibland skaar man ett svarsredikat istället för att göra frågan till tautologi (men idén är densamma). ÿ läkare(x 11 ) allmänläkare(x 11 ) secialist(x 11 ) ans(x 11 ) Resolution igen 12. gillar(bo, forskning) 10 och 7 {x 7 forskning} 13. secialist(bo) 12 och 6 {x 6 Bo} 14. läkare(bo) allmänläkare(bo) 13 och 4 {x 4 Bo } 15. allmänläkare(bo) 14 och 2 16. läkare(bo) secialist(bo) ans(bo) 15och11{x 11 Bo } 17. secialist(bo) ans(bo) 16 och 2 18. ans(bo) 17 och 13 Allkvantifierade frågor ÿblir en skolemkonstant eller skolemfunktion införd i frågan. ÿvårt grandarent -exemel med ny fråga: Finns det för alla x ett y så att y är grandarent till x? x y grandarent(y,x) Negerad och i klausulform: grandarent(y 3,a) ÿman kan se det som att man försöker visa att det finns en erson a som inte har en grandarent. 1. arent(x 1,y 1 ) arent(y 1,z 1 ) grandarent(x 1,z 1 ) 2. arent(f(y 2 ), y 2 ) 3. grandarent(x 3,a) ans(x 3 ) 4. arent(y 2,z 1 ) grandarent(f(y 2 ),z 1 ) {x 1 f(y 2 ), y 1 y 2 } 1och 2 2. arent(f(w 2 ), w 2 ) (Dö om variablerna i 2) 5. grandarent(f(f(w 2 )),w 2 ) {y 2 f(w 2 ), z 1 w 2 }2 och4 6. ans(f(f(a))) {x 3 f(f(a)), w 2 a} 3 och 5 Kan tolkas som att det selar ingen roll vem man väljer för att visa att frågan är falsk så får man att denna erson ufyller formeln. Läs mer i häftet om att det är OK att ersätta konstanten (och skolemfunktioner) i frågan med en variabel. Detta ga att denna skolemkonstant/funktion inte kommer att unifieras bort utan finns kvar till slutet av beviset. Sammanfattning om svarsextraktion ÿförst gör man ett vanligt bevis. ÿgör målet till en tautologi genom att lägga till frågeredikaten. (Eller lägg till redikatet ans.) ÿgör ett nytt bevis å samma sätt som det första och alicera alla unifieringar å det nya målet. ÿklausulen som blir kvar å slutet av beviset är vårt svar. ÿ{1. (x 1 =y 1 ) (x 1 ) (y 1 ) 2. (d) 3. (x 3 =g) (x 3 =s) (x 3 =b) 4. (x 4 =y 4 ) t(x 4 ) t(y 4 ) 5. t(g) (g), 6. (g) t(g), 7. t(s) (s), 8. (s) t(s), 9. t(b) (g), 10. (g) t(b), 11. (x 11 )} Exemlet Portias ussel: Ny 11: (x 11 ) ans(x 11 )
12. (x 4 =b) t(x 4 ) (g) 4o10{y 4 b} 13. (x 3 =g) (x 3 =b) t(s) (g) PM 3 och 12 {x 4 x 3 } 14. t(s) ans(s) 8 och 11, {x 11 s} 15. (x 3 =g) (x 3 =b) (g) ans(s) 13 och 14 16. (d=b) (g) ans(s) PM 15 och 2, {x 3 d} 17. t(x 4 ) t(d) (x 4 ) PM2och4,{y 4 d} 18. t(x 4 ) t(b) (g) (x 4 ) ans(s) PM 16 och 17 19. (x 4 =s) t(x 4 ) 4och14,{y 4 s} 20.(b=s) (g) 10 och 19, {x 4 b} 21.(b=s) ans(g) 11 och 20, {x 11 g} 22. t(b) ans(s) ans(g) PM 14 och 21 23. t(x 4 ) (g) (x 4 ) ans(s) ans(g) 18 och 22 24. (g) (x 4 ) ans(s) ans(g) 22 och 23, {x 4 b} 25. (x 4 ) ans(s) ans(g) 11 och 24, {x 11 g} 26. ans(s) ans(g) ans(x 4 ) 11och25{x 11 x 4 } Gick inte så bra 12. (b = y4) t(y4) (g) {x4 b} 4 o 10 13. (b = s) (g) (s) {y4/s} 8 o 12 14. (x3 = g) (x3 = s) (g) (s) PM3o13 15. (d = s) (g) (s) PM {x3 d} 2 o 14 16. (g) (s) PM2o15 17. t(g) (s) 6 o 16 18. (g = y4) t(y4) (s) {x4 g} 4 o 17 19. (g = s) (s) {x4 s} 8 o 18 20. (x3 = s) (s) PM 15 o 19 21. (s) PM {x3 d} 2 o 20 22. [] {x11 s} 11 o 22 Nytt försök Sundhet och fullständighet för resolution ÿvi börjar med satslogiken och bevisar sen för redikatlogiken. ÿresolution med direkt inferens är inte fullständig. ÿresolution som motsägelse bevis är sund och fullständig i satslogiken. Sundhet och fullständighet för resolution ÿsundhet: Om vi nått tomma klausulen med hjäl av resolutionsroceduren ska klausulmängden S vara osatisfierbar. A = A ÿfullständighet: Om en klausulmängd S är osatisfierbar ska vi kunna nå tomma klausulen med hjäl av resolutionsroceduren. = A A Resolution med direkt inferens: ÿ Ett bevis av klausulen A från en mängd med klausuler U är en sekvens φ 1, φ 2,,φ n med följande egenskaer: Varjeφ i är antingen En medlem i U Resultatet från en resolution mellan φ j och φ k där 1 j,k i φ n =A ÿu res A betyder att formeln A kan bevisas från U med hjäl av resolution. Fullständighet för resolution ÿresolution är inte fullständig för direkt inferens, inte ens när målet är en enda literal! ÿexemel som bevisar detta: Låt U = {A 1 }={}ocha= q. Vi ser direkt att {A 1 } A(dvsomärsannsåär qdet också) men vi kan inte göra resolution å något i U för att nå det resultatet.
Fullständighet forts... ÿman löser exemlet ovan genom att negera frågan och lägga det i samma mängd som hyoteserna och sedan nå motsägelse. {A 1 } A omm A 1 A valid omm A 1 A motsägelse ÿa 1 =, A= ( q) = q ÿ1., 2., 3. q 4. [] (1 och 2) ÿvi ska visa att resolution är sunt och fullständigt när man använder det för refutation. Resolutionsroceduren ÿlåt S vara en mängd klausuler och definiera S 0 =S. Antag att vi har konstruerat S i. Välj två kolliderande klausuler C 1,C 2 S i,ochlåt C=Res(C 1,C 2 )=(C 1 - {l}) (C 2 -{l c }) ÿom C= kan roceduren avbrytas, eftersom S då är osatsifierbar. ÿannars konstruera S i+1 =S i {C}. ÿom S i+1 =S i för alla möjliga kollisioner, avbryts roceduren, S är satisifierbar. Sundhet för resolution i satslogiken ÿresolution är sund. Dvs om C 1 och C 2 är kolliderande klausuler och C är resolventen så gäller att {C 1,C 2 } C ÿvi har sagt att det gäller förut men inte bevisat det ÿför att visa att resolution är sund måste man visa ovanstående + använda induktion (I boken använder de semantiska träd för att bevisa det.) Fullständighet för resolution i satslogiken ÿom en klausulmängd S är osatisfierbar så kan vi nå tomma klausulen med hjäl av resolutionsroceduren. ÿstruktur å beviset: Skaa ett hjälmedel semantiskt träd Visa att detta träd är stängt om S osatisfierbar Visa att trädets ubyggnad innebär att man måste ha nått tomma klausulen med resolutionsroceduren. Semantiska träd (Algoritm 4.31) ÿ Det semantiska trädet med höjd n för mängden S är ett fullt binärt träd T vars kanter har följande etiketter ( 1, 2,, n är de atomer som finns i S): Den vänstra kanten från en nod å nivå i har etiketten i. Den högra kanten från en nod å nivå i har etiketten i ÿ Varje gren g i trädet definierar en tolkning där v g ( i )=T om i är etiketten å i:te kanten och v g ( i )=F annars. ÿ Grenen är sluten om v g (S)=F och annars är grenen öen. ÿ Trädet är slutet om alla grenar är slutna och annars är trädet öet. Exemel: S = { q, q, q r} q ÿden gula grenen motsvarar tolkningen v() = T, v(q) = F, v(r) = F. v(s) = T så grenen är öen. ÿden gröna grenen motsvarar tolkningen v() = F, v(q) = F, v(r) = T. v(s) = F så grenen är stängd. q q q r r r r r r r r
ÿ(lemma 4.33) Varje tolkning för mängden S motsvaras av en gren i trädet och varje gren motsvaras av en tolkning. Vi har ju konstruerat trädet så! ÿ(teorem 4.34) Semantiska träd är stängda omm klausulmängden S är osatisfierbar. ÿ(definition 4.35) Om vi har ett stängt träd och en gren g så är failure node den nod i g som falsifierar S och ligger närmast roten. ÿ(definition 4.41) Föräldranoden till två failure nodes kallas inference node. Failure och Inference nodes S={, q, r, q r} 1 q q q q 2 r r r r r r r r 3 4 ÿlemma 4.45: Om v är en artiell tolkning som hör iho med en inference node så falsifierar tolkningen resolventen. ÿfailurenoderna 3 o 4 hör iho q med klausulerna C1 = r... r r ochc2= q r. 3 4 ÿv blir v() = T och v(q) = T ÿresolventen = q ÿaddera resolventen till mängden... Failure och Inference nodes S1 = {, q, r, q r, q} 1 q q q q 5 2 r r r r r r r r 3 4 Res( q, q) = 3 4 S2 = {, q, r, q r, q, } Res(, ) = [] S3 = {, q, r, q r, q,, []} 6 1 q q q q 5 2 r r r r r r r r Huvudbevisets struktur igen: ÿ Om S är osatisfierbar finns ett stängt semantiskt träd. ÿ Klausulerna i S kan kolas samman med failure nodes i trädet. Det finns dessutom minst en inference node i trädet. ÿ Varje inference node raderar två failure nodes och skaar en ny. Antalet failure nodes minskar! ÿ Dessutom hör varje inference node iho med ett resolutionssteg. ÿ När vi minskat ned antalet failure nodes till en så måste det vara roten. Den är associerad med att få fram tomma klausulen i resolutionsroceduren. ÿ Dvs, Om en klausulmängd S är osatisfierbar så kan vi nå tomma klausulen med hjäl av resolutionsroceduren. I redikatlogiken har vi lärt oss: ÿen osatisfierbar klausulmängd medför alltid att hittas i ett ändligt antal steg. ÿen satisfierbar klausulmängd kan ge en icketerminerande beräkning, vilket gör att vi för en godtycklig klausulmängd inte vet om den är satisfierbar eller inte. ÿresolution är alltså inte en beslutsrocedur för validitet i redikatlogiken. (Är inte avgörbar.)
Avgörbarhet ÿvissa delmängder av redikatlogiken är avgörbar. Dvs det finns en beslutsrocedur för satisfierbarhet. ÿett exemel är ändliga klausulmängder utan funktionssymboler. Detta ger en ändlig Herbrandbas och då kan vi undersöka satisfierbarheten. Reetition ÿen grundterm är en term vars variabler har ersatts med element ur Herbranduniversum. Samma gäller för grundatom och grundklausul. ÿs är en klausulmängd. Det finns en modell för S omm det finns en Herbrandmodell för S. ÿherbrands teorem En klausulmängd S är osatisfierbar omm det finns en ändlig mängd av grundklausuler av S som är osatisfierbara. Sundhet för resolution i redikatlogiken ÿsamma idé som i satslogiken. Kärnan i beviset är att om C 1 och C 2 är kolliderande klausuler och C är resolventen så gäller att {C 1,C 2 } C ÿvi måste ta hänsyn till unifieringar och bygger u resolventen å följande sätt: C= (C 1 σ-{l 1 σ}) (C 2 σ -{l 2c σ}) Bevis ÿ C 1 och C 2, satisfierbara. Då finns en modell I så att v(c i )=T. ÿ Definitionen av värderingarna v ger att det finns grunda instanser C i =C i λ i så att v(c i )=T. ÿeftersom σ är en mgu finns det substitutioner θ i så att λ i =σθ i. Med andra ord har vi C i =C i λ i =(C i σ)θ i ochdärmedär v(c i σ) = T under samma tolkning som v(c i )=T. ÿnu bli beviset lika som för satslogiken. Antingenl 1 σeller l 2c σ är satisfierbar (men inte båda!) Omv(l 1 σ) = T måste det finnas någon annan literal i C 2 som är sann. Denna literal finns i resolventen som också blir satisfierad. PSS om v(l 2c σ)=t Fullständighet för resolution i redikatlogiken ÿ Bygger också å sematiska träd som i beviset för satslogiken. Failure-noden definieras om grenen fram till den falsifierar en en grund instans av en klausul. ÿ Induktionsbevis ÿ Kritiskt steg är att bevisa att inferensnoden kan kolas samman med en resolvent mellan två failure-noder. Visas med hjäl av Lifting-lemma som säger att två klausuler C 1 och C 2 kan associeras med grunda klausuler C 1 och C 2. Deras resolvent C kan i sin tur associeras med C.