Föreläsning 11 Logik med tillämpningar
Innehåll u Generell resolution u Kapitel i Ben-Ari
Generell Resolution Generella resolutionsregeln: C 1 och C 2 är klausuler utan gemensamma variabler. l 1 C 1 och l 2 c C 2 är literaler där l 1 och l 2 c kan unifieras med en MGU . C 1 och C 2 är kolliderande klausuler och de kolliderar på literalerna l 1 och l 2 c. Resolventen C skapas enligt: Res(C 1, C 2 ) = (C 1 - {l 1 }) (C 2 - {l 2 c })
Standardisera isär variabler u Restriktionen att variablerna inte skall ha gemensamma variabler löser vi genom att ge variablerna nya namn innan unifieringen, vi standardiserar isär variablerna. u Varför kan vi byta namn på det här sättet? – Variablerna är allkvantifierade
Generella resolutionsproceduren: S är en klausulmängd. Definiera S 0 = S. Välj två kolliderande klausuler C 1, C 2 S i och skapa resolventen C från C 1 och C 2. Om C = kan proceduren avslutas och S är osatisfierbar. Annars skapas S i+1 = S i {C}. u Om S i+1 = S i för alla möjliga par av kolliderande klausuler i S i kan proceduren avbrytas och S är satisfierbar.
u En osatisfierbar klausulmängd medför alltid att hittas i ett ändligt antal steg. u 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. u Resolution är alltså inte en beslutsprocedur för validitet i predikatlogiken.
Sundhet och fullständighet u Teorem (4.2.2) (Resolution är sund) Om vi under generell resolution får den tomma klausulen så är den ursprungliga klausulmängden osatisfierbar. u Teorem (4.2.3) (Resolution är fullständig) Om en mängd klausuler är osatisfierbara så kan den tomma klausulen uppnås genom generell resolution på klausulmängden.
Repetition Antag att vi har en mängd axiom U och vi vill visa att en formel A är en logisk konsekvens av U, dvs B är sann i alla modeller för U, U B. Teorem (2.5.11): U B omm (A 1 … A n ) B är en valid formel och A 1...A n är formlerna i U. För att avgöra detta negerar vi formeln, ((A 1 … A n ) B ) och använder resolution för att visa att den är osatisfierbar. Men ((A 1 … A n ) B ) A 1 … A n B dvs, istället för att negera hela implikation kan vi lägga till... B till axiomen och visa att den formeln inte är satisfierbar!
Hornklausuler En klausul med endast en positiv literal B (A 1 … A n ) eller (A 1 … A n ) B eller A 1 … A n B kallas för Hornklausul. u En Hornklausul med endast den positiva literalen B kallas ett fakta. En Hornklausul utan den positiva literalen (A 1 … A n ) kallas ett mål.
Effektivitet u Resolution är visserligen en effektiv metod, men det kan ändå ta lång tid att exekvera algoritmen. Vissa modifikationer av algoritmen bibehåller fullständigheten, dvs vi kan fortfarande vara säkra på att uppnå om det går med den ursprungliga algoritmen. u Definition (4.5.1) (Set-of-support) S är en klausulmängd och T är en delmängd av S så att S - T är satisfierbar. Vi använder inte resolutions- regeln mellan två klausuler i S - T.
Olika typer av resolution u SLD-resolution G i är en målklausul A 1, …, A k ) och C i+1 är en Horn klausul A B 1, …, B n ). Målet G i+1 härleds från G i och C i+1 under unifieringen i+1 om följande villkor är uppfyllda: –Delmålet A m valdes från G i. – i+1 är unifieringen som gör A m i+1 = A i+1. –G i+1 är det nya målet A 1, …, A m-1, B 1, …, B n, A m+1, …, A k
u Definition (4.5.2) (Linjär resolution) Låt ursprungsmålet för resolutionen vara centrum-klausulen. I varje steg i resolutionsproceduren sker resolution mellan centrumklausulen och någon annan klausul. Resolventen blir den nya centrumklausulen. u Definition (4.5.3) (Input resolution) En av föräldraklausulerna tillhör alltid den ursprungliga mängden av klausuler.
Problem: u Djur som kan flyga har två ben. Endast djur som har fyra ben äter inte honung. Djur som inte äter honung äter nötter. Det finns djur som inte äter honung. Djur som äter nötter äter djur som äter honung. Svalor kan flyga. u Finns det något djur som äter svalor? Observera att det kan finnas relationer som måste formuleras trots att det inte står uttryckligen i texten.
Hur går man tillväga för att lösa problemet? u Formulera predikatlogiska formler av faktat och frågan. u Negera frågan (eftersom vi vill visa att den är valid). u Omvandla allt till klausulform. u Använd resolution för att (förhoppningsvis) nå tomma klausulen.
Fakta + fråga: 1. Djur som kan flyga har två ben. 2. Endast djur som har fyra ben äter inte honung. 3. Djur som inte äter honung äter nötter. 4. Det finns djur som inte äter honung. 5. Djur som äter nötter äter djur som äter honung. 6. Svalor kan flyga. 7. Finns det något djur som äter svalor?
Konstruktion av klausulform: 1. Ge bundna variabler unika namn. 2. Reducera operatorerna till och . 3. Pressa in negationer. När en negation pressas in innanför en kvantor, så byt mot och tvärt om. 4. Flytta kvantifierarna utanför övriga formeln.Välj en kvantifierare som inte är innanför en kvantifierare som är kvar i matrisen och använd följande regler: A op QxB(x) Qx(A op B(x)) QxB(x) op A Qx(B(x) op A) 5. Använd distributiva lagar för att få matrisen i CNF. 6. Använd Skolemkonstanter och skolemfunktioner för att eliminera existenskvantorerna.
Vår klausulmängd: {(1) kan_flyga(x 1 ) har_ben(x 1, 2), (2) har_ben(x 2,4) äter(x 2, honung), (3) har_ben(x 3, 2) äter(x 3, honung), (4) äter(x 4, honung) äter(x 4, nötter), (5) äter(a, honung), (6) äter(x 5, nötter) äter(y, honung) äter(x 5, y), (7) kan_flyga(svalor), (8) äter(x 6, svalor)}