110 likes | 260 Views
Föreläsning 13: Resolution. Resolution i satslogiken Resolution i predikatlogiken. 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
E N D
Föreläsning 13: Resolution • Resolution i satslogiken • Resolution i predikatlogiken Lennart Edblom, Frank Drewes, Inst. f. datavetenskap
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
Resolution i satslogiken (2) • Vi betraktar en mängd av satser på formen P P1 … Pn (Hornklausuler) där P och alla Pi ä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 = Q1 … Qm(som också skrivs Q1 … Qm) • Resolution syftar på att hitta mål M1,…,Mk sådana attM M1 … Mk där Mk är det tomma målet (m=0). • är en motsägelse – man har då bevisat Q1 … Qm(dvs att Q1 … Qm är en logisk följd av regelmängden) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap
Resolution i satslogiken (3) Resolutionsprincipen: Har vi ett mål Q1 … Qm och regelmängden innehåller en Hornklausul P P1 … Pn där Qi=P, säg t.ex. Q1 = P,så får målet ersättas med P1 … PnQ2 … Qm. 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 Qj sant. Om ji så är alltså M' sant. Om Qi=P är sant måste enligt Hornklausulen något Pl vara vara falskt och därmed är M' igen sant.) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap
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 gerC 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
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: Bevisaperson(Olle) person(Olle) (x = Olle) person(mor(Olle)) (x = mor(Olle)) gift(mor(Olle),y) (y = Lasse) person(x) gift(x,y) person(x) person(mor(x)) gift(mor(Olle), Lasse) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap
Resolution i predikatlogiken (2) • En substitution är en tilldelning s av termer till variabler • Att substituera variablerna i en formel P enligt s skrivs s(P) • En unifierare för termer eller formler P, Q är en substitution s som gör dem lika: s(P) = s(Q) • Om en unifierare för P och Q existerar så finns det en unik mest generell unifierare (mgu) smgu. "Mest generell" betyder att varje unifierare s för P och Q kan delas upp i smgu och någon unifierare s'därs = s' smgu 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
Resolution i predikatlogiken (3) Exempel: t1 = f(g(x,y),f(g(x,b),y)) och t2 = f(z,f(z,y))(där x,y,z är variablerna) smgu = [z := g(x,b), y := b] Det finns en enkel algoritm för att hitta smgu • börja med s = [] • om t1 = t2 så är s = smgu,annars hitta första positionen där termerna är olika (på exemplet g(x,y) och z) • 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 sx=[x := t] (annars avslutas algoritmen – ingen unifierare existerar).Låt s:=sxs och ti:=sx(ti)och fortsätt med steg 2. Lennart Edblom, Frank Drewes, Inst. f. datavetenskap
Resolution i predikatlogiken (4) Resolutionsprincipen för predikatlogik: Har vi ett målQ1 … Qm och en Hornklausul P P1 … Pn där något Qi, säg t.ex. Q1,kan unifieras med Pså får målet ersättas med smgu(P1) … smgu(Pn) smgu(Q2) … smgu(Qm). Om det ursprungliga målet var satisfierbar så är det nya målet också det. Lennart Edblom, Frank Drewes, Inst. f. datavetenskap
Exempel • Djur som kan flyga har två benhar_ben(x1,2) kan_flyga(x1) • Djur som har fyra ben äter inte honung medan djur med två ben äter honung.äter(x2,honung) har_ben(x2,4) äter(x3,honung) har_ben(x3,2) • Djur som inte äter honung äter nötter äter(x4,nötter) äter(x4,honung) • Det finns djur som inte äter honungäter(a, honung) • Djur som äter nötter äter djur som äter honung äter(x5, y) äter(x5,nötter) äter(y, honung) • Svalor kan flyga kan_flyga (svalor) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap
Exempel (forts) • Finns det något djur som äter svalor?Negation: 7) äter(z,svalor) • äter(z,nötter) äter(svalor,honung) (5+7; x5 :=z, y:=svalor) • äter(z,nötter) har_ben(svalor,z) (3+8; x3:=svalor) • äter(z,nötter) kan_flyga(svalor) (1+9; x1:=svalor) • äter(z,nötter) (6+10) • äter(z,honung) (3+11; x4:=z) • [ ] (4+12; z:=a) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap