*USS YQLQJ±/RJLNPHGWLOOlPSQLQJDUYW 8SSJLIW Här kommer några teoretiska frågor, skriv svaren med egna ord, dvs skriv inte av ohbilderna: a. Vad är en beslutsprocedur? En algoritm som terminerar och som svarar ja eller nej på frågan om en formel A till hör en klass av formler. b. Är följande en beslutsprocedur för validitet i predikatlogiken 1. Linjär resolution. 2. Input resolution. 3. SLD-resolution. 4. Set-of-support resolution. 5. Svarsextraktion. 6. Sanningstabeller 7. mgu-unifierings-algoritmen. 1-5 bygger på resolution som inte är en beslutsprocedur i predikatlogik. Sanningstabeller kan man inte göra i predikatlogik och mgu-algoritmen avgör inte om formler är valida eller ej. c. Är de 7 procedurerna i uppgift 1b fullständiga, sunda? Inputresolution är inte fullständig. 5 beror på vilken resolution som används. 6 är sunt och fullständigt för satslogik. Ej tillämpbart på 7 d. Ge några nackdelar med resolution (minst 4). Kan ta lång tid att exekvera En klausul kan skapas fler änen gång Logisk svagare klausuler kan skapas Återvändsgränder, dvs klausuler som inte leder någonstans kan skapas. 8SSJLIW Antag att vi låter klausulen p q r kollidera med klausulen p z. Visa för exemplet att om de ursprungliga klausulerna var satisfierbara så blir resultatet av kollisionen satisfierbart. (generella resolutionsregeln för satslogik). C1 = p q r och C2 = p z samt resolventen C = q r z Vi vet att v(c1) = v(c2) = T för en tolkning v och vill visa att v(c) = T. 2 fall: v(p) = T I så fall är v( p) = F och detta innebär att v(q r) = T för att v(c1) = T eftersom q r är en del av C så är även v(c) = T. v(p) = F Detta innebär att v(z) = T för att v(c2) = T eftersom z är en del av C så är även v(c) = T.
8SSJLIW Undersök om följande stämmer genom att använda en semantisk tablå: a. = (p p) (q q) Kolla först validitet genom att negera formeln Tablån stängd. Formeln valid. b. = ( xp(x) xq(x)) x(p(x) q(x)) Negera formel för att kolla validitet [( xp(x) xq(x)) x(p(x) q(x))] ( xp(x) xq(x)), x(p(x) q(x)) xp(x), xq(x), x(p(x) q(x)) xp(x), xq(x), (p(a) q(a)) [(p p) (q q)] (p p), (q q) p, p, (q q) [( xp(x) xq(x)) x(p(x) q(x))] [ x(p(x) q(x)) ( xp(x) xq(x))] x(p(x) q(x)), xp(x) xp(x), xq(x), p(a) xp(x), xq(x), q(a) xp(x), p(a) xq(x), p(a) Formel valid. x(p(x) q(x)), ( xp(x) xq(x)) x(p(x) q(x)), p(b) x(p(x) q(x)), xq(x) x(p(x) q(x)), q(c) x(p(x) q(x)), p(b) q(b), p(b) x(p(x) q(x)), p(c) q(c), q(c) xp(x), xq(x), q(a), q(a) x(p(x) q(x)), p(b), q(b), p(b) x(p(x) q(x)), p(c), q(c), q(c)
c. = x(p(x) q(x)) x(p(x) xq(x)) Negera formeln och kolla validitet A = x(p(x) q(x)), B = x(p(x) xq(x)) [ x(p(x) q(x)) x(p(x) xq(x))] [ x(p(x) q(x)) x(p(x) xq(x))] [ x(p(x) xq(x)) x(p(x) q(x))] x(p(x) q(x)), x(p(x) xq(x)) x(p(x) xq(x)), x(p(x) q(x)) A, B, (p(a) xq(x)) p(b) xq(x), x(p(x) q(x)) A, B, p(a), xq(x) p(b) xq(x), (p(c) q(c)) A, B, p(a), xq(x), q(a) p(b) xq(x), p(c), q(c) A, p(a) q(a), B, p(a), xq(x), q(a) p(b), p(c), q(c) xq(x), p(c), q(c) O A, p(a), B, p(a), xq(x), q(a) A, q(a), B, p(a), xq(x), q(a) q(d), p(c), q(c) O Formeln inte valid eftersom det finns öppna löv. Kolla om motsägelse A = x(p(x) xq(x)) x(p(x) q(x)) B = x(p(x) q(x)) C = x(p(x) xq(x)) x(p(x) q(x)) x(p(x) xq(x)) x(p(x) q(x)) x(p(x) xq(x)), x(p(x) xq(x)) x(p(x) q(x)) x(p(x) q(x)), A x(p(x) xq(x)), A (p(a) q(a)), A p(b) xq(x), A p(a), q(a), x(p(x) xq(x)) x(p(x) q(x)) p(b), A xq(x), A p(a), q(a), x(p(x) xq(x)) p(a), q(a), x(p(x) q(x)) p(a), q(a), C, (p(a) xq(x)) p(a), q(a), B, p(a) q(a) p(a), q(a), C, xq(x)) p(a), q(a), B, p(a) p(a), q(a), B, q(a) p(a), q(a), C, xq(x)), q(a)
p(b), x(p(x) xq(x)) x(p(x) q(x)) p(b), x(p(x) xq(x)) p(b), x(p(x) q(x)) p(b), C, (p(b) xq(x)) p(b), B, p(b) q(b) p(b), C, p(b), xq(x) p(b), B p(b), B, q(b) oändlig oändlig xq(x), x(p(x) xq(x)) x(p(x) q(x)) q(c), x(p(x) xq(x)) x(p(x) q(x)) q(c), x(p(x) xq(x)) q(c), x(p(x) q(x)) q(c), C, (p(c) xq(x)) q(c), B, p(c) q(c) q(c), C, p(c), xq(x) q(c), B, p(c) q(c), B q(c), C, p(c), xq(x), q(c) oändlig oändlig Vi får oändliga grenar. Vi hittar ingen gren som är öppen och kan därför inte avgöra om formeln är satisfierbar eller ej. d. Eftersom det finns en variabel x som ej binds, är ej formeln en wff och har därmed ej något sanningsvärde överhuvudtaget. e. Ge motexempel på de fall i a-d som inte är valida. Den enda vi vet säkert inte är valid är c) x(p(x) q(x)) x(p(x) xq(x)) Domän = alla människor p(x) x har en fru, q(x) x är en kvinna. Tittar vi på x(p(x) q(x)) x(p(x) xq(x)) får vi: x(p(x) q(x)) För alla människor gäller att om x har en fru så är x en kvinna. Detta är falskt men hela implikationen blir sann. Då måste även x(p(x) xq(x)) x(p(x) q(x)) vara sann för att formeln ska gälla. x(p(x) xq(x)) Det finns minst en person som om denne har en fru så är denne en kvinna. Alltså sant. Men x(p(x) q(x)) är falskt då har vi T F en falsk implikation och då gäller inte formeln.
f. Vad skulle det göra för skillnad om man bytte = mot? Semantiska tablåer tittar på tolkningar och är därmed en semantisk metod. - betyder att man ska kunna bevisa något syntaktiskt utan att tänka på tolkningar. Då kan inte semantiska tablåer användas. Men man kan invända att semanstiska tablåer kan ses som en syntaktisk metod eftersom vi aldrig direkt ser på formler utan omvandlar enligt formelmönster. Vi vet också att semantiska tablåer är sunda och fullständiga dvs - A = A och = A - A så därför skulle man kunna använda tablåerna och sedan hänvisa till detta och dra slutsatser ändå. 8SSJLIW Gäller följande uttryck? a. x y p(x, y) x q(x, x,) x y(p(x,y) q(x,y)) = x y (x = y) A1 x y p(x, y) p(a, y) p(a, b) A2 x q(x, x,) A3 q(x1, x1) x y(p(x,y) q(x,y)) x y( p(x,y) q(x,y)) p(x2,y2) q(x2,y2) A x y (x = y) x y(x = y) (x3 = y3) OK! 1. p(a, b) 2. q(x1, x1) 3. p(x2,y2) q(x2,y2) 4. (x3 = y3) 5. p(x1, x1) {x2/x1, y2/x1} 2 och 3 6. p(y3, x1) {x3/x1} PM 4 och 5 (byter medvetet bara den ena!) 7. [] {y3/a, x1/b} 1 och 6
b. x y(p(x,y) p(y, x)) = x y(p(x,y) (x=y)) A1 x y(p(x,y) p(y, x)) x y( p(x,y) p(y, x)) p(x1,y1) p(y1, x1) A x y(p(x,y) (x=y)) x y ( p(x,y) (x=y)) x y(p(x,y) (x=y)) y(p(a, y) (a=y)) p(a, b) (a = b) 1. p(x1,y1) p(y1, x1) 2. p(a, b) 3. (a = b) 4. p(b, a) {x1/a, y1/b} 1 och 2 5. p(a, a) PM 3 och 4 6. p(a, b) PM 3 och 5 7. [] 2 och 7 c. x yp(y,x) x y z((p(x,y) p(x,z) y = z) = x yp(x,y) A1 x yp(y,x) x p(f(x), x) A2 x y z((p(x,y) p(x,z) y = z) x y z(( p(x,y) p(x,z) y = z) A x yp(x,y) x y p(a, y) y p(a, b) 1. p(f(x1), x1) 2. p(x2, y2) p(x2,z2) y2 = z2 3. p(a, b) 4. p(f(x1),z2) x1 = z2 {x2/f(x1), y2/x1} 1 och 2 5. Ny 1: p(f(x3), x3) 6. x3 = x3 {x1/x3, z2/x3} 5 och 4 Man kan fortsätta ett tag till men inte hitta tomma klausulen
8SSJLIW a. Uttryck följande i predikatlogik: En man i staden rakar alla och enbart de som inte rakar sig själva. Antag att domänen är alla män i staden. (Då slipper man ett predikat man(x) ) rakar(x, y) = x rakar y Låt mannen vara en konstant a x([rakar(a, x) \/ rakar(x, x)] /\ [rakar(x, x) rakar(a, x)]) (1) b. Använd valfri metod för att undersöka vem som rakar mannen. (OBS: Alla blir alltså rakade i den här staden.) Vi gör om (1) till PCNF: Vi får då: x([rakar(a, x) \/ rakar(x, x)] /\ [ rakar(x, x) \/ rakar(a, x)]) Vi vet också att antingen rakar han sig själv eller också gör någon annan det. rakar(a,a) \/ x rakar(x,a) Efter skolemisering får vi: rakar(a,a) \/ rakar(b,a) Finns det någon som rakar barberaren? d.v.s. x rakar(x, a) (2) negering av slutsats ger: x rakar(x,a) Vi undersöker om (1) -> (2) är satisfierbart eller motsägelse genom resolution. 1. rakar(a, x1) \/ rakar(x1, x1) 2. rakar(x2, x2) \/ rakar(a, x2) 3. rakar(x3,a) 4. rakar(a,a) \/ rakar(b,a) 5. rakar(a,a) \/ -rakar(a,a) 1,2{x2/a, x1/a} 6. -rakar(a,a) 5,3{x3/a} 7. rakar(b,a) 7,3{x3/b} 8. [] tomma klausulen!! Ovanstående innebär att det inte finns någon som rakar barberaren, men eftersom alla skulle rakas i staden är detta en paradox!! c.en gåta lyder som följer: En man ser på en tavla föreställande en person. Han utbrister, hans far är min fars enda son. Använd svarsextraktion för att utröna vem som var far till personen på tavlan.
Vad har vi för fakta? För enkelhetens skull har vi en domän där alla fäder har bara en son Om x är far till y så är y son till x. x y([far(x, y) son(y, x)] [son(y, x) far(x, y)]) Personen på tavlan kallar vi för TP (TavlanPerson), personer framför tavlan för FTP (FramförTavlanPerson). FTP säger hans far är min fars enda son dvs, FTP säger TPs far är FTPs fars enda son eller i logik: far(x, TP) far(y, FTP) son(x, y) Vem är far till personen på tavlan? x far(x, TP) Klausuler 1. far(x1, y1) son(y1, x1) 2. son(y2, x2) far(x2, y2) 3. far(x3, TP) 4. far(y4, FTP) 5. son(x5, y) 6. far(x6, TP) (Finns en uppenbar lösning, undviker den ) 7. son(tp, x2) 2 och 6 {x6/x2, y2/tp} 8. [] 5 och 7 {x5/tp, x2/ftp} Svarsextraktion: 9. far(x1, y1) son(y1, x1) 10. son(y2, x2) far(x2, y2) 11. far(x3, TP) 12. far(y4, FTP) 13. son(x5, y) 14. far(x6, TP) ans(x6) 15. son(tp, x2) ans(x2) 2 och 6 {x6/x2, y2/tp} 16. ans(ftp) 5 och 7 {x5/tp, x2/ftp} Aha det är personen framför tavlan som är far till personen på tavlan!!
8SSJLIW Tony, Shi-Kuo och Ellen är medlemmar i Hoofers Club. Varje medlem av Hoofers Club är antingen en skidåkare eller en bergsbestigare eller bägge. Inga bergsbestigare gillar regn och alla skidåkare gillar snö. Ellen ogillar det som Tony gillar och hon gillar det som Tony ogillar. Tony gillar regn och snö. Finns det en medlem av Hoofers Club som är en bergsbestigare men inte en skidåkare? Predikat: medlem(x) x är med i Hoofers Club, skidåkare(x) x är skidåkare, bestigare(x) x är bergsbestigare, gillar(x, y) x gillar y Fakta: Tony, Shi-Kuo och Ellen är medlemmar i Hoofers Club. medlem(tony) medlem(shi-kuo) medlem(ellen) Varje medlem av Hoofers Club är antingen en skidåkare eller en bergsbestigare eller bägge. x(medlem (x) skidåkare(x) bestigare(x)) Inga bergsbestigare gillar regn och alla skidåkare gillar snö. x(bestigare(x) gillar(x, regn)) x(skidåkare(x) gillar(x, snö)) Ellen ogillar det som Tony gillar och hon gillar det som Tony ogillar. x(gillar(tony, x) gillar(ellen, x)) x( gillar(tony, x) gillar(ellen, x)) Tony gillar regn och snö. gillar(tony, regn) gillar(tony, snö) Frågan: Finns det en medlem av Hoofers Club som är en bergsbestigare men inte en skidåkare? x(medlem(x) bestigare(x) skidåkare(x)) Gör om till klausulform medlem(tony) medlem(shi-kuo) medlem(ellen) { medlem(tony), medlem(shi-kuo), medlem(ellen) } x(medlem (x) skidåkare(x) bestigare(x)) x( medlem (x) skidåkare(x) bestigare(x)) { medlem (x1) skidåkare(x1) bestigare(x1)} x(bestigare(x) gillar(x, regn)) { bestigare(x2) gillar(x2, regn)}
x(skidåkare(x) gillar(x, snö)) { skidåkare(x3) gillar(x3, snö)} x(gillar(tony, x) gillar(ellen, x)) { gillar(tony, x4) gillar(ellen, x4)} x( gillar(tony, x) gillar(ellen, x)) {gillar(tony, x5) gillar(ellen, x5)} gillar(tony, regn) gillar(tony, snö) {gillar(tony, regn), gillar(tony, snö)} Frågan negeras! x(medlem(x) bestigare(x) skidåkare(x)) x( medlem(x) bestigare(x) skidåkare(x)) { medlem(x6) bestigare(x6) skidåkare(x6)} Resolvera! 1. medlem(tony) 2. medlem(shi-kuo) 3. medlem(ellen) 4. medlem(x1) skidåkare(x1) bestigare(x1) 5. bestigare(x2) gillar(x2, regn) 6. skidåkare(x3) gillar(x3, snö) 7. gillar(tony, x4) gillar(ellen, x4) 8. gillar(tony, x5) gillar(ellen, x5) 9. gillar(tony, regn) 10. gillar(tony, snö) 11. medlem(x6) bestigare(x6) skidåkare(x6) 12. medlem(x6) skidåkare(x6) {x1/x6} 4 och 11 13. medlem(x6) gillar(x6, snö) {x3/x6}6 och 12 14. medlem(ellen) gillar(tony, snö) {x6/ellen, x4/snö} 7 och 13 15. gillar(tony, snö) 3 och 14 16. [] 10 och 15 Jo det finns en sådan medlem! Svarsextraktion ger vilken: 1. medlem(x6) bestigare(x6) skidåkare(x6) ans(x6) 2. medlem(x6) skidåkare(x6) ans(x6) {x1/x6} 4 och 11 3. medlem(x6) gillar(x6, snö) ans(x6) {x3/x6}6 och 12 4. medlem(ellen) gillar(tony, snö) ans(ellen) {x6/ellen, x4/snö} 7 och 13 5. gillar(tony, snö) ans(ellen) 3 och 14 6. ans(ellen) 10 och 15 Ellen är det!