Grundläggande logik och modellteori Kapitel 8: Predikatlogik Henrik Björklund Umeå universitet 2. oktober, 2014
Första ordningens predikatlogik Signaturer och termer Första ordningens predikatlogik Formler och deras semantik Kvantifierarnas räckvidd, fria variabler Slutna meningar Modell, tautologi, satisfierbar, logisk konsekvens Den här föreläsningen kombinerar introduktionen till första ordningens predikatlogik i bokens (3:e uppl.) kapitel 7 med termer och funktioner i inledningen till kapitel 9. 1 1 Kapitel 5 och 7 respektive i 2:a uppl.
Klassikern { Alla människor är dödliga. Sokrates ären människa.} = Sokrates är dödlig. Satslogik är inte adekvat för att uttrycka det här eftersom det handlar om objekt (t ex Sokrates) och deras egenskaper (vara människa, vara dödlig). Satslogik handlar bara om förhållanden mellan primitiva påståenden. De må prata om objekt och egenskaper men det berör inte semantiken: Satslogiskt är slutsatsen ovan lika med {p, q} = r vilket självklart är fel. Vad som egentligen ska uttryckas är parametriserade förhållanden: (1) För alla objekt x gäller Människa(x) Dödlig(x), vilket i synnerhet ger (1 ) Människa(Sokrates) Dödlig(Sokrates). (2) Dessutom gäller Människa(Sokrates), alltså pga (1 ) och mha modus ponens Dödlig(Sokrates).
Signaturer och termer En signatur är en trippel T = (V, K, F) bestående av uppräkningsbara mängder V, K, och F av variabler, konstanter och funktionssymboler. Varje funktionssymbol f F har en ställighet arity(f ), som är ett naturligt tal > 0. Mängderna V, K och F ska vara disjunkta. För att tydliggöra att en symbol f antas ha ställighet n (dvs arity(f ) = n) skrivs ibland f (n). Definition: Mängden terms(t) av alla termer över T är den minsta mängden av träd sådan att (i) V K terms(t) och (ii) om träden t 1,..., t n terms(t) och det finns en funktionssymbol f (n) F så finns trädet nedan i terms(t). f t 1... t n
Termer som strängar Som i satslogiken skriver vi ofta träden i terms(t) som strängar. T.ex., med signaturen T = (, {b}, {f (3), g (1) }) har vi i terms(t) f b g g b g b denna skriver vi som strängen f (b, g(g(b)), g(b)) Notera att vi vanligtvis inte använder infix-syntax i termerna.
Uppgift 1 Vilka av följande tripplar är signaturer? (a) (, {c 1, c 2, c 3 }, {f (1) i i N}) (b) ({x i i R}, {c j j R}, {+ (2), (1), (2), (2), / (2) }) (c) ({x i i N}, {2, 3, 5, 7, 11}, {f (2) k k Q} )
Lösning 1 Trippel (a) är en signatur. Definitionen förbjuder inte att en variabel-, konstanteller funktionsmängd är tom eller oändlig. Däremot krävs att mängderna är uppräkningsbara, vilket hindrar oss från att använda de reella talen som index så (b) är ingen signatur, men det är däremot (c).
Uppgift 2 Om T = ({x i i N}, {π, 1}, {+ (2), (1), (2) }) är en signatur, vilka av följande strängar tillhör då terms(t)? (a) x 2 (c) x 2 + π (e) + ( (π, x 0 ), 1) (b) π (d) + (x 2, π) (f) (+(x 100, x 200 ))
Lösning 2 I första definitionen av T var det bara (c) som inte tillhörde mängden termer över T, eftersom alla funktioner skrivs som prefix om inte annat uttryckligen sägs.
Uppgift 3 Låt T = (V, K, F) vara en signatur där V = {x 1, x 2,...}, K = {1, 0, π}, och F = {+ (2), (2), (2), (1) }. Vilka av följande strängar tillhör då terms(t)? (a) x 1 (e) +(1, +(1, x 4 ), x 4 ) (b) π (f) +(π, x 7 ) (c) c (g) (x 1, (π)) (d) (x 1, 0) (h) ( ( ( (1))), (π, 1))
Lösning 3 (a) Ok, ty x 1 V (e) Inte ok, då + kräver exakt två argument. (b) Ok, ty π K (f) Ok. (c) Inte ok, ty c V K (g) Ok, det finns en funktion (1). (d) Ok. (h) Ok.
Första ordningens predikatlogik Definition: En första ordningens predikatlogik (kort predikatlogik) är en trippel L = (R, C, T) där R är en mängd av relationssymboler där varje p R har en ställighet arity(p) 0, C är mängden av konnektiv, vanligen en delmängd av {,,,,,,,,,,, } (samma som i satslogiken, med och tillagda). T är en signatur. Det krävs att alla symbolmängder är disjunkta. Om inget annat sägs antas att C = {,,,,,,,, }.
Uppgift 4 Vilka av följande tripplar är predikatlogiker? (a) (b) ({p (0), q (1), r (1), s (2) }, {,,, }, ({x i i N}, {c 1 }, {f (10) 1, f (1) 2, f (1) 3 })) ({p (0), q (0), r (0) }, {,,,,,, }, (,, )) (c) ({= (2), < (2), > (2) }, {,,,, }, ({x, y, z}, {, }, { (2), (1), (2) }))
Lösning 4 Att (a) är en predikatlogik är det ganska lätt att se. Även (b) är en predikatlogik, men eftersom möjligheten att skriva termer inte kan utnyttjas, och eftersom allkvantor och existenskvantor saknas bland konnektiven, så motsvarar (b) mer eller mindre en vanlig satslogik. I det tredje fallet, dvs (c), tittar vi inte längre på någon predikatlogik eftersom mängderna av variabler, konstanter och konnektiv inte disjunkta.
Välformade formler Bortsett från kvantifierarna består den enda skillnaden mellan välformade formler i predikatlogiken och satslogiken i atomerna som är odelbara symboler i satslogiken numera blir atomära formler. x Definition Låt L = (R, C, T) vara en predikatlogik. A En atomär formel är ett träd med någon rot p (n) R och barnträd t 1,..., t n terms(t). Dvs, trädet vi skulle skriva p(t 1,..., t n ). Mängden av atomära formler skrivs atoms(l). Mängden WF(L) av välformade formler (kort formler) definieras som i satslogiken, med två ändringar. Atomära formler istf. atomer: atoms(l) WF(L). (2) och (2) har alltid en variabel som vänster barn. T.ex., för x V och A WF(L) finns trädet till vänster. Vi skriver dessa ( x)(a) och ( x)(a). Övriga konnektiv bildar träd och skrivs som vanligt.
Exempel Med V = {x, y, z}, K = {a, b}, F = {f (2), g (1) } och R = {q (2), r (0), s (1) } är följande en wff: q(f (g(a), x), b) ( x)(s(g(f (a, f (y, y)))) (r() s(x))) Alla termer är understrukna i blått och alla atomära formler i rött.
Uppgift 5 Om L = ({p (0), q (1), r (2) }, {,,,,,,,, }, ({x, y, z}, {c 1, c 2 }, {f (2) 1, f (2) 2 })) är en predikatlogik, vilka av följande strängar tillhör då WF(L)? (a) p() (f) r(f 2 (c 1, c 2 )) (b) f 1 (x, y) (g) p() r(f 2 (c 1, c 2 ), z) (c) r(z, z) (h) ( y)(( x)( r(f 1 (x, y), c 2 ))) (d) ( x)(q(x)) (i) f 2 (c 1, y) p() (e) x q(x) (j) ( x)(q(y))
Lösning 5 (a) Ja, p tar inga argument och är en välformad formel i sig själv. (b) Nej, bara en term är inte en välformad formel. (c) Ja. (d) Ja. (e) Nej, parenteser saknas. Jämför med (d). (f) Nej, r kräver två argument, inte ett. (g) Ja, nu har r fått ytterligare ett argument. (h) Ja. Fortfarande helt ok. (i) Nej, alla termer måste vara inneslutna i relationer. (j) Ok, men lite meningslöst att binda x men inte utnyttja bindningen.
Tolkningar (0) Vad krävs för att en satslogisk formel skall kunna tilldelas ett sanningsvärde? p (q r) Vad krävs för att en predikatlogisk formel skall kunna tilldelas ett sanningsvärde? r(f (x, y), a) (p(g(x, y), b) (z)(q(f (x, y)) q(z)))
Tolkningar (1) I satslogiken är tolkningens enda syfte att tilldela varje atom ett sanningsvärde. I predikatlogiken har atomerna blivit ersatta med relationssymboler som tar termer som argument. Semantiskt sett betecknar varje term ett objekt. Mängden av alla objekt som ligger till grund för tolkningen måste definieras (tolkningens domän). Istället för att ha ett unikt sanningsvärde tolkas relationssymbolerna som relationer (eller predikat) vars sanningsvärde beror på argumenten. Termernas värde beror i sin tur på tolkningen av konstanter och funktionssymboler.
Tolkningar (2) Definition Låt L = (R, C, T) vara en predikatlogik där T = (V, K, F). En tolkning J av L består av följande komponenter: En icke tom men i övrigt godtycklig mängd dom(j), tolkningens domän. En n-ställig relation R J dom(j) n för varje relationssymbol R (n) R. Relationen R J betraktas som ett predikat R J : dom(j) n {F, T } som tar objekt d 1,..., d n dom(j) som argument och returnerar sanningsvärdet T om (d 1,..., d n ) R J och F annars. Ett objekt a J dom(j) för varje konstant a K. En n-ställig funktion f J : dom(j) n dom(j) för varje funktionssymbol f (n) F. Observera att tolkningen inte specificerar variablernas värden!
Exempel Låt A = r(f (x, y), a) (p(g(x, y), b) (z)(q(f (x, y)) q(z))) vara en predikatlogisk formel, och låt J vara en tolkning där... domänen är heltalen, r är >, p är <, q är IsPrime, a är 5, b är 10, f är +, och g är. Då översätter J formeln A till ((x + y) > 5) (((x y) < 10) (z)(isprime(x + y) isprime(z))). Men! A s sanningsvärde beror fortfarande på valet av x och y.
Värderingar Under en given tolkning J betecknar varje term ett objekt. Förutsättningen är dock att varje variabel tilldelas ett värde. Det är precis det en J-värdering gör. Definition: Låt L = (R, C, T) vara en predikatlogik och J en tolkning av L. En funktion w : terms(t) dom(j) är en J-värdering om (i) w(a) = a J för alla konstanter a i T och (ii) w(f (t 1,..., t n )) = f J (w(t 1 ),..., w(t n )) för alla termer f (t 1,..., t n ) terms(t). Alltså: w(x) får väljas fritt för variabler x V. w är entydigt fastlagt genom värdena w(x) för varje x V. En nyttig notation är w x=d för x V och d dom(j) som betecknar J-värderingen där w x=d (x) = d och w x=d (y) = w(y) för alla y V \ {x}.
Exempel Vi utgick ifrån den predikatlogiska formeln A = r(f (x, y), a) (p(g(x, y), b) (z)(q(f (x, y)) q(z))) och valde tolkningen J där... domänen är heltalen, r är >, p är <, q är IsPrime, a är 5, b är 10, f är +, och g är. Formeln A översattes då till ((x + y) > 5) (((x y) < 10) (z)(isprime(x + y) isprime(z))). Om vi därefter väljer en J-värdering w som tilldelar x värdet 8, y värdet 1 och z värdet 7 får vi t.ex. att w(x + y) = (8 + 1) = 9, och w(z) = 7, så nu har alla termer ett värde.
Semantiken för formler Varje J-värdering leder till ett sanningsvärde för en given formel formelns semantik. Definitionen nedan rättar sig efter Alfred Tarski. Definition: Låt L vara en predikatlogik. En J-värdering w för L utvidgas till en funktion w : WF(L) {F, T } så här: (i) För alla atomära formler A = R(t 1,..., t n ) w(a) = R J (w(t 1 ),..., w(t n )). (ii) För alla variabler x och alla formler A definieras w(( x)(a)) = T omm w x=d (A) = T för alla d dom(j) w(( x)(a)) = T omm w x=d (A) = T för något d dom(j) (iii) För alla övriga konnektiv är definitionen den som också användes i satslogiken (med w istället för v).
Exempel Alltså: Den predikatlogiska formeln A = r(f (x, y), a) (p(g(x, y), b) (z)(q(f (x, y)) q(z))) blir under tolkningen J och J-värderingen w = {(x, 8), (y, 1), (z, 7)} till ((8 + 1) > 5) (((8 1) < 10) (z)(isprime(8 + 1) isprime(z))). vilket som helhet har sanningsvärdet T!
Kvantifierarnas räckvidd, fria variabler Räckvidden för en kvantifierare i en wff ( x)(a) eller ( x)(a) omfattar alla förekomster av x i delformeln A med undantag av de som i sin tur tillhör en delformel av A på formen ( x)(a ) eller ( x)(a ). Variablerna inom räckvidden för en kvantifierare är alltså de som kvantifieraren syftar på. (Konceptet liknar räckvidden för en variabel i ett programspråk med lexikalisk räckvidd.) ( x)((r(x) ( x)(q(x, y) )) ( y)(q(f (x), y) }{{}}{{} ) ) r(x) }{{} En (förekomst av en) variabel är bunden om den ligger inom räckvidden för någon kvantifierare och fri annars. I exemplet är alla blå variabler fria och de övriga är bundna.
Meningar En (sluten) mening är en formel som inte innehåller fria variabler. Antag att en tolkning J har valts. En mening har då alltid ett unikt sanningsvärde. En formel A med en fri variabel x är däremot ett parametriserat påstående vars sanningsvärde beror på x:s värde (alltså på J-värderingen w(x) av x). I en databas skulle J motsvara databasens innehåll och A skulle specificera en förfrågan (query). Systemets uppgift vore att finna och returnera alla objekt d dom(j) som uppfyller w x=d (A) = T. Om flera variabler x 1,..., x n är fria så returneras alla (d 1,..., d n ) dom(j) n som uppfyller w x1 =d 1 x n=d n (A) = T.
En mening har ett unikt sanningsvärde Sats: Låt A vara en mening i en predikatlogik L och J en tolkning. För alla J-värderingar v, w gäller v(a) = w(a). Med andra ord, meningens semantik beror endast på J. Det formella beviset kan delas upp i två steg: Steg 1: För varje term t, om v(x) = w(x) för alla variabler x som förekommer i t så gäller v(t) = w(t). Steg 2: För varje formel B, om v(x) = w(x) för alla variabler x som förekommer fritt i B så gäller v(b) = w(b). I båda steg används induktion över termens respektive formelns struktur. De för oss intressantaste fallen är B = ( x)(b ) och B = ( x)(b ). Pga teoremet används i fortsättningen i samband med meningar notationen A J istället för v(a) (och v specificeras inte).
Exempel I formeln nedan är en tolkning redan vald. ( x)(((x > 1) är_udda(x)) ( är_primt(x + 1))) Det är nu ganska lätt att se att det inte spelar någon roll vilken värdering man väljer, eftersom sanningsvärdet av formeln A ges av följande: w(( x)(a)) = T omm w x=d (A) = T för alla d dom(j) w(( x)(a)) = T omm w x=d (A) = T för något d dom(j).
Modell, tautologi, satisfierbarhet, följd Låt A vara en mening och U en mängd av meningar i en predikatlogik L och J en tolkning. Följande begrepp definieras på ett liknande sätt som i satslogiken: J är en modell av A om A J = T. J är en modell av U om B J = T för varje B U. Mängden av alla modeller av A och U skrivs Mod(A) respektive Mod(U). A är satisfierbar om Mod(A). A är en tautologi om Mod(A) är mängden av alla tolkningar. U = A om Mod(U) Mod(A), alltså om varje modell av U också är en modell av A.