PROPOSITIOLOGIIKAN RIITTÄMÄTTÖMYYS



Samankaltaiset tiedostot
Unify( Tuntee(Jussi, x), Tuntee(y, z) ) { y/jussi, z/x } { y/jussi, x/jussi, z/jussi }

1. Johdanto (I, 1) Taustaa Tekoälyn historia. 2. Logiikka, tietämys ja päättely

Lause on validi eli tautologia jos se on tosi kaikissa malleissa P P Jokainen validi lause on loogisesti ekvivalentti arvon T kanssa

9 PÄÄTTELY PREDIKAATTILOGIIKASSA SAMAISTUS L. UNIFIKAATIO

815338A Ohjelmointikielten periaatteet

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Heidi Luukkonen. Sahlqvistin kaavat

T Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut

Insinöörimatematiikka A

-Matematiikka on aksiomaattinen järjestelmä. -uusi tieto voidaan perustella edellisten tietojen avulla, tätä kutsutaan todistamiseksi

T Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Roosa Niemi. Riippuvuuslogiikkaa

LOGIIKKA, TIETÄMYS JA PÄÄTTELY

ALGORITMI- MATEMATIIKKA. Keijo Ruohonen

Diskreetit rakenteet. 3. Logiikka. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1

1 Logiikkaa. 1.1 Logiikan symbolit


Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Logiikka 1/5 Sisältö ESITIEDOT:

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (Predikaattilogiikka )

5.1 Semanttisten puiden muodostaminen

HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 4 Ratkaisuehdotukset

T kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut

815338A Ohjelmointikielten periaatteet: Logiikkaohjelmointi. Logiikkaohjelmointi

Kirjoita käyttäen propositiosymboleita, konnektiiveja ja sulkeita propositiologiikan lauseiksi:

Ratkaisu: Käytetään induktiota propositiolauseen A rakenteen suhteen. Alkuaskel. A = p i jollain i N. Koska v(p i ) = 1 kaikilla i N, saadaan

Konnektiivit. On myös huomattava, että vain joillakin luonnollisen kielen konnektiiveilla on vastineensa lauselogiikassa.

Johdatus logiikkaan I Harjoitus 4 Vihjeet

LOGIIKKA johdantoa

FI3 Tiedon ja todellisuuden filosofia LOGIIKKA. 1.1 Logiikan ymmärtämiseksi on tärkeää osata erottaa muoto ja sisältö toisistaan:

811120P Diskreetit rakenteet

T Kevät 2006 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

1. Logiikan ja joukko-opin alkeet

LUKU II HOMOLOGIA-ALGEBRAA. 1. Joukko-oppia

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...

Predikaattilogiikan malli-teoreettinen semantiikka

Lause 5. (s. 50). Olkoot A ja B joukkoja. Tällöin seuraavat ehdot ovat

Luonnollisen päättelyn luotettavuus

811120P Diskreetit rakenteet

HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 5 Ratkaisuehdotukset

Modus Ponens. JosAjaA B ovat tosia, niin välttämättä myösb on tosi 1 / 15. Modus Ponens. Ketjusääntö. Päättelyketju.

Tehtävä 1. Päättele resoluutiolla seuraavista klausuulijoukoista. a. 1 {p 3 } oletus. 4 {p 1, p 2, p 3 } oletus. 5 { p 1 } (1, 2) 7 (4, 6)

1 Johdanto, Tavoitteet 2. 2 Lähteitä 2. 3 Propositiologiikkaa 2. 4 Karnaugh'n kartat Predikaattilogiikkaa Relaatiot 42.

2. Minkä joukon määrittelee kaava P 0 (x 0 ) P 1 (x 0 ) mallissa M = ({0, 1, 2, 3}, P M 0, P M 1 ), kun P M 0 = {0, 1} ja P M 1 = {1, 2}?

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

T Logiikka tietotekniikassa: perusteet Kevät 2008 Laskuharjoitus 5 (lauselogiikka ) A ( B C) A B C.

Kieli merkitys ja logiikka

Loogiset konnektiivit

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

Pikapaketti logiikkaan

Predikaattilogiikkaa

Entscheidungsproblem

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Toinen muotoilu. {A 1,A 2,...,A n,b } 0, Edellinen sääntö toisin: Lause 2.5.{A 1,A 2,...,A n } B täsmälleen silloin kun 1 / 13

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011

