F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken
F. Drewes, Inst. f. datavetenskap2 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 •Jag fokusera på specialfallet som ligger till grund för programspråket Prolog
F. Drewes, Inst. f. datavetenskap3 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)
F. Drewes, Inst. f. datavetenskap4 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.)
F. Drewes, Inst. f. datavetenskap5 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.)
F. Drewes, Inst. f. datavetenskap6 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)
F. Drewes, Inst. f. datavetenskap7 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.
F. Drewes, Inst. f. datavetenskap8 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 de ä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.
F. Drewes, Inst. f. datavetenskap9 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.