ALGORITMI- MATEMATIIKKA Keijo Ruohonen 1993
Kirjallisuutta ANDERSON, I.: A First Course in Combinatorial Mathematics. Oxford University Press (1979) GRAHAM, R.L. & KNUTH, D.E. & PATASHNIK, O.: Concrete Mathematics. A Foundation for Computer Science. Addison-Wesley (1989) GRAY, P.: Logic, Algebra and Databases. Ellis Horwood (1985) GREENE, D.H. & KNUTH, D.E.: Mathematics for the Analysis of Algorithms. Birkhäuser (1982) GRIMALDI, R.P.: Discrete and Combinatorial Mathematics. An Applied Introduction. Addison-Wesley (1994) KNUTH, D.E.: The Art of Computer Programming I. Fundamental Algorithms. Addison-Wesley (1975) MCELIECE, R.J. & ASH, R.B. & ASH, C.: Introduction to Discrete Mathematics. McGraw-Hill (1989) RICHARDS, T.: Clausal Form Logic. An Introduction to the Logic of Computer Reasoning. Addison-Wesley (1989) ROBINSON, J.A.: Logic: Form and Function. The Mechanization of Deductive Reasoning. Edinburgh University Press (1979) ROGERS, R.: Mathematical Logic and Formalized Theories. North-Holland (1974) SCHÖNING, U.: Logic for Computer Scientists. Birkhäuser (1989) SKIENA, S.: Implementing Discrete Mathematics. Addison-Wesley (1990) TRUSS, J.K.: Discrete Mathematics for Computer Scientists. Addison-Wesley (1991)
SISÄLTÖLUETTELO 1 I LAUSELOGIIKKA ELI PROPOSITIOLOGIIKKA 1 1. Perusoperaatiot ja totuustaulut 2 2. Laskulakeja 4 3. Normaalimuodot 4 4. Implikaatio-operaattori 5 5. Päättely. Tautologiat. Sijoitus 9 6. Päättelyn apuneuvoja: Premissiksi siirto 10 7. Päättelyn apuneuvoja: Reductio ad absurdum (RAA) 11 8. Päättelyn apuneuvoja: Resoluutio 14 9. Aksiomatisointi 16 II 1. KERTALUVUN PREDIKAATTILOGIIKKA 16 1. Yleistä 16 2. Kvanttorit 18 3. Predikaattikalkyyliä 21 4. Ekvivalenssi 21 5. Päättely 22 6. Normaalimuoto 25 7. Resoluutio 27 8. Päättelyn anatomiaa. Herbrandin universumi 30 9. Resoluutio Hornin konjunkteille. PROLOG 37 III KOMBINATORIIKKAA 37 1. Kombinaatiot 39 2. Binomikertoimet 44 3. Dirichlet n laatikkoperiaate. Inkluusio-ekskluusio-periaate 45 4. Permutaatiot 49 5. Stirlingin kaava 51 IV KOKONAISLUKUFUNKTIOT 51 1. Kertalukunotaatio 55 2. Katto ja pohja 57 3. Kongruenssilaskentaa 59 V REKURSIOKAAVAT 59 1. Yleistä 61 2. Ensimmäisen kertaluvun lineaarinen rekursiokaava 62 3. Vakiokertoiminen lineaarinen rekursiokaava HAKEMISTO
1 I LAUSELOGIIKKA ELI PROPOSITIOLOGIIKKA 1. Perusoperaatiot ja totuustaulut Lauselogiikka käsittelee ns. propositioita eli lauseita, joilla on ns. totuusarvo, "tosi" (T) tai "väärä" (V). Mitään muuta lauseen ominaisuutta ei oteta huomioon. Lauseita yhdistellään ns. loogisin operaatioin eli konnektiivein. Tuttuja konnektiiveja ovat "ja" (merkitään AND tai, joskus &), "tai" (merkitään OR tai ) sekä "ei" (merkitään NOT tai ~, joskus ). Totuusarvot muodostuvat tällöin seuraavasti: Yo. taulu on ns. totuustaulu. A B ~A A B A B T T V T T T V V V T V T T V T V V T V V Huomaa, että A B on tosi silloinkin, kun sekä A että B on tosi (ehkä hieman toisin kuin tavallisessa kielenkäytössä). Konnektiivi, jolle näin ei ole, on ns. eksklusiivinen "tai" (merkitään XOR, joskus tai +), jonka totuustaulu on A B A XOR B T T V T V T V T T V V V Mahdollisia kahden lauseen A ja B konnektiiveja on ilmeisesti 2 4 = 16 kpl. Yllä on niistä kolme. Nämä voidaan kuitenkin kaikki ilmaista yo. operaatioiden, ja ~ avulla. Esimerkiksi A XOR B = (A (~B)) ((~A) B), kuten voidaan totuustaulua käyttäen todeta. Huom! Itse asiassa yksi ainoa operaatiokin riittää. Tällainen on esimerkiksi "ei... eikä" (merkitään NOR, joskus ), jonka totuustaulu on
2 A B A NOR B T T V T V V V T V V V T Silloin ~A = A A, A B = (A A) (B B) ja A B = (A B) (A B). Jatkossa sovitaan, että operaatioiden suoritusjärjestys on ~,, (eli sama kuin aritmeettisten operaatioiden -,, +), jolloin sulkuja jätetään paljolti pois. Esimerkiksi edellä esiintyvä kaava on silloin A ~B ~A B. Ja-konnektiivia sanotaan usein konjunktioksi, tai-konnektiivia disjunktioksi ja eitä negaatioksi. Vastaavat operaatiot ovat konjungointi, disjungointi sekä negeeraus. Huom! Myös lauseista yo. operaatioin saatavat lausekkeet ovat itse asiassa lauseita, sillä niillä on totuusarvot. Sanaa lauseke käytetäänkin ilmaisemaan sitä, että lause on kirjoitettavissa muiden lauseiden avulla käyttäen loogisia operaatioita. 2. Laskulakeja Totuustauluja käyttäen voidaan todentaa seuraavat laskulait (jotka muuten tekevät lauselogiikasta ns. Boolen algebran): 1) A B = B A A B = B A (vaihdantalait) 2) (A B) C = A (B C) (A B) C = A (B C) (liitäntälait) 3) A T = A A V = A 4) A V = V A T = T
3 5) 6) A ~A = V A ~A = T A (B C) = A B A C A (B C) = (A B) (A C) (osittelulait) Pitkissä konjunktio- ja disjunktioketjuissa ei tarvitse käyttää sulkeita, sillä tulos on sulutuksesta riippumaton. Siis kirjoitetaan A 1 A 2 A n (joka on tosi täsmälleen silloin, kun A 1,A 2,...,A n ovat kaikki tosia) ja A 1 A 2 A n (joka puolestaan on tosi täsmälleen silloin, kun ainakin yksi lauseista A 1,A 2,...,A n on tosi). Asia on päätellen aika selvä *. Se voitaisiin todistaa formaalisestikin lähtien liitäntälaeista, mutta tämä ei ole aivan helppoa. Lähtien laeista 1) - 6) voitaisiin todistaa kaikki muut laskulait (helpommalla usein pääsee, kun käyttää totuustauluja). Tällaisia ovat esimerkiksi 7) ~~A = A (komplementäärisyyslaki) 8) A A = A A A = A (idempotenssilait) 9) A (A B) = A A (A B) = A (absorptiolait) 10) ~(A B) = ~A ~B ~(A B) = ~A ~B (de Morganin lait) Toistuvasti de Morganin lakeja käyttäen saadaan lisäksi lait ~(A 1 A 2 A n ) = ~A 1 ~A 2 ~A n ~(A 1 A 2 A n ) = ~A 1 ~A 2 ~A n Jos tehdään vaihdokset ja T V, * toisin kuin esimerkiksi matriisitulolle!
saadaan laskulaista aina toinen laskulaki (joskus sama). Tämä pätee yo. laskulaeille ja, koska kaikki lait saadaan laeista 1) - 6), kaikille laskulaeille. Tällä tavoin toisiinsa liittyvät lait ovat keskenään duaaliset. 4 3. Normaalimuodot Osittelulakeja käyttäen voidaan "kirjoittaa auki" lausekkeita, aivan kuten aritmetiikassakin. Kun lauseke kirjoitetaan auki käyttäen ensimmäistä osittelulakia ja de Morganin lakeja sekä sievennetään sitten niin pitkälle kuin mahdollista komplementäärisyyslakia käyttäen, saadaan se ns. disjunktiiviseen normaalimuotoon (DNF) D 1 D n, missä kukin ns. disjunkti D i on muotoa D i = A i1 A im i, missä puolestaan kukin ns. literaali A ij on lause tai lauseen negaatio. Vastaavasti, jos 1. osittelulain sijasta käytetään pelkästään toista osittelulakia (ja de Morganin lakeja ja sievennetään), saadaan lauseke ns. konjunktiiviseen normaalimuotoonsa (CNF) (C 1 ) (C n ), missä konjunktit C i ovat literaaliensa disjunktioita, ts. C i = A i1 A im i. Huom! Disjunkteista ja konjunkteista käytetään usein yhteistä nimeä klausa (engl. clause). 4. Implikaatio-operaattori "Tavallisessa" päättelyssä esiintyy "jos..., niin"-päätelmiä. Koska kyse on totuusarvoista, lauselogiikassa täytyy olla vastine eli "jos A, niin B"-päätelmä ja se on jokin niistä 16 mahdollisesta konnektiivista. Katsomalla todetaan, että ainoa valinta on ns. implikaatio (merkitään ), jonka totuustaulu on
5 A B A B T T T T V V V T T V V T Lausuttuna pykälän 1 operaatioiden avulla implikaatio on A B = ~A B. Huom! Usein päätelmä tehdään käänteisesti. Se on sallittua, sillä A B = ~A B = B ~A = ~~B ~A = (~B) (~A). Ekvivalenssi "jos ja vain jos" (merkitään ) on myös looginen operaatio. Se on luonnollisesti A B = (A B) (B A) = (~A B) (~B A) laskua = (A B) (~A ~B). Huomaa, että ei ole vaihdannainen, ts. A B B A, eikä myöskään liitännäinen, ts. (A B) C A (B C). Suoritusjärjestyksessä tulee operaatioiden ~, ja jälkeen ja vielä sen jälkeen. 5. Päättely. Tautologiat. Sijoitus Laskulakeja käyttäen voidaan muokata loogisia lausekkeita. Toisaalta logiikan semanttiseen olemukseen kuuluu päättely: "Jos lausekkeet A 1,...,A n ovat tosia, niin myös lauseke B on tosi." Päättelyn on oltava pitävä, ts. se on voitava todistaa oikeaksi. Tätä varten sallitaan päättely vain tietyillä ns. päättelysäännöillä, joita kylläkin voi käytössä olla paljon. Käytettyjen päättelysääntöjen tulee olla kyllin vahvat, jotta päästään haluttuun johtopäätökseen B. Klassiset päättelysäännöt ovat modus ponens (MP): Jos A on tosi ja A B on tosi, niin myös B on tosi. sekä
6 ketjusääntö (KS): Jos A B on tosi ja B C on tosi, niin myös A C on tosi. Nämä ovat, paitsi varsin luonnollisia, myös perusteltavissa "laskien", sillä ja A (A B) B = T (A B) (B C) (A C) = T. Päättely etenee päättelyketjuna: Lähdetään annetuista oletuksista A 1,, A n (ns. premissit), siis siitä että A 1,,A n ovat tosia, ja päätellään uusia tosia lausekkeita käyttäen päättelysääntöjä. Lausekkeita, jotka voidaan olettaa tosiksi, tulee näin koko ajan lisää. Jatketaan kunnes haluttu johtopäätös B on näin saatu pääteltyä. Merkitään A 1,,A n = B (tarkemmin sanoen tämä merkintä tarkoittaa, että vastaava päättely on oikea; toisinaan merkitään myös A 1,,A n - B). Huom! Toinen tapa todistaa päättely oikeaksi olisi totuustaulujen käyttö, mutta se on yleensä tavattoman työlästä, sillä A 1,,A n ja B ovat useinkin hyvin mutkikkaita lausekkeita tai sitten n on suuri (eli premissejä on paljon). Yo. tavalla päättely voidaan suorittaa täysin formaalisesti käyttäen symboleja,, ~,,, ( ja ) sekä tarvittavaa määrää symboleja niille propositioille, jotka eivät ole lausekkeita (ts. eivät ole ilmaistavissa toisten propositioiden lausekkeina), ns. atomeille. Syntaksi BNF-notaatiolla * : lauseke ::= propositio ~ propositio propositio operaatio propositio operaatio ::= propositio ::= atomi ( lauseke ) (huomaa, miten tämä syntaksi tuottaa "liikaa" sulkuja). Päättelysääntöjä voidaan nyt käyttää täysin mekaanisena symbolimanipulaationa. Vaikeutena on tietysti löytää oikea päättelyketju. * "BNF" = Backus-Naur form
Lauseke, joka on tosi riippumatta siinä esiintyvien atomien totuusarvoista, on ns. tautologia. Jos A on tautologia, on se pääteltävissä tavallaan mistä tahansa premisseistä, A:han on joka tapauksessa tosi. Tätä merkitään = A (toisinaan myös - A). Päättelyketjun missä tahansa vaiheessa, erityisesti sen alussa, voi siis ottaa käyttöön tautologian. Luonnollisesti, jos tautologian jonkin atomin tilalle kirjoitetaan joka paikkaan sama lauseke, niin tulos on edelleen tautologia. Lausekkeen todistaminen tautologiaksi käy jollain seuraavista tavoista: 1) muodostetaan lausekkeen totuustaulu (useimmiten työlästä); 2) kirjoitetaan lauseke jompaankumpaan normaalimuotoonsa ja sievennetään niin pitkälle kuin mahdollista käyttäen laskulakeja; tulokseksi pitää saada T (toisinaan sievennys on helppoa suoraankin ilman normaalimuotoa); tai 3) todistetaan lauseke formaalisesti tautologiaksi lähtien annetuista aksiomista ja käyttäen päättelysääntöjä (ks. pykälä 9). 7 Tautologiat ovat lauselogiikan teoreemoja, siis loogisia totuuksia. Hyödyllisiä tautologioita ovat mm. edellä olleet MP ja KS sekä esimerkiksi A (A B) B (A B) (B C) (A C) ja ~B (A B) ~A (A B) (A C B C). MP:n ja KS:n lisäksi myös kaksi vm. tautologiaa ovat tulkittavissa päättelysäännöiksi. Itse asiassa pätee yleisempikin tulos: LAUSE 1. A = B täsmälleen silloin, kun A B on tautologia (eli = A B). Todistus. Jos A = B, niin saadaan totuustaulu A B A B T T T V T T V V T
joten tällöin A B on aina tosi. (Huomaa, että oletus A = B sulkee pois tapauksen, jossa A:n totuusarvo on T ja B:n V.) Jos taas A B on tautologia, niin implikaation totuustaulun mukaan A:n totuudesta seuraa B:n totuus, jolloin A = B. SEURAUS. A 1,,A n = B täsmälleen silloin, kun = A 1 A n B. 8 Todistus. A 1,,A n ovat kaikki yhtaikaa tosia täsmälleen silloin, kun A 1 A n on tosi. Eräs päättelyn apuväline on sijoitus: Jos lausekkeessa A 1 esiintyy osana lauseke B ja A 2 saadaan A 1 :stä sijoittamalla B:n paikalle lauseke C (ei välttämättä joka paikkaan), niin A 1, B C = A 2. Ts. ekvivalentteja lausekkeita voidaan päättelyn aikana mielin määrin korvata toisillaan. Erityisesti, jos B C on tautologia, niin tällöin A 1 = A 2. Sijoituksen pätevyys seuraa suoraan totuustaulujen perusteella, sillä jos B C on tosi, niin B:n ja C:n totuusarvot ovat samat. Jos = B C, niin B=C on (Boolen algebran) laskulaki. Tässä tapauksessa si-joitus onkin siis laskulain käyttöä. Toisaalta, jos B=C on laskulaki, niin sel-västi = B C ja tätä voidaan käyttää yo. päättelyssä A 1 = A 2. Laskulain käyttö klassisessa päättelyssä onkin siis "naamioitunut" sijoitukseksi. Kun tämä tiedetään, voidaan laskulakeja tietysti käyttää "suoraankin" päättelyketjun välitulosten muokkaamisessa. MP ja KS ovat "luonnollisia" päättelysääntöjä. Kumpikin riittää yksinäänkin, jos "apuna" käytetään sopivia tautologioita. MP:n käyttö voidaan korva-ta KS:n käytöllä, sillä päättely voidaan laskulakeja A, A B = B (MP) eli tautologioita A = A ~A A ja A ~A B = B A A ~A A ja A ~A B B käyttäen (sijoitus!) pukea KS-päättelyksi A ~A A, A B = A ~A B. Vastaavasti voidaan KS korvata MP:llä, jos KS otetaan käyttöön tautologiana (A B) (B C) (A C).
9 Tällöin päättely A B, B C = A C (KS) voidaan pukea MP-päättelyksi (A B) (B C), (A B) (B C) (A C) = A C. Tautologioiden käyttö päättelyssä ei yleisesti ole aivan niin mutkatonta kuin yllä, sillä on tiedettävä mitä tautologioita käyttää ja että kyseessä todella ovat tautologiat. On huomattava, että useinkaan ei itse asiassa kiinnosta päättelyn A 1,,A n = B oikeellisuus, vaan miten se tehdään tehokkaasti askel askeleelta. Seuraavassa kolmessa pykälässä on esitetty apuneuvoja, joilla päättely voidaan tehdä tehokkaaksi. 6. Päättelyn apuneuvoja: Premissiksi siirto Menettely esiintyy jo Lauseessa 1 ja sen Seurauksessa. Yleisemmin voidaan esittää LAUSE 2. Päättelyn A 1,,A n = B C kanssa ekvivalentti päättely on A 1,, A n,b = C (ts. siirretään B premissiksi). Todistus. Otetaan käyttöön laskulaki X (Y Z) = X Y Z (eli tautologia X (Y Z) X Y Z sijoituksen kautta). Silloin A 1,,A n,b = C Lauseen 1 * Seuraus = A 1 A n B C laskulaki = A 1 A n (B C) Lauseen 1 Seuraus A 1,,A n = B C. * Tämä on metakielen ekvivalenssi, kun taas on looginen operaatio.
10 7. Päättelyn apuneuvoja: Reductio ad absurdum (RAA) LAUSE 3. Päättelyn A 1,,A n = B C kanssa ekvivalentti päättely on A 1,, A n,~c = ~B. Todistus. Otetaan käyttöön laskulaki (ks. sivu 5). Silloin X Y = ~Y ~X A 1,,A n,~c = ~B Lause 2 A 1,,A n = ~C ~B laskulaki A 1,,A n = B C. SEURAUS (RAA). Päättelyn A 1,,A n = B C kanssa ekvivalentti päättely on A 1,,A n,b,~c = V (yleensä V on muotoa D ~D). Todistus. Otetaan käyttöön laskulaki ~B = B V. Silloin A 1,,A n = B C Lause 3 A 1,,A n,~c = ~B laskulaki A 1,,A n,~c = B V Lause 2 A 1,,A n,~c,b = V. Huom! Mieti tarkasti, milloin muotoa A 1,,A n =V oleva päättely on oikea. Lause 3 on sellaisenaankin usein käyttökelpoinen. RAA on matematiikan vastaoletuksen käytön vastine lauselogiikassa. Sen etuna on tavoitteen
11 (=V) yksinkertaisuus. RAA on varsin vahva päättelystrategia, kun se sopii: pitkä ja vaikeasti löydettävä suora päättely korvautuu useinkin varsin lyhyellä ja helposti löydettävällä käänteisellä päättelyllä, kuten matematiikan todistuksista huomataan. 8. Päättelyn apuneuvoja: Resoluutio KS yhdessä RAA:n kanssa muodostaa vahvan ja helposti mekanisoitavan päättelymenetelmän. (Kuten s. 8 todettiin, voidaan MP:n käyttö korvata KS:n käytöllä.) Tällöin KS kirjoitetaan seuraavaan muotoon: Jos ~A B on tosi ja B C on tosi, niin myös ~A C on tosi. Koska toisaalta ~A B = A B, B C = C ~B ja ~A C = A C, saadaan KS edelleen muotoon resoluutiosääntö (RS): Jos A B on tosi ja C ~B on tosi, niin myös A C on tosi. RAA saadaan käyttöön joko sellaisenaan tai muodossa LAUSE 4. Päättelyn A 1,,A n = B kanssa ekvivalentti päättely on A 1,,A n, ~B = V. Todistus. Otetaan käyttöön laskulaki Silloin B = T B. A 1,,A n = B laskulaki A 1,,A n = T B RAA A 1,,A n,t,~b = V Lause 2 A 1,,A n,~b = T V laskulaki A 1,,A n,~b = V.
12 RAA:ia tai Lausetta 4 käyttäen voidaan rajoittua muotoa A 1,,A n = V oleviin päättelyihin. Resoluutiomenettely 1) Kirjoitetaan kukin lausekkeista A 1,,A n konjunktiiviseen normaalimuotoon, jonka literaalit ovat atomeja tai atomien negaatioita. (Ks. pykälä 3.) Kerätään yhteen kaikki näin saadut konjunktit: C 1,,C m. Päättelyt ja A 1,,A n = V C 1,,C m = V ovat ilmeisesti ekvivalentit, sillä A 1 A n = C 1 C m ja päättelyt A 1,,A n = V ja A 1 A n = V ovat samat, samoin päättelyt C 1,,C m = V ja C 1 C m = V. 2) Siirrytään tutkimaan päättelyä C 1,,C m = V. 3) Jos konjunktien C 1,,C m joukosta löytyy kaksi konjunktia, joista yhdessä on literaalina jokin atomi sellaisenaan ja toisessa sama atomi negeerattuna, niin sovelletaan RS:ä. Esimerkiksi, jos ja X Y Z ~W Y W U ovat tällaiset konjunktit, niin niistä päätellään uusi konjunkti X Y Z U käyttäen RS:ä. (Huomaa myös toisen idempotenssilain käyttö literaalien toiston eliminoimiseksi uudessa konjunktissa.) Saatu uusi konjunkti lisätään konjunktilistaan C 1,,C m. Jos toinen konjunkteista on yksiliteraalinen, mutta toinen taas ei, esimerkiksi X ~Y Z ja Y,
13 voidaan RS:ä soveltaa, kun ajatellaan Y muodossa V Y. Uusi konjunkti on nyt X Z V eli X Z. Jos taas molemmat konjunktit ovat yksiliteraalisia, esimerkiksi X ja ~X, päätellään V ja lopetetaan. (Tämäkin voidaan katsoa RS:n soveltamiseksi: Kirjoitetaan vain X = X V ja ~X = ~X V ja päätellään V V = V.) 4) Kohtaa 3) toistetaan, kunnes V on saatu pääteltyä tai uusia konjunkteja ei enää synny RS:n avulla. (Äärellistä literaalimäärää käyttäen syntyy vain äärellinen määrä konjunkteja, joissa ei ole toistuvia literaaleja.) VÄITE. Jos menettely pysähtyy, mutta V:ä ei ole saatu pääteltyä, ei päättely ollut alunperinkään mahdollinen, ts. lausekkeiden A 1,,A n (tai vastaavasti konjunktien C 1,,C m ) atomeille voidaan valita sellaiset totuusarvot, että A 1,,A n (ja C 1,,C m ) saavat kaikki totuusarvon T. Matemaattinen todistus tälle tosiasialle on vähän konstikas: Todistus. Tarkastellaan niitä konjunkteja, jotka ovat käsillä prosessin pysähtyessä ilman, että V:ä olisi päätelty. Olkoot kaikki tällöin esiintyvät atomit (jossain järjestyksessä) Konstruoidaan literaalijono X 1,..., X k. missä Y 1,, Y k, Y i = X i tai Y i = ~X i, seuraavasti: ja Y 1 = X 1, jos ~X 1 ei ole konjunkti ~X 1, jos ~X 1 on konjunkti Y i = X i, jos jokaisessa konjunktissa esiintyy muitakin literaaleja kuin ~Y 1,,~Y i-1,~x i ~X i, jos jossain konjunktissa esiintyy vain literaaleja ~Y 1,,~Y i-1,~x i. Valitaan sitten atomeille X 1,,X k totuusarvot siten, että Y 1,,Y k ovat tosia. Tällöin kaikki konjunktit (ja erityisesti C 1,,C m ) ovat myös tosia, kuten voidaan todeta asettamalla vastaoletus * : Jokin konjunkteista saa totuusarvon V, ts. sen kaikki literaalit ovat joukossa ~Y 1,,~Y k (siis "vääriä"). * Tässäkin vastaoletus (eli "metakielen" RAA) on tehokkaampi kuin suora todistus!
Näytetään, että vastaoletuksesta seuraa ristiriita. Valitaan pienin sellainen indeksin arvo j, että jonkin konjunktin, sanotaan C:n, kaikki literaalit ovat joukossa ~Y 1,,~Y j. Silloin Y j = ~X j (muutoin eo. Y j :n määrittely ei toteudu). Koska j on pienin mahdollinen, ~Y j (eli X j ) esiintyy C:ssä. Edelleen Y j :n määrittelyn nojalla on toinen konjunkti, sanotaan C', jonka kaikki lite-raalit ovat joukossa ~Y 1,,~Y j-1,~x j (eli joukossa ~Y 1,,~Y j-1,y j ). Nyt Y j (eli ~X j ) esiintyy C':ssa, muuten sen kaikki literaalit olisivat jo joukossa ~Y 1,,~Y j-1 ja j ei olisikaan pienin mahdollinen. Kun sovelletaan RS:ä C:hen ja C':uun, saadaan konjunkti C", jossa esiintyvät literaalit ovat joukossa ~Y 1,,~Y j-1. (Huomaa, että j > 2, sillä muuten C = X j ja C' = ~X j ja V voitaisiin päätellä.) Nyt C" on myös tarkasteltujen konjunktien joukossa, (sillä j on pienin mahdollinen). Resoluutioperiaatetta käyttäen voidaan näin ollen suorittaa kaikki päättelyt. Käytännössä päättelyn ollessa mahdollista, niiden konjunktien valinta, joihin RS:ä sovelletaan, on suoritettava "harkiten". (Asiaan palataan seuraavassa luvussa.) Usein merkitään V = ja puhutaan tyhjästä konjunktista. 14 9. Aksiomatisointi Tautologiat ovat yleispäteviä loogisia totuuksia, ts. lauselogiikan teoreemoja. Teorian aksiomatisoinnilla tarkoitetaan menettelyä, jossa tietyistä aksiomista voidaan sovittu(j)a päättelysääntö(j)ä käyttäen johtaa kaikki teorian teoreemat (tai ainakin "kyllin suuri osa" niistä). Lauselogiikan aksiomat ovat luonnollisesti tautologioita. Aksiomien valintoja tunnetaan lukuisia. Eräs valintakriteeri on "taloudellisuus": "turhia" aksiomia, ts. sellaisia, jotka voidaan johtaa muista aksiomista, ei oteta mukaan. "Taloudellinen" aksiomasysteemi voi kuitenkin olla vaikeakäyttöinen. "Turhia" aksiomia otetaankin joskus mukaan teoreemojen johtojen helpottamiseksi. Eräs lauselogiikan aksiomatisointi Annetaan ensin ns. aksiomakaaviot (kolme kpl): (I) (II) P (Q P) (P (Q R)) ((P Q) (P R)) (III) (~Q ~P) (P Q)
Varsinaiset aksiomat (äärettömän monta) saadaan sijoittamalla aksiomakaavioissa esiintyvien symbolien P, Q ja R paikalle kaikilla mahdollisilla tavoilla kulloinkin käsillä olevista atomeista muodostetut lausekkeet. Huom! Jos kaaviossa esiintyy sama symboli monta kertaa, on sen paikalle sijoitettava joka kohtaan sama lauseke. Koska aksiomakaaviot ovat tautologioita, ovat myös kaikki aksiomat tautologioita. Päättelysääntönä on MP, ts. "tyypillinen" johdon askel on A, A B - B. 15 Huom! Syntaktisen johdon merkkinä käytetään merkkiä -, (semanttisen) päättelyn merkkinä merkkiä =. * Aksiomakaavioissa esiintyy vain loogisia operaatioita ~ ja. Näillä tultaisiin toimeen sellaisenaankin, sillä A B = ~A B, ja A B = ~(A ~B) A B = (A B) (B A). Teoreeman (siis tautologian) (syntaktista) johtoa kutsutaan teoreeman todistukseksi. Voidaan osoittaa, että eo. aksiomista lähtien voidaan johtaa tarkalleen kaikki tautologiat. (Selvästi ei muita kuin tautologioita voida johtaa: Jos A ja A B ovat tautologioita, niin samoin on B.) Jos A on aksiomien joukko, josta teoreema B voidaan johtaa, merkitään A - B (tai vain - B, jos A on sovittu). Lauselogiikassa - B merkitsee, että B on tautologia eli samaa kuin = B. * Joissain kirjoissa nämä ovat tosin vaihtaneet paikkaa!
16 II 1. KERTALUVUN PREDIKAATTILOGIIKKA 1. Yleistä Lauselogiikan propositiot (lausekkeet) ovat totuusarvomielessä atomiensa funktioita, ns. Boolen funktioita. Atomien totuusarvon määrittelyalue on tietysti {T,V}. Yleisemmin voitaisiin ottaa käyttöön yksi tai useampia muuttujia eli parametreja x,y,z,, joiden määrittelyalueillaan saamista arvoista "lausekkeen" P(x,y,z, ) totuusarvo riippuu. Tällaisia "lausekkeita" kutsutaan (muuttujiensa) predikaateiksi. Koska predikaatit ovat totuusarvoisia, niitä voidaan yhdistellä ja muokata tavalliseen tapaan lauselogiikan operaatioin. Tapa, jolla predikaatti määritellään, riippuu usein sen muuttujien määrittelyalueista. Esimerkiksi, jos muuttujien määrittelyalue on reaalilukujen joukko Ä, voidaan predikaattien määrittelyssä käyttää tuttuja operaatioita, funktioita ja relaatioita +, -,, /,, =, >, jne.. Huom! Muuttujien määrittelyalueet voivat olla varsin mielivaltaisia. Kuitenkaan muuttujien arvot eivät saa olla joukkoja, jos ko. joukon alkioita on jonkin (toisen) muuttujan määrittelyalueessa. Muuttujien arvot eivät myöskään saa olla funktioita tai predikaatteja, jos näillä on yhteisiä muuttujia jonkin predikaatin kanssa. Muussa tapauksessa kyseessä on korkeamman kuin 1. kertaluvun logiikka, jollaisia ei tässä kurssissa käsitellä. 2. Kvanttorit Universaalikvanttori eli kaikkikvanttori Se, että predikaatti P(x) on tosi kaikilla x:n määrittelyalueen arvoilla, ilmaistaan predikaattilogiikassa käyttäen kaikkikvanttoria : ( x)p(x). Tulos voidaan tulkita propositioksi, joka on tosi tarkalleen silloin, kun P(x) on tosi kaikilla x:n arvoilla. Jos predikaatissa on x:n lisäksi muitakin muuttujia y,z,, voidaan myös kirjoittaa ( x)p(x,y,z, ). Tulos ei ole nyt propositio, vaan muuttujien y,z, predikaatti.
17 Eksistentiaalikvanttori eli olemassaolokvanttori Se, että predikaatti P(x) on tosi jollakin x:n määrittelyalueen arvolla, ilmaistaan olemassaolokvanttorin avulla: ( x)p(x). Jälleen tulos voidaan tulkita propositioksi, joka on tosi tarkalleen silloin, kun P(x) on tosi ainakin yhdellä x:n arvolla. Huom! ( x)p(x) on siis tosi myös, jos P(x) toteutuu useammallakin x:n arvolla kuin vain yhdellä. Erityisesti, jos ( x)p(x), niin myös ( x)p(x). Jos halutaan ilmaista, että P(x) on tosi tarkalleen yhdellä x:n arvolla, kirjoitetaan ( x) P(x). Muotoa ( x)p(x,y,z, ) tai ( x)p(x,y,z, ) olevissa ilmaisuissa muuttujan x sanotaan olevan sidottu ja muuttujien y,z, sanotaan olevan vapaita. Sidottu muuttuja voidaan aina vaihtaa toiseksi, kunhan määrittelyalue pysyy samana: esimerkiksi propositiot ovat samat, samoin predikaatit ( x)p(x) ja ( t)p(t) ( x)p(x,y,z, ) ja ( t)p(t,y,z, ), olettaen, että x:n ja t:n määrittelyalueet ovat samat. Mutkikkaammissa ilmaisuissa sama muuttuja voi esiintyä sekä sidottuna että vapaana, esimerkiksi ilmaisussa (( x)p(x,y,z)) Q(x,y) x esiintyy sekä vapaana että sidottuna (y ja z esiintyvät vain vapaina). Tällaisessa tapauksessa sidottu muuttujan esiintymä voidaan tarvittaessa korvata uuden muuttujan sidotulla esiintymällä, esimerkiksi yo. ilmaisu voitaisiin korvata ilmaisulla (( t)p(t,y,z)) Q(x,y), jälleen olettaen, että x:n ja t:n määrittelyalueet ovat samat. Itse asiassa voi-taisiin olettaa, ettei ilmaisuissa esiinny samaa muuttujaa sekä sidottuna et-tä vapaana. Näin ei kuitenkaan aina tehdä.
Kvanttorien käyttöön voidaan liittää seuraava väljä nyrkkisääntö: Kaikkikvanttori liittyy yleensä implikaatioon (tai disjunktioon) ja olemassaolokvanttori konjunktioon, ts. esimerkiksi ilmaisut 18 ja ( x)(p(x,y) Q(x,y)) (eli ( x)(~p(x,y) Q(x,y)) ) ( x)(p(x,y) Q(x,y)) sekä muut niiden kaltaiset ilmaisut ovat "tyypillisiä". 3. Predikaattikalkyyliä Väljästi sanoen predikaattikalkyyli tarkoittaa sellaisten ilmaisujen manipulaatiota ja tarkastelua, joissa esiintyy predikaatteja (sekä näiden yhteydessä funktioita, ks. s. 16), propositioita, kvanttoreita ja lauselogiikan operaatioita. Kvanttorien yhdistelmät Välittömästi toisiaan seuraavien samantyyppisten kvanttorien järjestys on yhdentekevä, ts. esimerkiksi ovat samat, samoin ( x)(( y)p(x,y,z)) ja ( y)(( x)p(x,y,z)) ( x)(( y)p(x,y,z)) ja ( y)(( x)p(x,y,z)). Peräkkäisten erityyppisten kvanttorien järjestys sen sijaan ei ole yhdente-kevä. Esimerkiksi eivät yleensä ole samat. ( x)(( y)p(x,y,z)) ja ( y)(( x)p(x,y,z)) Peräkkäiset kvanttorit kirjoitetaan usein yhteen tai ilman sulkeita, siis esimerkiksi ( x,y)p(x,y,z) ja ( y)( x)p(x,y,z). Koska sidottuja muuttujia saa vaihtaa, voidaan tarvittaessa olettaa, että jokaisella kvanttorilla on oma sidottu muuttujansa ja että mikään näistä sidotuista muuttujista ei esiinny samassa ilmaisussa vapaana.
19 Kvantifioitujen lausekkeiden negeeraus Kvantifioiduille lausekkeille pätevät yleistetyt de Morganin lait: ~(( x)p(x,y,z, )) = ( x)(~p(x,y,z, )) ~(( x)p(x,y,z, )) = ( x)(~p(x,y,z, )) Nämä kaavat ovat tosiaan de Morganin lakien yleistyksiä: Jos nimittäin x:n määrittelyalue on esimerkiksi {1,,n}, niin ja ( x)p(x) = P(1) P(n) ~(( x)p(x)) = ~(P(1) P(n)) de Morgan = ~P(1) ~P(n) = ( x)(~p(x)). Huom! Sulkeita jätetään usein pois ja kirjoitetaan esim. ~( x)p(x,y,z, ) = ( x)~p(x,y,z, ). Syntaksi BNF-notaatiota käyttäen saadaan määriteltyä syntaktisesti oikeat lausekkeet seuraavasti: vakio ::= symboli muuttuja ::= symboli funktio ::= symboli predikaatti ::= symboli termi ::= vakio muuttuja funktio ( termiluettelo ) termiluettelo ::= termi termi, termiluettelo atomi ::= predikaatti predikaatti ( termiluettelo ) literaali ::= atomi ~ atomi operaatio ::=
20 muuttujaluettelo ::= muuttuja muuttuja, muuttujaluettelo kvanttori ::= ( muuttujaluettelo ) ( muuttujaluettelo ) lauseke ::= literaali ~( lauseke ) kvanttori ( lauseke ) ( lauseke ) operaatio ( lauseke ) (Huomaa, miten tämä syntaksi tuottaa "liikaa" sulkeita.) Näin määritellyt lausekkeet ovat ns. hyvin muodostetut lausekkeet (WFF = "well-formed formula"). Vakioita, muuttujia, funktioita ja predikaatteja merkitseviä symboleja varataan käyttöön tarpeen mukaan. Usein ne ovat "tuttuja": vakioita: c, 0, 1, 2, π,... muuttujia: x, y, z, funktioita: f, g, sin, exp,, +, -,, /, predikaatteja: P, Q, =, >, Semanttisesti tulee mukaan lisävaatimuksia: Vakioilla on oltava tietyt sovitut arvot. Muuttujien määrittelyalueet on sovittava. Kullakin funktiolla on oltava aina sama määrä muuttujapaikkoja ja sen on oltava määritelty muuttujiensa määrittelyalueilla. Kullakin predikaatilla on oltava aina sama määrä muuttujapaikkoja ja sen on oltava määritelty muuttujiensa määrittelyalueilla. Huom! Syntaksissa määritellyn prefiksinotaation sijasta käytetään usein tuttua infiksinotaatiota, esimerkiksi x+y eikä +(x,y) tai x=y eikä =(x,y). Varsinainen infiksinotaatiota käyttävä syntaksi määritellään formaalisesti hieman eri tavalla. Huom! Syntaksi sallii myös "puhtaat propositiot": ne ovat predikaatteja, joilla on nolla kpl muuttujia. Merkinnän P() sijasta käytetään merkintää P. Huom! Semanttisesti muuttujan x määrittelyalueen A alijoukot voidaan samaistaa tiettyihin predikaatteihin P(x): Joukko B A samaistetaan predikaattiin T, jos x B P(x) = V, jos x B.
21 4. Ekvivalenssi Predikaatit P(x,y,z, ) ja Q(x,y,z, ) ovat ekvivalentit, jos ( x,y,z, )(P(x,y,z, ) Q(x,y,z, )) on tosi. Lauselogiikassa lausekkeiden ekvivalenssi voidaan aina todistaa laskulaeilla, päättelyllä, aksiomatisoinnilla tai totuustauluilla. Predikaattilogiikassa ekvivalenssi on algoritmisesti ratkeamaton (ks. 73117 Automaattiteoria). Semanttisesti tulee mukaan lisäksi se, että eri predikaatteja ja funktioita käyttäen voidaan ilmaista ekvivalentteja asioita. Syntaktisesti ei tällaista ekvivalenssia voida yleisesti ottaen todistaa. Näin ollen mitään laskulakikokoelmaa (vrt. pykälä I.2) ei predikaattilogiikassa ole algoritmisesti käytettävissä, paitsi tietysti lauselogiikan operaatioiden osalta. 5. Päättely Predikaattilogiikan päättelytehtävä on sama kuin lauselogiikassa: Selvitettävä onko päättely "Jos lausekkeet A 1,...,A n ovat tosia, niin myös lauseke B on tosi." oikea, merkitään A 1,,A n = B. Huomaa, että premissien A 1,,A n totuus riippuu niissä esiintyvien vapaiden muuttujien arvoista ja samoja muuttujia voi olla vapaina myös B:ssä; sama koskee predikaatteja, vakioita ja funktioita. RAA on voimassa myös predikaattilogiikan päättelyssä. Näin ollen voidaan rajoittua muotoa A 1,,A n = V oleviin päättelyihin (ks. pykälät I.7-8). LAUSE 5. Jos lausekkeissa A 1,,A n esiintyvät vapaat muuttujat ovat x 1,,x k, niin päättelyt A 1,,A n = V ja ( x 1,,x k )(A 1 A n ) = V ovat ekvivalentit.
22 Todistus. muuttujien A 1,,A n = V A 1,,A n eivät ole yhtaikaa tosia millään x 1,,x k arvoilla. ( x 1,,x k )(~A 1 ~A n ) on tosi. de Morgan ( x 1,,x k )(A 1 A n ) on väärä. ( x 1,,x k )(A 1 A n ) = V Näin ollen voitaisiin olettaa, että premisseissä ei ole vapaita muuttujia. Toisaalta näin on usein jo alunperin. Jatkossa oletetaankin, että vapaita muuttujia ei päättelyssä esiinny. Kätevä päättelyn apuneuvo, erityisesti resoluutiomenetelmää sovellettaessa, on ilmeinen sijoitussääntö (SS): Jos t on termi, jossa esiintyy vain muuttujia x 1,, x k ja jonka arvot ovat muuttujan x i määrittelyalueessa, niin ( x 1,,x k )P(x 1,,x k ) = ( x 1,,x k ) P(x 1,,x i-1,t,x i+1,,x k ) (ks. termin syntaktinen määritelmä s.19). Usein sijoitettava termi on vakio, jonka on tällöin oltava x i :n määrittelyalueessa. Sijoitussäännön vaatima premissin muoto ei ole kovinkaan vaativa, kuten nähdään seuraavassa pykälässä. 6. Normaalimuoto Jatkamalla sivun 19 BNF-syntaksia säännöillä normaalimuoto ::= CNF kvanttori ( normaalimuoto ) CNF ::= ( konjunkti ) ( konjunkti ) CNF konjunkti ::= literaali literaali konjunkti
saadaan syntaktinen määritelmä ns. prenex-normaalimuodolle. Lauseke on prenex-normaalimuodossa, jos kaikki sen kvanttorit ovat lausekkeen edessä ja loppuosa on konjunktiivisessa normaalimuodossa. Prenex-normaalimuotoinen lauseke on edelleen ns. Skolemin normaalimuodossa, jos siinä olemassaolokvanttorit edeltävät kaikkikvanttoreita, ts. lauseke on (muuttujien järjestystä ehkä lukuunottamatta) muotoa ( x 1 ) ( x m )( x m+1 ) ( x k )P(x 1,,x k ), missä P(x 1,,x k ) ei sisällä kvanttoreita. (Tapauksilla m=0 ja m=k on ilmeiset tulkinnat.) Voidaan osoittaa, että jokainen lauseke voidaan korvata (vieläpä algoritmisesti!) ekvivalentilla Skolemin normaalimuodossa olevalla lausekkeella. Muotoa A 1,,A n = V eli A 1 A n = V, missä premisseissä ei ole vapaita muuttujia, olevaa päättelyä ajatellen voidaan A 1 A n korvata eräällä (ei välttämättä ekvivalentilla!) Skolemin normaalimuodossa olevalla lausekkeella B, kunhan (* ) B toteutuu A 1 A n toteutuu. B:n toteutuminen tarkoittaa sitä, että siinä esiintyvien vakioiden arvot voidaan valita ja predikaatit sekä funktiot määritellä siten, että B on tosi (vapaita muuttujiahan B:ssä ei ole); vastaavasti A 1 A n :n toteutuminen. Huomaa, ettei tällöin (* ) merkitse B:n ja A 1 A n :n ekvivalenttisuutta. 23 Tällainen lauseke B saadaan seuraavalla menettelyllä, ns. Skolemin muunnoksella (engl. Skolemization): 1) Poistetaan ekvivalenssit: P Q korvataan (P Q) (Q P):llä. 2) Poistetaan implikaatiot: P Q korvataan ~P Q:lla. 3) Siirretään negeeraus lausekkeen " sisään" (yleistetyillä) de Morganin laeilla. 4) Poistetaan peräkkäiset negeeraukset komplementäärisyyslailla. 5) Poistetaan olemassaolokvanttorit: Jos kvantifiointi ( x) ei ole minkään kaikkikvanttorin vaikutusalueella, korvataan x ns. Skolemin vakiolla a jokaisessa esiintymässään ja kvantifiointi ( x) sulkeineen poistetaan. Skolemin vakio ei saa olla lausekkeessa ennestään esiintyvä vakio. Aina kun poistetaan eo. tavalla olemassaolokvanttori, pitää valita uusi Skolemin vakio. Skolemin vakio on määräämätön vakio, joka "edustaa" sellaista x:n arvoa, jolle tarkasteltava lausekkeen osa on tosi. Jos taas kvantifiointi ( x) on yhden tai useamman kaikkivanttorin vaikutusalueella, sa-
notaan kaikkikvanttorien ( y 1 ),,( y k ) vaikutusalueilla, tulisi Skolemin vakio riippumaan muuttujien y 1,,y k arvoista, ts. se olisi näiden funktio. Tällöin x:n paikalle kirjoitetaan jokaisessa esiintymässä ns. Skolemin funktio f(y 1,,y k ) ja kvantifiointi ( x) sulkeineen poistetaan. Skolemin funktio ei saa olla mikään lausekkeessa aikaisemmin esiintyvä funktio. Jokaista olemassaolokvanttorin tällaista poistoa varten tarvitaan uusi Skolemin funktio. Skolemin funktio on määräämätön funktio, joka "antaa" kutakin muuttujien y 1,,y k arvoyhdelmää kohti sellaisen x:n arvon, jolla kyseinen lausekkeen osa toteutuu. Huom! Skolemin vakiot ja funktiot ovat formaalisesti vain uusia vakio- ja funktiosymboleja. Ne eivät saa olla sellaisia, joiden semanttinen merkitys on jo sovittu (esimerkiksi 1, π, sin, ). 6) Korvataan tarvittaessa jäljelle jääneitä sidottuja muuttujia uusilla, niin ettei sama muuttuja esiinny eri kvantifioinneissa. 7) Siirretään kaikkikvanttorit lausekkeen alkuun. 8) Kaikkikvanttorien jälkeen tuleva lausekkeen osa on nyt literaaleista, suluista ja propositiologiikan operaatioista ja muodostuva lauseke. Saatetaan se konjunktiiviseen normaalimuotoonsa (ks. pykälä I.3). Sovellettaessa Skolemin muunnosta lausekkeeseen, jossa ei ole vapaita muuttujia (kuten voimme olettaa, ks. s. 22), saadaan tuloksena lauseke, a) jossa ei myöskään ole vapaita muuttujia, b) jossa esiintyy vain kaikkikvanttoreita eikä lainkaan olemassaolokvanttoreita, c) jonka kaikki kaikkikvanttorit sitovat eri muuttujia ja ovat lausekkeen edessä (jolloin ne voidaan yhdistää yhdeksi kvantifioinniksi, ks. s. 18) ja d) jossa lausekkeen loppuosa on konjunktiivisessa normaalimuodossa. LAUSE 6. Jos lauseke B saadaan Skolemin muunnoksella lausekkeesta A, niin B on toteutuva tarkalleen, kun A on toteutuva. ( Huom! Jotta B saataisiin toteutumaan, on erityisesti siinä esiintyville Skolemin vakioille annettava arvot ja esiintyvät Skolemin funktiot on määriteltävä. A:ssa näitä vakioita ja funktioita ei ole.) Todistus. Oletetaan, että A on toteutuva. Silloin A:n vakioille on annettu sellaiset arvot ja A:n predikaatit sekä funktiot on määritelty siten, että A saadaan todeksi. Otetaan samat arvot ja määrittelyt käyttöön B:n predikaateille sekä muille vakioille ja funktioille kuin sen Skolemin vakioille ja Skolemin funktioille. Edelleen A:n olemassaolokvantifioinnit anta- 24
vat tällöin vastaaville A:n sidotuille muuttujille arvot. Otetaan nämä käyttöön B:n Skolemin vakioiden arvotuksessa ja sen Skolemin funktioiden määrittelyssä. Näin nähdään, että B saadaan todeksi, sillä Skolemin muunnoksen operaatiot 1-4) ja 6-8) säilyttävät toteutumisen *. Oletetaan, että B toteutuu. Olkoon C lauseke, joka on saatu A:sta operaatioiden 1-4) jälkeen, ja D lauseke, joka on saatu C:stä operaation 5) jälkeen. Koska operaatiot 6-8) säilyttävät toteutumisen myös käänteisinä *, myös D toteutuu. Skolemin vakioiden arvoista ja Skolemin funktioiden määrittelyistä saadaan nyt C:n olemassaolokvantifioiduille muuttujille arvot, joilla C toteutuu. Operaatiot 1-4) säilyttävät myös toteutumisen käänteisinäkin, joten A toteutuu. Huom! Yo. todistus osoittaa, että B A on aina tosi. Toisaalta A B ei välttämättä ole tosi: Koska A:ssa ei esiinny Skolemin vakioita eikä Skolemin funktioita, niin näille voidaan valita sellaiset arvot ja määritelmät, että B ei ole tosi, vaikka A sitä olisikin. Yleisesti ekvivalenssi A B ei siis päde. 25 SEURAUS. Jos lauseke B saadaan Skolemin muunnoksella lausekkeesta A, niin päättelyt A = V ja B = V ovat ekvivalentit. Todistus. A = V A ei toteudu. Lause 6 B ei toteudu. B = V Näin ollen voidaan rajoittua päättelyissä lausekkeisiin, jotka ovat Skolemin muunnoksen antamaa muotoa. 7. Resoluutio Kuten edellisissä pykälissä näytetty, voidaan rajoittua muotoa A = V oleviin päättelyihin, missä A on Skolemin muunnoksen antamaa muotoa eikä sisällä vapaita muuttujia. Tällöin A on muotoa ( x 1,,x k )(C 1 C m ), * 7):n osalta tämä ei ole aivan helppo nähdä. Idea selvinnee esimerkin avulla.
26 missä konjunktit C 1,,C m eivät sisällä kvanttoreita. Ilmeisesti A ja (( x 1,,x k )C 1 ) (( x 1,,x k )C m ) ovat ekvivalentit, joten voidaan siirtyä muotoa oleviin päättelyihin. Silloin ( x 1,,x k )C 1,, ( x 1,,x k )C m = V 1) kuhunkin premissiin ( x 1,,x k )C i voidaan soveltaa sijoitussääntöä (ks. s. 22) ja, 2) jos kahdessa konjunktissa C i ja C j esiintyy sama atomi, toisessa negeerattuna ja toisessa sellaisenaan, voidaan soveltaa resoluutiosääntöä. Resoluutiosääntö tulee nyt käyttöön muodossa "Jos ( x 1,,x k )(P(x 1,,x k ) Q(x 1,,x k )) on tosi ja ( x 1,,x k )(R(x 1,,x k ) ~Q(x 1,,x k )) on tosi, niin myös ( x 1,,x k )(P(x 1,,x k ) R(x 1,,x k )) on tosi." Ideana on luoda sijoitussäännöllä tilanteita, joihin RS soveltuu, muutoin resoluutiomenettely on samanlainen kuin pykälässä I.8. Valitettavasti predikaattilogiikassa resoluutiomenettely ei aina johda tulokseen, sillä se voi johtaa päättymättömään päättelyketjuun, toisin kuin propositiologiikassa. Predikaattilogiikassahan päättely on yleisesti ottaen algoritmisesti ratkeamaton tehtävä. Käytännössä voidaan kuitenkin rajoittua päättelytilanteisiin, joista resoluutiomenettely selviytyy sopivin apuneuvoin ja "nyrkkisäännöin". Tärkein näistä apuneuvoista on ns. yhdennys eli unifikaatio, jota käyttäen löytyvät resoluutiomenettelyn soveltamiseksi tarvittavat sijoitukset. Yhdennys Jos kahdessa konjunktissa C ja C' (voivat olla samakin) esiintyvät muotoa P( ) ja ~P(---) (tai P(---)) olevat literaalit, missä ja --- eivät ole valmiiksi samat, niin pyritään saamaan ne samoiksi sopivalla sijoitusketjulla t 1 /x i 1, t 2/x i 2,, t m/x i m, missä termi t j sijoitetaan muuttujan x i j paikalle. Samalla syntyy konjunktijono C, C', D 1,, D m, missä D j saadaan sijoituksella t j /x i j jostakin sitä jonossa edeltävästä konjunktista. Lopulta D m :ssä ja jossakin sitä jonossa edeltävässä konjunktissa
atomit P( ) ja P(---) ovat muuntuneet samoiksi ja resoluutiota voidaan soveltaa. Yhdennyksellä voidaan myös saada idempotenssilaki käyttöön ja näin vähentää literaaleja konjunkteissa. Mikäli konjunkteissa C ja C' esiintyvät muuttujat ovat x 1,,x k, voidaan yo. sijoitusten ketju ajatella yhtenä, ts. muuttujien x 1,,x k paikalle sijoitetaan kummassakin konjunktissa yhtaikaa tietyt termit, molemmille omansa. (Erityisesti voidaan muuttujan paikalle sijoittaa terminä se itse.) Tämä on ns. P( ):n ja P(---):n yhdentäjä. Voidaan osoittaa, että jos P( ) ja P(---) yleensä ottaen voidaan yhdentää, niin niille on olemassa ns. yleisin yhdentäjä, ts. yhdentäjä, josta kaikki muut P( ):n ja P(---):n yhdentäjät saadaan sijoituksella (ks. ROBINSON tai RICHARDS). Heuristiikkaa 1) Pyritään soveltamaan resoluutiosääntöä yksiliteraalisiin konjunkteihin, sillä tällöin saadaan tuloksena "lyhyempiä" konjunkteja. 2) Usein lähtötietoina annetaan yleisiä kulloiseenkiin tilanteeseen liittyviä periaatteita eli ns. aksiomia (tietysti predikaattilogiikan lausekkeina) ja ratkaistavaan tehtävään liittyviä erityistietoja, sekä tietysti itse tehtävä. Päättelyssä on käytettävä eo. erityistietoja sekä tehtävän määrittelyä, ei pelkkiä aksiomia. Muussa tapauksessa resoluutiomenettely tuottaa vain tilanteeseen liittyviä yleisiä totuuksia, joiden joukossa V ei varmaankaan ole. 3) Pyritään valitsemaan resoluutiota varten "vähän esiintyviä" literaaleja, koska valinnan varaa on näiden osalta vähän, jos ollenkaan. 4) Toistuvissa päättelytilanteissa valiutuvat usein jotkin aksiomat ja sijoitukset, samoin tietynlaiset päättelyketjun osat. Näistä voidaan kerätä tietoa, jota voidaan käyttää apuna. 5) Jos ei ole tarkkaa kuvaa siitä mitä "reittiä" päättelyketju on nopeimmin toteutettavissa, on syytä käyttää varovaisuussyistä mahdollisimman yleisiä yhdentäjiä. 27 8. Päättelyn anatomiaa. Herbrandin universumi Edellä käsitelty päättely on puhtaan symbolista. Mitään semanttista tietoa muuttujien määrittelyalueista, vakioiden aiotuista arvoista, funktioiden ja predikaattien määrittelyistä tms. ei käytetä. Jos tällaista tietoa halutaan käyttää, on se ilmaistava premisseissä, ts. tilanteeseen liittyvinä aksiomina. Näin ollen, jos resoluutiomenettely toteaa päättelyn A 1,,A n = B oikeaksi, se on sitä kaikissa semanttisissa tilanteissa. Toisaalta, vaikka päättely
olisikin yleisesti ottaen väärä, se voi olla oikea tietyissä semanttisissa tilanteissa. Resoluutiomenettely ei voi tätä todeta, ellei ko. semanttista tilannetta ilmaista aksiomien kautta. Jos päättely A 1,,A n = B on yleisesti (siis kaikissa semanttisissa tilanteissa) oikea, niin tämä on mahdollista todeta resoluutiota käyttäen. Kuten edellä on todettu, voidaan rajoittua muotoa ( x 1,,x k )(C 1 C m ) = V oleviin päättelyihin, jossa ei ole vapaita muuttujia ja jossa konjunktit C 1,, C m eivät sisällä kvantifiointeja. Näytetään tulos vain tapauksessa, jossa konjunktit C 1,,C m eivät sisällä lainkaan funktiosymboleja (eivätkä siis erityisesti Skolemin funktioita). Menettely on seuraavanlainen: 1) Vakioiden arvot ovat aina jonkin muuttujan määrittelyalueessa (niiden muuttujien, joiden "paikalla" vakio esiintyy lausekkeessa). Valitaan kullekin muuttujalle x i määrittelyalue A i seuraavasti: a) Jos jotkin vakiot kuuluvat x i :n määrittelyalueeseen, niin A i muodostuu näistä vakioista. 28 b) Jos mikään vakio ei kuulu x i :n määrittelyalueeseen, niin A i ={c i }, missä c i on uusi symboli. Nämä määrittelyalueet A i (i=1,,k) muodostavat ns. Herbrandin universumin. Huomaa, että alueet A i ovat äärellisiä. 2) Sijoitetaan nyt kaikilla mahdollisilla tavoilla muuttujien määrittelyalueiden A i alkiot muuttujien paikoille konjunkteissa C 1,, C m. Näin saadaan konjunktit C' 1,,C' s, joissa ei esiinny lainkaan muuttujia. 3) Annetaan konjunkteissa C' 1,,C' s esiintyville atomeille jotkut totuusarvot. Nämä atomit ovat itse asiassa propositioita! 4) Jos konjunktit C' 1,,C' s ovat näillä totuusarvoilla kaikki tosia, on löydetty tilanne (Herbrandin universumi), jossa päättely ( x 1,,x k )(C 1 C m ) = V on väärä. Näin ollen se ei voi olla yleisesti ottaen oikea. Lähtötilanne olikin siis väärä. 5) Jos taas kaikki konjunktit C' 1,,C' s eivät ole näillä totuusarvoilla tosia, annetaan niissä esiintyville atomeille jotkut toiset totuusarvot ja palataan kohtaan 4). 6) Jatketaan kunnes kaikki konjunkteissa C' 1,,C' s esiintyvien atomien totuusarvoyhdelmät on käyty läpi. Ellei menettely ole pysähtynyt kohtaan 4), niin konjunktit C 1,,C m eivät voi olla yhtai-
kaa tosia Herbrandin universumissa. Silloin ne eivät voi olla yhtaikaa tosia missään semanttisessa tilanteessa. Muussa tapauksessa tällaisessa tilanteessa ( x 1,,x k )(C 1 C m ) olisi tosi ja käytetyistä predikaattien määrittelyistä saataisiin juuri sellaiset totuusarvot konjunktien C' 1,,C' s atomeille, että esitetty prosessi pysähtyisikin kohtaan 4). 29 Koska kyse itse asiassa on siitä, että propositiologiikan mielessä C' 1,, C' s = V, voidaan päättelyn ( x 1,,x k )(C 1 C m ) = V oikeellisuus todentaa resoluutiomenettelyllä. Konjunktit C' 1,,C' s saadaan nimittäin sijoitussäännöllä konjunkteista C 1,,C m, arvon c i tilalla voidaan käyttää muuttujaa x i itseään. Yo. menettely on ns. Herbrandin algoritmi. Näin ollen muotoa ( x 1,,x k )(C 1 C m ) = V olevien päättelyiden, joissa ei ole vapaita muuttujia ja joissa konjunktit C 1,,C m eivät sisällä kvantifiointeja eivätkä funktioita, oikeellisuuden toteaminen on algoritmisesti ratkeava tehtävä. Predikaattilogiikan päättelytehtävän algoritminen ratkeamattomuus johtuukin nimenomaan funktiosymboleista ja erityisesti Skolemin funktioista (eli kaikkikvanttorien vaikutusalueiden sisäisistä olemassaolokvantifioinneista). Jos konjunkteissa C 1,,C m on funktioita, voidaan määritellä Herbrandin universumi, mutta se on jonkin verran mutkikkaampi kuin yllä oleva. Erityisesti määrittelyalueet A i voivat olla äärettömiä *. Tästä johtuen vastaava Herbrandin algoritmi ei aina pysähdy (kuten yllä esitetty algoritmi pysähtyy kohdassa 4)), jos päättely ( x 1,,x k )(C 1 C m ) = V onkin väärä. Sen sijaan se pysähtyy, jos päättely on oikea, ja näyttää, että päättelyn oikeellisuus voidaan myös todeta resoluutiolla. (Ks. RICHARDS tai ROBINSON.) * Tämä johtuu siitä, että funktioiden arvot ovat muuttujien määrittelyalueissa. Jos esimerkiksi funktion f(x i ) arvot ovat muuttujan x i määrittelyalueessa ja samoin vakion a arvo on x i :n määrittelyalueessa, pitää Ai:ssä olla a, f(a), f(f(a)), f(f(f(a))),.
30 9. Resoluutio Hornin konjunkteille. PROLOG Hornin konjunkti on konjunkti, jossa on enintään yksi negeeraamaton literaali. Tästä seuraa välittömästi, että jos sovelletaan resoluutiosääntöä Hornin konjunkteihin, tuloksena on jälleen Hornin konjunkti (tai ). LAUSE 7. Muotoa A B oleva propositiolauseke, missä A on mielivaltainen operaatioita ja käyttäen atomeista muodostettu lauseke ja B on mielivaltainen operaatiota käyttäen literaaleista muodostettu lauseke, voidaan kirjoittaa konjunktiiviseen normaalimuotoon, jonka konjunktit ovat Hornin konjunkteja (HCNF ). Todistus. Soveltamalla toistuvasti laskulakia A P Q = (A P) (A Q) voidaan rajoittua tapaukseen, jossa B:ssä on vain yksi literaali, sanotaan Q. Kirjoitetaan A Q muotoon ~A Q ja viedään ~A konjunktiiviseen normaalimuotoon. Tässä normaalimuodossa on vain negeerattuja literaaleja (miksi?). Lopuksi ositellaan Q sisään tähän CNF-lausekkeeseen, jolloin tulos on HCNF-lauseke. Lauseessa mainittu HCNF-muoto saadaan aikaan myös seuraavalla tavalla. Voidaan rajoittua tapaukseen, jossa B:ssä on vain yksi literaali, sanotaan Q. Jos nyt A:ssakin on vain yksi atomi, sanotaan P, on asia selvä: P Q = ~P Q. Muuten A on joko muotoa P R tai P R. Jos A on muotoa P R, käytetään laskulakia P R Q = P (R Q). Jos nyt tiedetään, että muotoa P S ja R Q olevat lausekkeet, missä S on atomi, saadaan HCNF-muotoon, niin samoin saadaan P R Q. Ajattele vain, mitä tapahtuu, jos S:n tilalle kirjoitetaan R Q:n HCNF. (Tässä S on sitä sisältävien Hornin konjunktien ainoa negeeraamaton atomi.) Jos taas A on muotoa P R, käytetäänkin laskulakia P R Q = (P Q) (R Q). Mikäli nyt P Q ja R Q saadaan HCNF-muotoon, niin samoin ilmeisesti saadaan P R Q. Toistetaan yo. menettelyä "atomitasolle" asti. Huom! Lause pätee erityisesti, jos B=V, jolloin A B = ~A, tai jos A=T, jolloin A B = B. Hornin CNF ei siis ole erityisen vaativa. Hornin konjunkti on positiivinen, jos siinä on tarkalleen yksi negeeraamaton literaali, ja negatiivinen, jos siinä ei ole negeeraamattomia literaaleja. Resoluutiosäännön soveltaminen Hornin konjunkteihin on "rajatumpaa" kuin yleisesti, sillä negeeraamattomia literaaleja on vain yksi per konjunkti. Eräs menettely on suurinpiirtein esitettynä seuraava:
(1) Etsi konjunktilistasta ensimmäinen konjunkti, sanotaan C i, jossa on negeerattuja literaaleja, ja aseta C C i. Ellei tällaisia ole, päättely on väärä ja lopetetaan. (2) Etsi C:n ensimmäinen negeerattu literaali ~P. (3) Etsi konjunktilistasta ensimmäinen konjunkti, sanotaan C j, jonka (ainoa) negeeraamaton literaali Q yhdentyy P:n kanssa. Ellei tällaista ole, ota ~P:n tilalle seuraava C:n negeerattu literaali ja yritä uudelleen, jne.. Ellei tämäkään onnistu, aseta C:ksi konjunktilistassa ensimmäinen C i :tä seuraava konjunkti, jossa on negeerattuja literaaleja ja palaa kohtaan (2). Jne.. (4) Ellei lopultakaan yhdennys onnistu, päättely on väärä ja lopetetaan. Muussa tapauksessa suoritetaan yhdennys heti, kun se on mahdollista, tehdään tarvittavat sijoitukset ja sovelletaan resoluutiosääntöä. Tuloksena on uusi konjunkti C'. (5) Jos C' on tyhjä, päättely on oikea ja lopetetaan. Jos taas C':ssa on negeerattuja literaaleja, lisätään se konjunktilistaan, asetetaan C C' ja mennään kohtaan (2). Jäljelle jääneessä tapauksessa C':ssä on yksi literaali ja se on negeeraamaton. Tällöin lisätään C' konjunktilistaan ja palataan kohtaan (3), missä etsitään konjunktilistassa ensimmäinen C j :tä seuraava konjunkti, jonka (ainoa) negeeraamaton literaali R yhdentyy P:n kanssa, jne.. 31 Onnistuvien yhdennysmahdollisuuksien etsintä kannattaa pukea ns. depth-first-etsinnän muotoon, ks. 73119 Graafiteoria. PROLOG PROLOG on yleinen ohjelmointikieli, jonka toiminta perustuu resoluution, yhdennyksen ja depth-first-etsinnän tehokkaaseen käyttöön. PROLOG -ohjelma on itse asiassa aksiomakokoelma (tietokanta) eli kokoelma loogisia lausekkeita ja syöttönä on ns. kysely eli eräs looginen lauseke. Jotta ohjelma toimisi nopeasti, on asetettava rajoituksia. Puhtaimmillaan ne merkitsevät sitä, että PROLOG-ohjelma + kysely testaa Skolemin muunnoksen jälkeen muotoa ( x 1,,x k )(C 1 C n-1 C n ) = V olevan päättelyn oikeellisuuden, missä C 1,,C n-1 ovat positiivisia Hornin konjunkteja ja C n negatiivinen Hornin konjunkti. PROLOG ei itse tee Skolemin muunnosta, vaan se jää käyttäjän tehtäväksi. Toisaalta PROLOG ei myöskään ota tehtävää vastaan yo. muodossa. Sen sijaan se ottaa vastaan konjunktit C 1,,C n-1 ohjelmanaan (tietokanta) ja ~C n :n kyselynä. Itse asiassa kysely on ( x 1,,x k )D, missä D saadaan, kun kirjoitetaan D = ~C n ja viedään negaatio konjunktin sisään. Koska C n on negatiivinen Hornin