3. Predikaattilogiikka

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 2 (opetusmoniste, lauselogiikka )

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

Ratkaisu: Yksi tapa nähdä, että kaavat A (B C) ja (A B) (A C) ovat loogisesti ekvivalentit, on tehdä totuustaulu lauseelle

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Todistusmenetelmiä Miksi pitää todistaa?

Entscheidungsproblem

Ehrenfeuchtin ja Fraïssén peli

Lisää kvanttoreista ja päättelyä sekä predikaattilogiikan totuustaulukot 1. Negaation siirto kvanttorin ohi

Johdatus logiikkaan 1

Todistusteoriaa. Kun kielen syntaksi on tarkasti määritelty, voidaan myös määritellä täsmällisesti, mitä pätevällä päättelyllä tarkoitetaan.

MS-A0401 Diskreetin matematiikan perusteet Yhteenveto, osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset

Muodolliset kieliopit

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Ramseyn lauseen ensimmäinen sovellus

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Ensimmäinen induktioperiaate

SAT-ongelman rajoitetut muodot

Totuusjakaumat. Totuusjakauma eli valuaatio v on kuvaus v : {p 0, p 1, p 2,...} {0, 1}. Käytämme jatkossa joukolle {0, 1} merkintää B.

Ensimmäinen induktioperiaate

Lisää pysähtymisaiheisia ongelmia

811120P Diskreetit rakenteet

Miten osoitetaan joukot samoiksi?

Tehtäväsarja I Seuraavissa tehtävissä harjoitellaan erilaisia todistustekniikoita. Luentokalvoista 11, sekä voi olla apua.

4 Matemaattinen induktio

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

MS-A0402 Diskreetin matematiikan perusteet

Opintomoniste logiikan ja joukko-opin perusteista

T Logiikka tietotekniikassa: perusteet Kevät 2008 Laskuharjoitus 11 (predikaattilogiikka )

4.3. Matemaattinen induktio

Insidenssifunktioiden teoriaa

Ilpo Halonen Päätelmistä ja niiden pätevyydestä. Luonnehdintoja logiikasta 1. Johdatus logiikkaan. Luonnehdintoja logiikasta 2

Agentin toiminnan arviointi

Matematiikan perusteista logiikkaa ja joukko-oppia LaMa 1U syksyllä 2010

Matematiikan tukikurssi

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

Matematiikan tukikurssi, kurssikerta 2

a k+1 = 2a k + 1 = 2(2 k 1) + 1 = 2 k+1 1. xxxxxx xxxxxx xxxxxx xxxxxx

MS-A0402 Diskreetin matematiikan perusteet Yhteenveto, osa I

Propositiot: Propositiot ovat väitelauseita. Totuusfunktiot antavat niille totuusarvon T tai E.

Transkriptio:

67 PROPOSITIOLOGIIKAN RIITTÄMÄTTÖMYYS Jo äärimmäisen yksinkertaisessa peliesimerkissämme propositiologiikan ilmaisuvoima osoittautuu riittämättömäksi Tietämyskannan alustamiseksi pelin säännöillä meidän on jokaiselle ruudulle [x,y] annettava sääntö viiman tuntemuksesta (sekä vastaava sääntö löyhkän aistimukselle) V x,y (K x,y+1 K x,y-1 K x+1,y K x-1,y ) Hirviöitä on ainakin yksi H 1,1 H 1,2 H 4,3 H 4,4 ja toisaalta korkeintaan yksi, joka voidaan ilmaista sääntöparein H 1,1 H 1,2 68 Kun KB:hen vielä lisätään säännöt K 1,1 ja H 1,1, niin pelkästään näihin yksinkertaisiin sääntöihin on tarvittu 2 + 2 16 + 1 + 120 = 155 sääntöä ja eri symboleita on käytössä 64 kappaletta Mallintarkastuksen tulisi käydä läpi 2 64 1.8 10 19 mahdollista mallia Tehokkaammilla päättelyalgoritmeilla tätäkin esitystä toki voidaan käyttää Lisäksi KB ei vielä suinkaan sisällä pelin kaikkia sääntöjä (nuoli, kulta, seinät) eikä tietoa agentin mahdollisista toiminnoista (rintamasuunta, askelet eteenpäin), joten sitä ei voi käyttää toimintojen valintaan Raskautensa lisäksi propositiologiikka on epätyydyttävä ratkaisu 1

