9 PÄÄTTELY PREDIKAATTILOGIIKASSA SAMAISTUS L. UNIFIKAATIO

Samankaltaiset tiedostot
PROPOSITIOLOGIIKAN RIITTÄMÄTTÖMYYS

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

Ohjelmistotekniikan laitos OHJ-2550 Tekoäly, kevät

815338A Ohjelmointikielten periaatteet

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

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

LOGIIKKA, TIETÄMYS JA PÄÄTTELY

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)

Insinöörimatematiikka A

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

815338A Ohjelmointikielten periaatteet: Logiikkaohjelmointi. Logiikkaohjelmointi

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

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

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

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

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

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

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

ALGORITMI- MATEMATIIKKA. Keijo Ruohonen

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

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


T kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut

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

Taulumenetelmä modaalilogiikalle K

Logiikka 1/5 Sisältö ESITIEDOT:

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

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

Johdatus logiikkaan I Harjoitus 4 Vihjeet

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

T Tietojenkäsittelyteorian seminaari

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

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

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

Luonnollisen päättelyn luotettavuus

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

811120P Diskreetit rakenteet

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

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

13. Loogiset operaatiot 13.1

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

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

7 LOOGISET AGENTIT. (reasoning) maailman tilasta. Tämä on erityisen tärkeää osittain havaittavissa

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.

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

TAMPEREEN YLIOPISTO Pro gradu -tutkielma. Roosa Niemi. Riippuvuuslogiikkaa

Entscheidungsproblem

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Pikapaketti logiikkaan

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Todistusmenetelmiä Miksi pitää todistaa?

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Predikaattilogiikkaa

SAT-ongelman rajoitetut muodot

13. Loogiset operaatiot 13.1

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

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

LOGIIKKA johdantoa

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

Entscheidungsproblem

811120P Diskreetit rakenteet

Predikaattilogiikan malli-teoreettinen semantiikka

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

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

Matematiikan mestariluokka, syksy

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Ehto- ja toistolauseet

Johdatus matematiikkaan

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

5.1 Semanttisten puiden muodostaminen

811120P Diskreetit rakenteet

3. Predikaattilogiikka

4 Matemaattinen induktio

Perinnöllinen informaatio ja geneettinen koodi.

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

1 Logiikkaa. 1.1 Logiikan symbolit

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

1 Lineaariavaruus eli Vektoriavaruus

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

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}?

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

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

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

Luku 11. Logiikkaohjelmoinnin idea Logiikkakieli

4.3. Matemaattinen induktio

Algoritmit 2. Luento 4 To Timo Männikkö

Matematiikan tukikurssi, kurssikerta 3

Taas laskin. TIES341 Funktio ohjelmointi 2 Kevät 2006

Diskreetin Matematiikan Paja Ratkaisuhahmotelmia viikko 1. ( ) Jeremias Berg

802320A LINEAARIALGEBRA OSA I

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

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Ratkeavuus ja efektiivinen numeroituvuus

Matematiikan tukikurssi

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.

Transkriptio:

9 PÄÄTTELY PREDIKAATTILOGIIKASSA Jos predikaattilogiikan lauseista eliminoidaan kvanttorit, niin jäljelle jääneitä lauseita voidaan käsitellä propositiologiikan päättelymenetelmillä. Menetelmää kutsutaan propositionalisoinniksi (propositionalization) Eksistenssilauseet korvataan lauseilla joissa sidotut muuttujat on korvattu Skolem-vakioilla eli uusilla vakiosymboleilla, joita ei ole tietämyskannassa ennestään. Universaalilauseet korvataan kaikilla mahdollisilla lauseilla jotka saadaan kun muuttujat korvataan tietämyskannassa esiintyvillä vakio- ja funktiotermeillä eli perustermeillä (ground term), joissa ei esiinny muuttujia. Universaalikvantifioidun lauseen v α muuttuja v voidaan korvata millä tahansa perustermillä (ground term), eli vakiotai funktiotermillä, joka ei sisällä muuttujia. Sijoitus eli substituutio θ on sidontalista, jossa kullekin muuttujalle annetaan sen korvaava perustermi. Merk. α(θ) on lause, joka saadaan kun sijoitusta θ sovelletaan lauseeseen α. Universaalikvanttorin eliminoimiseksi voimme päätellä v α α({ v/g }), missä v on mikä tahansa muuttuja ja g mielivaltainen perustermi. luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.1/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.2/38 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 Opiskelija(Jussi) ja Äiti(Jussi, Meeri) on vain nähtävä propositiosymboleina. Täten propositiologiikan päättelyä voidaan soveltaa predikaattilogiikan lauseisiin. Jos tietämyskannassa kuitenkin käytetään funktiosymboleita, niin mahdollisten korvaavien perustermien lkm on ääretön: Isä(Isä(Isä(Jussi))) jne 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ä etenemällä ikään kuin leveyssuuntaisesti kokeilemalla ensin vakiotermejä, sitten yhteen kertaan sovellettuja funktioita jne kunnes todistus löytyy. Päättely on siis täydellistä. Analogia Turingin koneiden pysähtymisongelmaan kuitenkin osoittaa, että ongelma on ratkeamaton. Tarkemmin: ongelma on osittain ratkeava: jos lause on looginen seuraus, todistus löytyy, mutta muuten algoritmi voi jatkaa todistuksen etsintää ikuisesti. luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.3/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.4/38 SAMAISTUS L. UNIFIKAATIO Em. menetelmä ei kuitenkaan ole kovin tehokas, koska siinä universaalilauseista tuotetaan erilaisilla sijoituksilla monta ilmentymää vaikka usein vain yhtä tarvitaan todistuksessa. Universaalilauseiden kaikkien muuttujasijoitusten aukikirjoittaminen vaikuttaa turhalta. Parempi olisi käyttää vain sellaisia sijoituksia, joista on hyötyä todistamisessa. 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(θ) Esim. lauseista Opiskelija(Jussi), x Ahkera(x) ja y Opiskelija(y) Ahkera(y) Valmistuu2007(y) voimme päätellä Valmistuu2007(Jussi) sidonnan { y/jussi, x/jussi } perusteella Jätetään universaalikvanttorit merkitsemättä ja saadaan Opiskelija(Jussi), Ahkera(x), (Opiskelija(y) Ahkera(y) Valmistuu2007(y)) Valmistuu2007(y)({y/Jussi, x/jussi}) Yleistetty Modus Ponens on eheä päättelysääntö Samaan tapaan kuin yleistetty MP voidaan "korottaa" propositiologiikasta predikaattilogiikkaan, voidaan muokata myös eteen- ja taaksepäinketjutus sekä resoluutiosääntö. 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) luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.5/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.6/38 UNIFY(Tuntee(Jussi, x), Tuntee(Jussi, Jaana)) = { x/jaana } UNIFY(Tuntee(Jussi, x), Tuntee(y, P ekka)) = { x/p ekka, 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 Ongelman edellä aiheuttaa saman muuttujanimen käyttö Toisaalta eri lauseiden muuttujanimillä ei ole merkitystä (ennen sidontaa) joten voidaan uudelleennimetä muuttujat: jälkimmäinen lausee korvataan sellaisella jossa x on korvattu muuttujalla jota ei ole käytetty ennestään, esim x 1 7. Jos samastus voidaan tehdä usealla eri sijoituksella, valitaan se joka asettaa vähiten rajoituksia (sitomisia vakioihin) muuttujille, siis yleisin samaistus (most general unifier). UNIFY(Tuntee(Jussi, x), Tuntee(y, z)) { y/jussi, z/x } { y/jussi, x/jussi, z/jussi } luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.7/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.8/38

ETEENPÄINKETJUTUS Yleisimmän unifioijan etsivä algoritmi on esitetty kirjan kuvassa 9.1: Kumpaakin termiä edetään ja tutkitaan rekursiivisesti samastaen aina kummassakin esiintyviä termejä mikäli mahdollista. Jos ei ole mahdollista, niin samastus epäonnistuu. Mikäli verrataan yksittäistä muuttujaa monimutkaiseen termiin, täytyy tehdä esiintymistarkistus (occur check), jossa katsotaan ettei muuttuja esiinny monimutkaisen termin sisällä. Jos esiintyy niin sijoitusta ei löydy ja samastus epäonnistuu. Esiintymistarkistuksen takia algoritmin aikavaatimus on neliöllinen, mutta asia voidaan tehdä lineaarisestikin monimutkaisemmilla algoritmeilla. Usein esiintymistarkistus tosin jätetään tekemättä kokonaan, mikä johtaa eheyden menettämiseen mutta ei usein ole ongelma käytännössä. Eteenpäinketjutus toimii, vastaavasti kuin propositionaalisessa tapauksessa, Hornin lauseille eli literaalien disjunktioille, joissa korkeintaan yksi literaali on positiivinen. Jokainen lause on siis atomilause tai implikaatio, jonka runko on positiivisten atomilauseiden konjunktio ja kärki on yksittäinen positiivinen atomilause Opiskelija(Jussi) Ahkera(x) Opiskelija(y) Ahkera(y) Valmistuu2007(y) (Tarkkaan ottaen Hornin lause: korkeintaan yksi positiivinen literaali, definite clause: täsmälleen yksi positiivinen literaali) Literaalimuodossa universaalikvanttorit jätetään usein kirjoittamatta ja muuttujat vain oletetaan universaalisti kvantifioiduiksi. luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.9/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.10/38 Kuten propositiologiikassa lähtien liikkeelle faktoista, soveltaen yleistettyä Modus Ponensia voidaan tehdä eteenpäin ketjuttavaa päättelyä: käydään läpi sääntöjä ja jos löytyy sellainen jonka ehdot täyttyvät, lisätään sen takajäsenen tietämyskantaan. Jatketaan kunnes kyselyn tavoitteenna ollut lause saadaan todistettua tai uusia faktoja ei saada lisättyä. Nyt on huolehdittava siitä, ettei "uusi" fakta ole pelkkä tunnetun faktan uudelleennimentä, esim. Pitää(x, Karkki) Pitää(y, Karkki) Kun päästään vaiheeseen, jossa kaikki pääteltävät lauseet ovat jo tietämyskannassa, kantaa kutsutaan päättelyprosessin kiintopisteeksi (fixed point). 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. Datalog-tietämyskannassa ei esiinny laisinkaan funktiosymboleja ja eteenpäinketjutuksessa polynominen askelten lkm riittää kaikkien loogisten seurausten generoimiseen. Yleisessä tapauksessa joudumme vetoamaan Herbrandin tulokseen; päättely vain osittain ratkeavaa. Kirjan (amerikkalainen) esimerkki: USAn lain mukaan amerikkalaiset eivät saa myydä aseita vihamielisille valtioille. Valtio nimeltä Nono on vihollisvaltio, joka omistaa ohjuksia jotka on myynyt amerikkalainen eversti nimeltä West. Todistettava että eversti West on rikollinen. luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.11/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.12/38... amerikkalaiset eivät saa myydä aseita vihamielisille valtioille: American(x) W eapon(y) Sells(x, y, z) Criminal(x) Nono omistaa ohjuksia ( x Owns(Nono, x) Missile(x)) Owns(Nono, M 1 ) ja Missile(M 1 )... jotka on myynyt amerikkalainen eversti nimeltä West: x Missile(x) Owns(Nono, x) Sells(W est, x, Nono) Ohjukset ovat aseita: Missile(x) W eapon(x) Amerikan viholliset ovat vihamielisiä: Enemy(x, America) Hostile(x) West on amerikkalainen: American(W est) Nono on Amerikan vihollinen: Enemy(Nono, America) luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.13/38 function FOL-FC-ASK(KB, α) returns a substitution or false repeat until new is empty new for each sentence r in KB do ( p 1... p n = q) STANDARDIZE-APART(r) for each θ such that (p 1... p n)θ = (p 1... p n)θ for some p 1,..., p n in KB q SUBST(θ, q) if q is not a renaming of a sentence already in KB or new then do add q to new φ UNIFY(q, α) if φ is not fail then return φ add new to KB return false luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.14/38 Weapon(M1) Sells(West,M1,Nono) luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.15/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.16/38

Eteenpäinketjutusalgoritmia käytetään nk. deduktiivisissa tietokannoissa (deductive databases) ja sääntöjärjestelmissä (production systems). Tämä algoritmi on kuitenkin tehoton kolmesta syystä: Weapon(M1) Sells(West,M1,Nono) 1. Algoritmin sisäsilmukassa generoidaan kaikki mahdolliset unifikaatiot, joilla säännön premissi saadaan samastettua sopivien faktojen kanssa. 2. Jokainen sääntö tarkistetaan jokaisella iteraatiokerralla, vaikka vain yksikin uusi fakta olisi lisätty tietämyskantaan. 3. Algoritmi generoi runsaasti faktoja, joilla ei ole merkitystä todistettavana olevan lauseen kannalta. Näitä ongelmia voidaan korjata eri menetelmillä ja parhaimmillaan eteenpäinketjutus toimii polynomisessa ajassa. luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.17/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.18/38 TAAKSEPÄINKETJUTUS Predikaattilogiikassa taaksepäinketjutuksessa maaliksi otetaan ensin todistettava lause ja katsotaan minkä säännön kärjen kanssa maali voidaan samaistaa. Kun tällainen sääntö löytyy, sen rungon kaikki konjunktit lisätään uusiksi maaleiksi ja jatketaan yhdistetyn sijoituksen (composition of substitutions) etsimistä jatkamalla sääntöjen läpikäyntiä uusilla maaleilla kunnes päästään faktoihin asti. Yhdistetty sijoitus määritellään perättäin sovelletuksi sijoitukseksi: Subst(Compose(θ 1, θ 2 ), p) = Subst(θ 2, Subst(θ 1, p)). Kun maali samaistuu faktaan, ei uusia (ali)maaleja tarvitse generoida Syvyyssuuntainen haku tilavaatimus on lineaarinen ja sen ongelmaksi tulee toistuvat tilat ja epätäydellisyys jos syvyys voi olla ääretön. Näitä ongelmia voidaan jossain määrin korjata. function FOL-BC-ASK(KB, goals, θ) returns a set of substitutions inputs: KB, a knowledge base goals, a list of conjuncts forming a query (θ already applied) θ, the current substitution, initially the empty substitution local variables: answers, a set of substitutions, initially empty if goals is empty then return {θ} q SUBST(θ, FIRST(goals)) for each sentence r in KB where STANDARDIZE-APART(r) = ( p 1... p n q) and θ UNIFY(q, q ) succeeds new goals [ p 1,..., p n REST(goals)] answers FOL-BC-ASK(KB, new goals, COMPOSE(θ, θ)) answers return answers luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.19/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.20/38 American(x) Sells(x,y,z) luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.21/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.22/38 Sells(x,y,z) Sells(x,y,z) luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.23/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.24/38

{x/west, y/m1} {x/west, y/m1, z/nono} Sells(x,y,z) { z/nono } { y/m1} { y/m1} luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.25/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.26/38 LOGIIKKAOHJELMOINTI { z/nono } {x/west, y/m1, z/nono} { y/m1} Taaksepäinketjutus on logiikkaohjelmoinnin (logic programming) perusta. Logiikkaohjelmoinnin tavoitteena on deklaratiivinen tiedonesitys, jossa tietämys ja päättelyprosessit on erotettu toisistaan. Tunnetuin logiikkaohjelmointikieli on Prolog (Alain Colmerauer, 1972), jossa ohjelma muodostuu Hornin lauseina ilmaistusta tietämyskannasta. Siihen kohdistetaan kyselyitä, jotka sitten käsitellään taaksepäinketjutuksella. Prologin syntaksi on erilainen kuin logiikan: predikaattisymbolit alkavat pienellä kirjaimella ja muuttujat isolla, ensin kirjoitetaan klausuulin kärki, sitten ":-" (implikaatio oikealta vasemmalle) ja runko, missä literaalit on erotettu pilkulla (konjunktio) ja koko lause päättyy pisteeseen: criminal(x) :- american(x), weapon(y), sells(x,y,z), hostile(z). luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.27/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.28/38 Tämä siis vastaa predikaattilogiikan lausetta x, y, z American(x) Sells(x, y, z) Criminal(x) Prologissa on lisäksi määritelty operaatiot listojen käsittelyä ja aritmetiikkaa varten. Esimerkiksi listojen yhdistämiseen on määritelty predikaatti append(x,y,z), joka on tosi, kun Z on X:n ja Y:n yhdiste: append([],y,y). append([a X],Y,[A Z]) :- append(x,y,z). Ensimmäisen mukaan Y saadaan yhdistämällä tyhjä lista Y:hyn ja toinen sanoo, että jos Z saadaan yhdistämällä X:ään Y, niin Z, jonka alusta on poistettu A saadaan yhdistämällä Y X:ään jonka alusta on poistettu A. Nyt voimme suorittaa kyselyn append([1],[2],z), joka kysyy mitä saamme yhdistämällä listat [1] ja [2], ja saamme vastauksen Z=[1,2]. Jos kyselyn maalina on lause append(a,b,[1,2]), siis mitkä kaksi listaa yhdistämällä saadaan lista [1,2], saadaan vastaukseksi mahdolliset muuttujasidonnat eli parit A=[] B=[1,2] A=[1] B=[2] A=[1,2] B=[]. Prolog-lauseiden evaluointi perustuu syvyyssuuntaiseen taaksepäinketjutukseen, missä lauseita kokeillaan siinä järjestyksessä, jossa ne on talletettu tietämyskantaan. Syvyyssuuntaisen päättelyn seurauksena voi olla ikuinen silmukka joten päättely ei ole täydellistä: Korjaus: path(x,z):- path(x,y), link(y,z). path(x,z):- link(x,z). path(x,z):- link(x,z). path(x,z):- path(x,y), link(y,z). luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.29/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.30/38 RESOLUUTIO Prologissa on joitain piirteitä joita ei ole tavallisessa loogisessa päättelyssä: sisäänrakennetut aritmeettiset funktiot, predikaateilla voi olla sivuvaikutuksia (esim. I/O), negation as failure: negatiivinen predikaatti not P saa arvon true, jos positiivista predikaattia P ei onnistuta todistamaan. Esim. alive(x) :- not dead(x) joten kaikki joiden ei voi todistaa kuolleen ovat elossa. Prologissa on yhtäsuuruusmerkki =, mutta se ei ole yhtä vahva kuin identiteettirelaatio logiikassa vaan toteutuu ainoastaan jos kaksi termiä voidaan samastaa. Ei ole mahdollista antaa faktoja tai sääntöjä joissa identtisyyttä olisi käytetty. Kaikkia tarkistuksia (occur check) ei ole toteutettu Prologin unifikaatioalgoritmissa, joten päättely ei ole eheää. Tämä ei kuitenkaan yleensä johda ongelmiin. Kurt Gödelin täydellisyyslause (1930) 1. kertaluvun logiikalle: jokaisella loogisella seurauksella on äärellinen todistus T = φ T φ Vasta Robinsonin (1965) resoluutioalgoritmi antoi käytännöllisen menetelmän todistusten muodostamiseksi Gödelin tuloksista tunnetumpi on tietysti epätäydellisyyslause: matemaattisen induktion omaavan teorian kaikkia loogisia seurauksia ei voida todistaa aksioomista Erityisesti tämä koskee lukuteoriaa, jota siis ei voi aksiomatisoida luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.31/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.32/38

1. kertaluvun logiikan kaksi literaalia ovat komplementaarisia, jos yksi voidaan samaistaa toisen negaation kanssa Resoluutiosääntö predikaattilogiikalle: l 1 l k, m 1 m n (l 1 l i 1 l i+1 l k m 1 m j 1 m j+1 m n )θ missä UNIFY(l i, m j ) = θ. Esimerkiksi Rich(x) Unhappy(x) Rich(Ken) missä θ = {x/ken} Unhappy(Ken) Resoluutiossa premissien muuttujat täytyy tarvittaessa standardoida. Johtopäätöksestä täytyy poistaa samaistuvat literaalit. luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.33/38 Resoluutiota varten lauseet on muutettava konjunktiiviseen normaalimuotoon. Esim. x [ y Eläin(y) Rakastaa(x, y)] [ y Rakastaa(y, x)] Implikaation poisto x [ y Eläin(y) Rakastaa(x, y)] [ y Rakastaa(y, x)] Negaation siirto sisään x, p x p, x, p x p: x [ y ( Eläin(y) Rakastaa(x, y))] [ y Rakastaa(y, x)] x [ y Eläin(y) Rakastaa(x, y)] [ y Rakastaa(y, x)] x [ y Eläin(y) Rakastaa(x, y)] [ y Rakastaa(y, x)] Muuttujanimien standardointi x [ y Eläin(y) Rakastaa(x, y)] [ z Rakastaa(z, x)] luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.34/38 Skolemisointi x [Eläin(F (x)) Rakastaa(x, F (x))] Rakastaa(G(x), x) Universaalikvanttorin poisto [Eläin(F (x)) Rakastaa(x, F (x))] Rakastaa(G(x), x) Distributiivisuuden soveltaminen [Eläin(F (x)) Rakastaa(G(x), x)] [ Rakastaa(x, F (x)) Rakastaa(G(x), x)] Lopputulos ei enää ole helposti ymmärrettävä, mutta se ei haittaa, koska muunnosproseduuri on automatisoitavissa Resoluutio on myös predikaattilogiikalle (refutaatio)täydellinen päättelyjärjestelmä siinä mielessä, että sen avulla voidaan tarkastaa tietämyskannan loogiset seuraukset KB = α todistetaan osoittamalla, että KB α johtaa ristiriitaan. luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.35/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.36/38 LAmerican(x) LMissile(x) L LSells(x,y,z) LMissile(x) LOwns(Nono,x) Weapon(x) LEnemy(x,America) Sells(West,x,Nono) Hostile(x) Criminal(x) L L L L L L L L L L L L Teoreemantodistimissa logiikkaohjelmoinnin Hornin lauseisiin rajoitettu kieli on laajennettu täyteen 1. kertaluvun logiikkaan Myös esim. Prologin tapa antaa kontrollin sekoittaa lauseiden logiikkaa on yleensä poistettu Päättely ei riipu lauseiden tai niiden osien kirjoitusjärjestyksestä Sovelluskohde: ohjelmien ja laitteiston verifiointi Matematiikassa teoreemantodistimet ovat nousseet näkyvään asemaan Esimerkiksi 1996 Otter-ohjelman seuraaja ensimmäisenä todisti, että Robbinsin 1933 esittämät aksioomat määrittävät Boolen algebran luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.37/38 luku09.tex 58066-7 Tekoäly (4 ov / 8 op) Raul Hakli 10/11/2005 12:14 p.38/38