Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 Resolution i satslogiken Logisk programmering bygger på logiska inferensregler som används för att härleda korrekta slutsatser inferensreglerna måste kunna implementeras på ett enkelt och effektivt sätt Resolution (Robinson 1965), som bygger på en enda regel, uppfyller det kravet Resolution används vanligtvis i indirekta bevis, dvs för att härleda en motsägelse Vi fokuserar på specialfallet som ligger till grund för programspråket Prolog
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 Resolution i satslogiken (2) Vi betraktar en mängd av satser på formen P P 1 … P n (Hornklausuler) där P och alla P i är atomer. Satserna uttrycker de förhållanden som tas för givet. De kallas regler. Om n=0 så är regeln ett faktum och man skriver bara P Ett mål (eng. query) är en sats M = Q 1 … Q m (som också skrivs Q 1 … Q m ) Resolution syftar på att hitta mål M 1,…,M k sådana att M M 1 … M k där M k är det tomma målet (m=0). är en motsägelse – man har då bevisat Q 1 … Q m (dvs att Q 1 … Q m är en logisk följd av regelmängden)
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 Resolution i satslogiken (3) Resolutionsprincipen: Har vi ett mål Q 1 … Q m och regelmängden innehåller en Hornklausul P P 1 … P n där Q i =P, säg t.ex. Q 1 = P, så får målet ersättas med P 1 … P n Q 2 … Q m. Om det ursprungliga målet M var satisfierbart så är det nya målet M' också det. (Om M är sant så är något Q j sant. Om j i så är alltså M' sant. Om Q i = P är sant måste enligt Hornklausulen något P l vara vara falskt och därmed är M' igen sant.)
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Exempel Hornklausuler: B A, C A B, C D B, A Vi vill bevisa C (dvs att det är en logisk följd av de här antagandena). Målet är alltså C. Resolution ger C A B(resolution med andra klausulen) B(resolution med fjärde klausulen) A(resolution med första klausulen) (resolution med fjärde klausulen) (Observera att man kan hamna i lägen där det inte går vidare, t.ex. genom att använda tredje klausulen i första steget backtracking kan vara nödvändig.)
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 Resolution i predikatlogiken I predikatlogiken är resolution inte precis lika lätt eftersom atomerna nu är atomära formler som består av predikatsymboler, funktionssymboler och variabler. Exempel: person(x) gift(x,y) person(x) person(mor(x)) gift(mor(Olle), Lasse) Bevisa person(Olle) person(Olle)(x = Olle) person(mor(Olle)) (x = mor(Olle)) gift(mor(Olle),y)(y = Lasse)
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7 Resolution i predikatlogiken (2) En substitution är en tilldelning av termer till variabler Att substituera variablerna i en formel P enligt skrivs (P) En unifierare för termer eller formler P, Q är en substitution som gör dem lika: (P) = (Q) Om en unifierare för P och Q existerar så finns det en unik mest generell unifierare (mgu) mgu. "Mest generell" betyder att varje unifierare för P och Q kan delas upp i mgu och någon unifierare ' där = ' mgu Variablerna måste alltså substitueras med lämpliga termer. Lämpliga termer hittas med hjälp av unifiering.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 Resolution i predikatlogiken (3) Exempel:t 1 = f(g(x,y),f(g(x,b),y)) och t 2 = f(z,f(z,y)) (där x,y,z är variablerna) mgu = [z g(x,b), y b] Det finns en enkel algoritm för att hitta mgu 1.börja med = [] 2.om t 1 = t 2 så är = mgu, annars hitta första positionen där termerna är olika (på exemplet g(x,y) och z) 3.om en av dem är en variabel, säg x, och den andra är en term, säg t, som inte innehåller x, låt x [x t] (annars avslutas algoritmen – ingen unifierare existerar). Låt x och t i x (t i ) och fortsätt med steg 2.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 Resolution i predikatlogiken (4) Resolutionsprincipen för predikatlogik: Har vi ett mål Q 1 … Q m och en Hornklausul P P 1 … P n där något Q i, säg t.ex. Q 1, kan unifieras med P så får målet ersättas med mgu (P 1 ) … mgu (P n ) mgu (Q 2 ) … mgu (Q m ). Om det ursprungliga målet var satisfierbar så är det nya målet också det.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 10 Exempel 1.Djur som kan flyga har två ben har_ben(x 1,2) kan_flyga(x 1 ) 2.Djur som har fyra ben äter inte honung medan djur med två ben äter honung. äter(x 2,honung) har_ben(x 2,4) äter(x 3,honung) har_ben(x 3,2) 3.Djur som inte äter honung äter nötter äter(x 4,nötter) äter(x 4,honung) 4.Det finns djur som inte äter honung äter(a, honung) 5.Djur som äter nötter äter djur som äter honung äter(x 5, y) äter(x 5,nötter) äter(y, honung) 6.Svalor kan flyga kan_flyga (svalor)
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 11 Exempel (forts) Finns det något djur som äter svalor? Negation:7) äter(z,svalor) 8. äter(z,nötter) äter(svalor,honung)(5+7; x 5 :=z, y:=svalor) 9. äter(z,nötter) har_ben(svalor,z) (3+8; x 3 :=svalor) 10. äter(z,nötter) kan_flyga(svalor)(1+9; x 1 :=svalor) 11. äter(z,nötter)(6+10) 12.äter(z,honung)(3+11; x 4 :=z) 13.[ ](4+12; z:=a)