69 PREDIKAATTILOGIIKKA Lause Atomilause (Lause Konnektiivi Lause) Kvanttori M-lista: Lause Lause Atomilause Predikaatti(T-lista) Termi = Termi T-lista Termi Termi, T-lista Termi Funktio(T-lista) Vakio Muuttuja Konnektiivi Kvanttori M-lista Muuttuja Muuttuja, M-lista Vakio A X 1 Jussi Meeri Muuttuja a x s Predikaatti Teekkari On-väriltään Äiti Funktio Isä Vasen-jalka 70 (1. kertaluvun) predikaattilogiikan maailmassa on olioita, joilla on ominaisuuksia, ja joiden välillä vallitsee suhteita Vakiosymbolit viittaavat olioihin, predikaattisymbolit suhteisiin eli n-paikkaisiin relaatioihin, Äiti(Jussi, Meeri), ja ominaisuudet ovat yksipaikkaisia relaatioita, Teekkari(Jussi) Funktio on totaalinen kuvaus, joka liittää argumenttiensa järjestettyyn kokoelmaan täsmälleen yhden tulosolion 2

71 Kvanttorit antavat mahdollisuuden universaaliin ja eksistentiaaliseen kvantifiointiin y: Teekkari(y) Opiskelee(y) x: Isä(Jussi) = x Semantiikan määräämiseksi syntaktiset merkinnät (vakio-, predikaatti- ja funktiosymbolit) on sidottava tulkinnalla (interpretation) (reaali)maailman vastineisiinsa Maailma yhdessä merkintöjen tulkinnan kanssa muodostavat predikaattilogiikan mallin 72 Termi f(t 1,,t n ) viittaa siihen olioon, joka saadaan ottamalla termien t 1,,t n viittaamat oliot d 1,,d n ja soveltamalla niihin sitä funktiota F, joka on f:n tulkinta Atomilause P(t 1,,t n ) on tosi mikäli oliot, joihin termit t 1,,t n viittaavat ovat keskenään siinä relaatiossa, joka on predikaattisymbolin P tulkinta Konnektiivein muodostettujen lauseiden totuus on kuten propositiologiikassa Lause x: φ(x) on tosi annetussa mallissa ja tulkinnassa, jos lauseesta φ saadaan tosi sijoittamalla muuttujan x tulkinnaksi jokin olio Lause x: φ(x) on tosi annetussa mallissa ja tulkinnassa, jos lause φ on tosi sijoitettiinpa muuttujan x tulkinnaksi mikä tahansa olio 3

73 Koska on itse asiassa konjunktio yli maailman olioiden ja disjunktio, niin ne noudattavat de Morganin sääntöjä x: φ(x) x: φ(x) x: φ(x) x: φ(x) x: φ(x) x: φ(x) x: φ(x) x: φ(x) Yhtäsuuruus on erikoisasemassa oleva relaatio, jonka tulkintaa ei voi asettaa Termit t 1 ja t 2 ovat tässä relaatiossa vain jos niiden tulkinta on sama olio 74 Sukulaisuussuhteita n, l: Äiti(l) = n Nainen(n) Vanhempi(n, l). v, m: Aviomies(m, v) Mies(m) Puoliso(m, v). x: Mies(x) Nainen(x). v, l: Vanhempi(v, l) Lapsi(l, v). i, l: Isovanhempi(i, l) v: Vanhempi(i, v) Vanhempi(v, l). x, y: Sisarus(x, y) x y v: Vanhempi(v, x) Vanhempi(v, y). 4

75 Peanon aksioomat Määrittelevät luonnolliset luvut ja yhteenlaskun yhden vakiosymbolin 0 ja seuraajafunktion S avulla LL(0). n: LL(n) LL(S(n)). Luonnolliset luvut siis ovat 0, S(0), S(S(0)), Seuraajafunktion ominaisuuksia n: 0 S(n). m, n: m n S(m) S(n). Yhteenlasku ja seuraajafunktio m: LL(m) +(m, 0) = m. m, n: LL(m) LL(n) +(S(m), n) = S(+(m, n)) 76 Joukot Joukkojen määrittelemiseksi käytämme vakiosymbolia { }, joka viittaa tyhjään joukkoon yksipaikkaista predikaattia Set, joka on tosi joukoille kaksipaikkaisia predikaatteja x s ja s 1 s 2 Binäärisiä funktioita ovat s 1 Us 2, s 1 s 2 ja { x s }, joka viittaa siihen joukkoon, joka saadaan kun alkio x lisätään joukkoon s Joukkoja ovat vain tyhjä joukko ja ne, jotka on muodostettu lisäämällä alkioita joukkoihin s: Set(s) s = { } x, s 2 : Set(s 2 ) s = { x s 2 }. Tyhjällä joukolla ei ole alkioita x, s: { x s } = { }. 5

77 Samaa alkiota ei voi lisätä joukkoon kahdesti x, s: x s s = { x s }. Joukossa on vain siihen lisätyt alkiot x, s: x s [ y, s 2 : (s = { y s 2 } (x = y x s 2 ))]. Joukkojen sisältyvyys s 1, s 2 : s 1 s 2 ( x: x s 1 x s 2 ). Joukkojen ekvivalenssi s 1, s 2 : (s 1 = s 2 ) (s 1 s 2 s 2 s 1 ). x, s 1, s 2 : x (s 1 s 2 ) (x s 1 x s 2 ). x, s 1, s 2 : x (s 1 Us 2 ) (x s 1 x s 2 ). 78 PÄÄTTELY PREDIKAATTILOGIIKASSA Jos predikaattilogiikan lauseista eliminoidaan kvanttorit, niin voidaan siirtyä propositiologiikan lauseisiin ja käyttää tuttuja päättelysääntöjä Universaalikvantifioidun lauseen v: α muuttuja v voidaan korvata millä tahansa perustermillä (ground term), joka ei sisällä muuttujia Sijoitus eli substituutio θ on sidontalista, jossa kullekin muuttujalle annetaan sen korvaava perustermi Merkitään α(θ) on lause, joka saadaan kun sijoitusta θ sovelletaan lauseeseen α Universaalikvanttorin eliminoimiseksi voimme päätellä v: α, α({v/g}), missä v on mikä tahansa muuttuja ja g mv. perustermi 6

79 Eksistenssikvanttorin eliminoimisessa muuttuja v korvataan Skolem vakiolla k, joka ei ennestään esiinny tietämyskannassa v: α. α({v/k}) Esimerkiksi voimme lauseesta x: Isä(Jussi) = x päätellä instantiaation Isä(Jussi) = F 1, missä F 1 on uusi vakio Eliminoimalla eksistenssikvanttorit korvaamalla muuttujat Skolem-vakioilla ja universaalikvanttorit kaikilla mahdollisilla instantiaatioillaan, muuttuu tietämyskanta oleellisesti propositionaaliseksi Muuttujattomat atomilauseet kuten Teekkari(Jussi) ja Äiti(Jussi, Meeri) on vain nähtävä propositiosymboleina Täten propositiologiikan päättelyä voidaan soveltaa predikaattilogiikan lauseisiin 80 Jos tietämyskannassa kuitenkin käytetään funktiosymboleita, niin mahdollisten korvaavien perustermien lukumäärä on ääretön Isä(Isä(Isä(Jussi))) Herbrandin kuuluisan tuloksen mukaan 1. kertaluvun teorian loogisilla seurauksilla on todistus "propositionalisoidussa" teoriassa, joka käsittelee vain äärellistä osaa siitä Täten sisäkkäisiä funktioita voidaan käsitellä syvyyden mukaan kasvavassa järjestyksessä ilman, että menetetään mahdollisuus johtaa kaikki loogiset seuraukset Päättely on siis täydellistä Analogia Turingin koneiden pysähtymisongelmaan kuitenkin osoittaa, että ongelma on ratkeamaton Tarkemmin: ongelma on osittain ratkeava, hahmoteltu menetelmä löytää todistuksen loogisille seurauksille 7

81 Samaistus Päättely propositiologiikassa on ilmiselvästi turhan raskasta Muuttujasijoitusten aukikirjoittaminen vaikuttaa turhalta Jos meillä on sijoitus θ s.e. p i '(θ) = p i (θ), kaikilla i, missä p i ' ja p i ovat atomilauseita kuten myös q, niin voimme käyttää yleistettyä Modus Ponensia p 1 ',, p n ', (p 1 p n q) q(θ) Esimerkiksi faktasta Teekkari(Jussi) sekä lauseista x: Ahkera(x) ja y: Teekkari(y) Ahkera(y) DI_2007(y) voimme päätellä DI_2007(Jussi) sidonnan { y/jussi, x/jussi} perusteella 82 Yleistetty Modus Ponens on eheä päättelysääntö Samaan tapaan kuin ymp voidaan "korottaa" propositiologiikasta predikaattilogiikkaan, voidaan myös eteen- ja taaksepäin ketjutus sekä resoluutio muokata Päättelyalgoritmeissa keskeinen käsite on lauseiden samaistus (unification) Samaistusalgoritmi Unify palauttaa syötteenä annetut lauseet samaistavan sijoituksen, jos sellainen on olemassa Unify(p,q) = θ, s.e. p(θ) = q(θ) muuten samaistus epäonnistuu (fail) 8

83 Unify( Tuntee(Jussi, x), Tuntee(Jussi, Jaana) ) = { x/jaana } Unify( Tuntee(Jussi, x), Tuntee(y, Pekka) )= { x/pekka, y/jussi } Unify( Tuntee(Jussi,x), Tuntee(y, Äiti(y)) ) = { y/jussi, x/äiti(jussi) } Unify( Tuntee(Jussi,x), Tuntee(x, Elina) ) = fail Viimeinen samaistus epäonnistuu, koska muuttujaa x ei voida samanaikaisesti sitoa sekä Jussiin että Elinaan Koska muuttujat ovat universaalikvantifioituja, niin Tuntee(x, Elina) tarkoittaa, että kaikki tuntevat Elinan Näin ollen samaistuksen pitäisi onnistua 84 Ongelman edellä aiheuttaa saman muuttujanimen käyttö Toisaalta eri lauseiden muuttujanimillä ei ole merkitystä (ennen sidontaa) ja muuttujien nimentä voidaan standardoida Mahdollisia samaistuksia on useita, mikä niistä tulisi palauttaa? Samaistusalgoritmin edellytetään palauttavan kaikkein yleisimmän samaistuksen Mitä vähemmän rajoituksia (sitomisia vakioihin) muuttujasijoitus asettaa, sitä yleisempi se on Unify( Tuntee(Jussi, x), Tuntee(y, z) ) { y/jussi, z/x } { y/jussi, x/jussi, z/jussi } 9

85 Eteenpäin ketjutus Kuten edellä, tarkastelemme Hornin normaalimuodossa olevia tietämyskantoja Jokainen lause on siis atomilause tai implikaatio, jonka runko on positiivisten atomilauseiden konjunktio ja kärki on yksittäinen positiivinen atomilause Teekkari(Jussi) Ahkera(x) Teekkari(y) Ahkera(y) DI_2007(y) Nyt vaan atomilauseet voivat sisältää myös muuttujia Muuttujat ovat aina universaalisesti kvantifioituja 86 Kuten propositiologiikassa lähtien liikkeelle faktoista, soveltaen yleistettyä Modus Ponensia voidaan tehdä eteenpäin ketjuttavaa päättelyä Nyt on huolehdittava siitä, ettei "uusi" fakta ole pelkkä tunnetun faktan uudelleennimentä Pitää(x, Karkki) Pitää(y, Karkki) Yleistetyn Modus Ponensin sovelluksena eteenpäin ketjutus on eheä päättelyalgoritmi Se on myös täydellinen siinä mielessä, että tietämyskannan mitä tahansa loogista seurausta koskevaan kyselyyn saadaan vastaus 10

87 Datalog Datalog tietämyskannassa ei esiinny laisinkaan funktiosymboleja Tässä tapauksessa voimme helposti todistaa päättelyn täydellisyyden Olkoot tietämyskannan predikaattien lkm p, predikaattien maksimi ariteetti (= argumenttien lkm) k ja vakioiden lkm n Vakioarvoihin sidottuja faktoja on kork. pn k Täten näin monen kierroksen jälkeen on saavutettu kiintopiste (fixed point), jossa uudet päättelyt eivät enää ole mahdollisia 88 Datalogilla polynominen askelten lukumäärä riittää kaikkien loogisten seurausten generoimiseen Yleisessä tapauksessa joudumme vetoamaan Herbrandin tulokseen Kyselyllä, joka ei ole teorian (= tietämyskannan) looginen seuraus, eteenpäin ketjutus ei välttämättä pysähdy Esim. Peanon aksioomilla tietämyskantaan lisättäisiin faktat LL(S(0)). LL(S(S(0))). LL(S(S(S(0)))). Päättely on vain osittain ratkeavaa 11

89 Taaksepäin ketjutus Predikaattilogiikassa taaksepäin ketjutuksessa tutkitaan niiden sääntöjen runkoja, joiden kärki samaistuu maalin kanssa Rungon kaikista konjunkteista tehdään rekursiivisesti maaleja Kun maali samaistuu faktaan (lause, jolla on kärki vaan ei runkoa) ei uusia (ali)maaleja tarvitse generoida Syvyyssuuntainen haku Palautettava muuttujasijoitus koostetaan kaikkien välivaiheiden ratkaisemiseksi tarvituista sijoituksista Prologin päättely perustuu taaksepäin ketjutukseen 90 Logiikkaohjelmointi Prolog, Alain Colmerauer 1972 Ohjelma = Hornin lauseina ilmaistu tietämyskanta Tietämyskantaan kohdistuvat kyselyt Suljetun maailman oletus: φ oletetaan todeksi, jos lausetta φ ei voi johtaa tietämyskannasta Syntaksi: isot kirjaimet muuttujia, pienet vakioita, säännön kärki edeltää runkoa, implikaatiomerkin sijaan :-, pilkku konjunktiomerkin tilalla, piste päättää lauseen di_2007(x):- teekkari(x), ahkera(x). Prologissa on paljon erikoismerkintöjä listoille ja aritmetiikalle 12

91 Ohjelma append(x,y,z) onnistuu, jos lista Z on listojen X ja Y yhdistämisen (katenoinnin) tulos append([ ],Y,Y). append([a X],Y,[A Z]):- append(x,y,z). Kysely: append([1],[2],z)? Z=[1,2] Voimme esittää ohjelmalle myös kyselyn append(a,b,[1,2])?: Minkä kahden listan yhdistäminen tuottaa listan [1,2]? Vastauksena saamme mahdolliset muuttujasidonnat A=[ ] B=[1,2] A=[1] B=[2] A=[1,2] B=[ ] 92 Ohjelman lauseet suoritetaan järjestyksessä Myös säännön rungon konjunkteja käsitellään järjestyksessä (vasemmalta oikealle) Aritmetiikkaa varten on valmiita funktioita, joita ei enää tarvitse päätellä Esim. X is 4+3 X=7 Mm. I/O hoituu sisäänrakennetuilla predikaateilla, joilla on sivuvaikutuksia Suljetun maailman oletus: negaatio alive(x):- not dead(x). "Kaikki, joiden ei voi todistaa kuolleen, ovat elossa" 13

93 Prologin negaatio ei vastaa logiikan negaatiota (suljetun maailman oletuksella) vapaa_teekkari(x):- not naimisissa(x), teekkari(x). teekkari(pekka). naimisissa(jussi). Suljetun maailman oletuksen perusteella X=pekka on ohjelman ratkaisu Ohjelman suoritus kuitenkin epäonnistuu, koska kun X=jussi epäonnistuu rungon ensimmäinen predikaatti Jos säännön konjunktit kirjoitettaisiin toiseen järjestykseen, niin se onnistuisi 94 Yhtäsuuruusvertailu onnistuu, jos tarkasteltavat termit voidaan samaistaa Esim. X+Y=2+3 X=2, Y=3 Prolog ei tee kaikkia tarpeellisia tarkistuksia muuttujasijoituksien yhteydessä Päättely ei ole eheää Yleensä ei kuitenkaan ongelmia Syvyyssuuntaisen päättelyn seurauksena voi olla ikuinen silmukka path(x,z):- path(x,y), link(y,z). path(x,z):- link(x,z). Huolellisuus kuitenkin usein auttaa path(x,z):- link(x,z). path(x,z):- path(x,y), link(y,z). 14

95 Prologin suoritusta voidaan karsia leikkauksella (cut) Negaatio leikkauksen avulla not X:- X,!, fail. not X. Edellä fail aiheuttaa epäonnistumisen Leikkauksen kohdalla kiinnitetään kaikki ne sidonnat, jotka on tehty säännön tutkimisen aloittamisesta lähtien Rungon konjunkteille, jotka edeltävät leikkausta, ei enää yritetä muodostaa uusia ratkaisuja Muita saman kärjen omaavia sääntöjä ei enää kokeilla 15