ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

Samankaltaiset tiedostot
Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Chomskyn hierarkia ja yhteysherkät kieliopit

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Rekursiiviset palautukset [HMU 9.3.1]

Yhteydettömän kieliopin jäsennysongelma

Rajoittamattomat kieliopit (Unrestricted Grammars)

Algoritmin määritelmä [Sipser luku 3.3]

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

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

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

Täydentäviä muistiinpanoja laskennan rajoista

Lisää pysähtymisaiheisia ongelmia

Ei-yhteydettömät kielet [Sipser luku 2.3]

Rajoittamattomat kieliopit

5.3 Ratkeavia ongelmia

Säännöllisen kielen tunnistavat Turingin koneet

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Yhteydettömät kieliopit [Sipser luku 2.1]

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

Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla.

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

2. Yhteydettömät kielet

DFA:n käyttäytyminen ja säännölliset kielet

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

Pinoautomaatit. Pois kontekstittomuudesta

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Säännöllisten kielten sulkeumaominaisuudet

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

uv n, v 1, ja uv i w A kaikilla

Kertausta 1. kurssikokeeseen

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

1. Universaaleja laskennan malleja

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Muita vaativuusluokkia

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Turingin koneen laajennuksia

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

S BAB ABA A aas bba B bbs c

Tietojenkäsittelyteorian alkeet, osa 2

Ratkeavuus ja efektiivinen numeroituvuus

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

2. Laskettavuusteoriaa

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Automaatit. Muodolliset kielet

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.

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

Miten osoitetaan joukot samoiksi?

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

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

Todistusmenetelmiä Miksi pitää todistaa?

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

ICS-C2000 Tietojenkäsittelyteoria

3SAT-ongelman NP-täydellisyys [HMU ]

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

Johdatus matemaattiseen päättelyyn

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

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

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

Laskennan teoria

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

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

Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }?

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

Transkriptio:

Edellä esitetyt kielten A TM ja HALT TM ratkeamattomuustodistukset ovat esimerkkejä palautuksesta (reduction). Intuitiivisesti ongelman A palauttaminen ongelmaan B tarkoittaa, että Oletetaan, että meillä on proseduuri P B, joka ratkaisee ongelman B. Muodostetaan proseduuri P A, joka ratkaisee ongelman A käyttäen aliruutiinina proseduuria P B. Kun ongelma A on palautettu ongelmaan B, voidaan tehdä päätelmiä kahteen suuntaan: 1. Jos proseduuri P B todella on olemassa, olemme saaneet toimivan proseduurin myös ongelmalle A. 2. Jos ongelma A tiedetään ratkeamattomaksi, niin proseduuria P B ei voi olla olemassa, joten myös B on ratkeamaton. Käytännön tietojenkäsittelyssä palautusten soveltaminen suuntaan 1 on keskeistä (aliohjelmakirjastot). Ratkeamattomuustulosten todistukset ovat usein epäsuoria ja perustuvat suunnan 2 käyttöön. 214

Jos ongelma A voidaan palauttaa ongelmaan B, merkitsemme A B. Käytämme merkintää tässä epämuodollisesti ilman tarkkaa matemaattista määritelmää. Tarkka määritelmä voidaan tehdä eri tavoilla, jolloin puhutaan esim. kuvauspalautuksesta A m B [Sipser luku 5.3] tai Turing-palautuksesta A T B [Sipser luku 6.3]. Intuitiivinen tulkinta on joka tapauksessa, että joten jossain mielessä ongelma A voidaan ratkaista ongelman B avulla, B on ainakin yhtä vaikea kuin A. Kun halutaan tietää, onko jokin ongelma X ratkeava, voidaan siis yrittää kahdensuuntaisia palautuksia: Jos A X, missä A on ratkeamaton, niin X on ratkeamaton. Jos X B, missä B on ratkeava, niin X on ratkeava. Edellä lauseen 4.16 todistuksessa X = A TM ja A = D. Vastaavasti korollaarissa 4.18 X = HALT TM ja A = A TM. Sama idea toistuu jatkossa. 215

Edellä todettiin äärellisten automaattien ja yhteydettömien kielten tyhjyysongelmat E DFA ja E CFG ratkeaviksi. Kuitenkin Lause 4.19: [Sipser Thm. 5.2] Turingin koneiden tyhjyysongelma on ratkeamaton. E TM = { M M on Turingin kone ja L(M) = } Todistus: Tehdään palautus hyväksymisongelmasta A TM. Osoitamme, että mistä tahansa Turingin koneesta M ja merkkijonosta w voidaan muodostaa Turingin kone M 1, jolla on seuraava ominaisuus: { { w } jos w L(M) L(M 1 ) = muuten. Jos E TM olisi ratkeava, kieli A TM voitaisiin ratkaista algoritmilla, joka syötteellä M, w toimii seuraavasti: 1. Muodosta edellä mainitun lainen kone M 1. 2. Jos M 1 E TM, niin hylkää. Muuten hyväksy. Koska todellisuudessa A TM ei ole ratkeava, myös E TM on ratkeamaton. 216

Kone M 1 toimii syötteellä x seuraavasti: 1. Jos x w, niin hylkää. 2. Muuten simuloi konetta M syötteellä x. Jos M hyväksyisi, niin hyväksy. Jos M hylkäisi, niin hylkää. Nyt koneella M 1 on haluttu ominaisuus { { w } jos w L(M) L(M 1 ) = muuten. Huomaa, että konetta M 1 rakennettaessa ei tarvitse tietää, kumpi vaihtoehto pätee. Jos nyt R olisi ratkaisija ongelmalle E TM, niin ongelma A TM voitaisiin ratkaista koneella, joka syötteellä M, w toimii seuraavasti: 1. Muodosta syötteestä M, w edellä kuvattu kone M 1. 2. Simuloi konetta R syötteellä M 1. Jos R hyväksyisi, niin hylkää. Jos R hylkäisi, niin hyväksy. Kone M 1 saadaan koneesta M lisäämällä suunnilleen x tilaa, jotka tarkastavat syötteen x. Siis annetusta M, w osataan helposti muodostaa M 1.. 217

Kielen E TM ratkeamattomuus on erikoistapaus Ricen lauseesta. Kieli A on semanttinen ominaisuus, jos se voidaan esittää muodossa A = { M L(M) S } jollain joukolla kieliä S P(Σ ). Esim. E TM on semanttinen ominaisuus; siinä S = { } (joukko, jonka ainoa alkio on tyhjä kieli). Siis jos A on semanttinen ominaisuus, kysymyksen päteekö M A vastaus riippuu vain koneen M hyväksymästä kielestä. Kääntäen kieli A ei ole semanttinen ominaisuus, jos joillain M 1 ja M 2 pätee L(M 1 ) = L(M 2 ), mutta M 1 A ja M 2 A. Semanttinen ominaisuus A on triviaali, jos joko kaikilla M pätee M A tai kaikilla M pätee M A. Lause 4.20 (Rice): [Sipser Problem 5.28] Jokainen ei-triviaali semanttinen ongelma on ratkeamaton. Todistus sivuutetaan, mutta perustuu oleellisesti samaan ideaan kuin lauseen 4.19 todistus. 218

Lause 4.21: Turingin koneiden epätyhjyysongelma on Turing-tunnistettava. Ẽ TM = { M L(M) } Todistus: Kieli Ẽ TM voidaan tunnistaa epädeterministisellä Turingin koneella, joka syötteellä M toimii seuraavasti: 1. Valitse epädeterministisesti merkkijono w. 2. Simuloi konetta M syötteellä w. Jos M hyväksyisi, niin hyväksy. Jos M hylkäisi, niin hylkää. Korollaari 4.22: Turingin koneiden tyhjyysongelma E TM ei ole Turing-tunnistettava. Todistus: Tyhjyysongelman komplementti voidaan esittää muodossa E TM = Ẽ TM B, missä B koostuu merkkijonoista, jotka eivät ole muotoa M millekään M. Emme ole tarkemmin määritelleet koodausta, mutta minimivaatimus järkevälle koodaukselle on, että B on ratkeava. Siis E TM on Turing-tunnistettava. Koska E TM ei ole ratkeava, se ei ole edes Turing-tunnistettava (vrt. korollaari 4.17). 219

Lause 4.23: [Sipser Thm. 5.4] Turingin koneiden ekvivalenssiongelma EQ TM = { M 1, M 2 M 1 ja M 2 ovat Turingin koneita ja L(M 1 ) = L(M 2 ) } on ratkeamaton Todistus: Tehdään vastaoletus, että EQ TM on ratkeava. Olkoon M jokin Turingin kone, jolla L(M ) =. Nyt E TM voidaan ratkaista Turingin koneella, joka syötteellä M toimii seuraavasti: 1. Muodosta w = M, M. 2. Jos w EQ TM, niin hyväksy; muuten hylkää. Mutta E TM on ratkeamaton; ristiriita. Itse asiassa pätee voimakkaammin Lause 4.24: [Sipser Thm. 5.30] Kumpikaan kielistä EQ TM ja EQ TM ei ole Turing-tunnistettava. Todistus: melko suoraviivainen, mutta sivuutetaan. 220

Todetaan lopuksi ilman todistusta, että esim. seuraavat yhteydettömiin kielioppeihin liittyvät ongelmat ovat ratkeamattomia: onko G moniselitteinen, päteekö L(G 1 ) L(G 2 ) =, päteekö L(G) = Σ ja päteekö L(G 1 ) = L(G 2 ). Täsmällisemmin esim. viimeinen kohta tarkoittaa, että kieli EQ CFG = { G 1, G 2 G 1 ja G 2 ovat CFG:itä ja L(G 1 ) = L(G 2 ) } on ratkeamaton. 221

5. Laskettavuus, kieliopit, logiikka Lopuksi tarkastelemme Turingin koneeseen (tai yleisemmin algoritmeihin) perustuvaa laskettavuuden käsitettä suhteessa kahteen muuhun tärkeään tiedonkäsittelyformalismiin: Kieliopit: Turing-tunnistettavat kielet liitetään säännöllisten ja yhteydettömien kanssa Chomskyn hierarkiaan. Logiikka: Ratkeamattomuus on läheisessä yhteydessä formaalista logiikasta tuttuun epätäydellisyyteen. Tavoitteena on vetää yhteen kurssin teemoja ja asettaa niitä laajempaan yhteyteen. Teknisiin yksityiskohtiin ei juuri kiinnitetä huomiota (eikä niitä kysytä kokeessa). 222

Chomskyn hierarkia Rajoittamaton kielioppi on nelikko G = (V,Σ, R, S), missä 1. V on äärellinen muuttujien joukko, 2. Σ on päätesymbolien joukko, jolla Σ V =, 3. R on äärellinen joukko sääntöjä muotoa u v, missä u (Σ V ) + ja v (Σ V ) ja 4. S V on lähtösymboli. Tämä laajentaa yhteydettömiä kielioppeja siten, että säännön u v vasen puoli u saa olla mikä tahansa epätyhjä merkkijono, ei pelkästään yksi muuttujasymboli. Kuten yhteydettömien kielioppien tapauksessa, merkitsemme w w, ja sanomme että w johtaa suoraan merkkijonon w, jos voidaan kirjoittaa w = xuy ja w = xvy, missä (u v) R. Jos w 0 w 1... w n 1 w n, sanomme että w 0 johtaa merkkijonon { w n, ja merkitsemme } w 0 wn. Kieliopin tuottama kieli on L(G) = w Σ S w. 223

Esimerkki 5.1: Kieli A = { a i b i c i i N } tunnetusti ei ole yhteydetön. Se voidaan kuitenkin tuottaa rajoittamattomalla kieliopilla S aabc abc ε A aabc abc Cb bc Cc cc, missä on käytetty samoja merkintäkonventioita kuin yhteydettömille kieliopeille. Esim. merkkijonolle aaabbbccc saadaan johto S aabc aaabcbc aaabcbcbc aaabcbbcc aaabbcbcc aaabbbccc aaabbbccc aaabbbccc. 224

Kielioppien ja Turingin koneiden yhteys on seuraava: Lause 5.2: Kieli on Turing-tunnistettava, jos ja vain jos jokin rajoittamaton kielioppi tuottaa sen. Todistushahmotelma: Kun on annettu rajoittamaton kielioppi G, kieli L(G) voidaan luetella seuraavasti: 1. Käy läpi kaikki yhden pituiset johdot S w 1 ja tulosta kaikki päätemerkkijonot w Σ. 2. Käy läpi kaikki kahden pituiset johdot S w 1 w 2 ja tulosta kaikki päätemerkkijonot w 2 Σ. 3. Käy läpi kaikki kolmen pituiset johdot S w 1 w 2 w 3 ja tulosta kaikki päätemerkkijonot w 3 Σ. 4..... Siis L(G) on Turing-tunnistettava (lause 3.9). 225

Mielenkiintoisempi suunta on muodostaa annetulle Turingin koneelle M = (Q,Σ,Γ, δ, q 0, q accept, q reject ) kielioppi G = (V,Σ, R, S), jolla L(G) = L(M). Perusidea on tulkita Turingin koneen tilanteet u 1 u 1... u n qv 1 v 2... v n, u i, v i Γ, q Q merkkijonoiksi. Tätä varten valitaan kieliopin muuttujiksi V = Q (Γ Σ), jolloin tilanteet ovat suoraan aakkoston V Σ merkkijonoja. Turingin koneen laskennan esittämiseksi liitetään kielioppiin sääntöjä seuraavasti: Jos δ(r, a) = (s, b, R), lisätään sääntö ra bs. Jos δ(r, a) = (s, b, L), lisätään sääntö cra scb kaikilla c Γ. Nyt Turingin koneen laskenta-askelta uqv u q v vastaa kieliopin suora johto uqv u q v. Laskennan alun ja lopun vaatimat yksityiskohdat sivuutetaan (ks. esim. Sudkamp: Languages and Machines, tai Laskennan teoria luennot). 226

Yhteydettömien kielioppien ohella toinen tärkeä erikoistapaus on yhteysherkät (context-sensitive) kieliopit. Tällaisessa kieliopissa kaikilla säännöillä u v pitää olla u v. Poikkeuksena sallitaan kuitenkin sääntö S ε edellyttäen, että S ei esiinny minkään säännön oikealla puolella. Kieli A on yhteysherkkä, jos A = L(G) jollain yhteysherkällä G. Esimerkki 5.3: Yhteydettömän kieliopin säännöissä u v pätee aina u = 1. Poistamalla ε-säännöt (kuten Chomskyn normaalimuodon yhteydessä) yhteydetön kielioppi saadaan yhteysherkkään muotoon. Siis yhteydettömät kielet ovat yhteysherkkiä. Toisaalta esimerkki 5.1 itse asiassa osoittaa kielen { a i b i c i i N } yhteysherkäksi. Siis kaikki yhteysherkät kielet eivät ole yhteydettömiä. Nimitys yhteysherkkä tulee siitä, että tällaisen kieliopin säännöt voidaan muuntaa muotoon xay xwy, missä A V, x, y (V Σ) ja w (V Σ) +. Siis sääntöä A w saadaan soveltaa vain kontekstissa x y. 227

Lause 5.4: Yhteysherkät kielet ovat ratkeavia. Todistushahmotelma: Erikoistapausta S ε lukuunottamatta missä tahansa yhteysherkän kieliopin johdossa pätee S w 1 w 2... w n 1 w 1 w 2... w n. Siis erityisesti jos kysytään jostakin merkkijonosta w, päteekö S w, niin riittää tarkastella johtoja, joiden välivaiheiden w i pituudet w i ovat korkeintaan w. Koska tällaisia välivaiheita on äärellinen määrä, voidaan esim. käydä läpi kaikki niiden järjestykset ja katsoa, muodostuuko laillinen johto. Tarkemmin voidaan osoittaa, että kieli on yhteysherkkä, jos ja vain jos se voidaan tunnistaa lineaarisesti rajoitetulla automaatilla (linear-bounded automaton, LBA). Tällainen automaatti on epädeterministinen Turingin kone, joka ei käytä nauhatilaa enempää kuin syötteen pituuden verran, ts. ei koskaan kirjoita mitään tyhjämerkin päälle. 228

Yleisiä, yhteysherkkiä, yhteydettömiä ja oikealle lineaarisia kielioppeja kutsutaan vastaavasti tyypin 0, 1, 2 ja 3 kieliopeiksi. Saadaan seuraava Chomskyn hierarkia: tyyppi kieli kielioppi automaatti 0 tunnistettava rajoittamaton Turingin kone 1 yhteysherkkä yhteysherkkä lin. rajoitettu 2 yhteydetön yhteydetön pinoautom. 3 säännöllinen oikealle lineaarinen äärellinen autom. (Oikealle lineaarista kieliopeista ks. harjoitus 6.) Ylempi taso sisältää myös kaikkien alempien tasojen kielet. Lisäksi tiedämme, että kaikki kielet eivät ole edes tunnistettavia, tasot ovat erillisiä (esim. on olemassa yhteysherkkiä ei-yhteydettömiä kieliä) ja yhteysherkät ratkeavat tunnistettavat. 229

kaikki kielet EQ TM A TM tunnistettavat A TM ratkeavat yhteysherkät { } a i b i c i i N Chomskyn hierarkia ja eräiden kielten sijainti sen suhteen yhteydettömät { a i b i i N } säännölliset { a i i N } 230

Laskettavuus ja logiikka Matematiikassa ja logiikassa todistus on keskeinen käsite. Yleisesti todistus on argumentti, jolla lukija vakuutetaan jonkin väitteen pätevyydestä. Jotta todistukset todella olisivat vakuuttavia, niiden pitää perustua yhteisesti hyväksyttyihin täsmällisiin sääntöihin. Ääritapaus täsmällisyydestä on formaali todistus. Tällöin todistamisessa sallitut säännöt on kirjattu niin yksityiskohtaisesti, että annetun todistuksen oikeellisuus voidaan tarkistaa vaikka tietokoneella. Täysin formaalit todistukset ovat yleensä hyvin hankalia. Käytännön matematiikassa tyydytään miltei aina vähäisempään täsmällisyyden asteeseen. Formaaliin todistamiseen liittyvät kysymykset ovat kuitenkin keskeisiä matematiikan perusteiden tarkastelussa. Tarkastelemme seuraavassa logiikan formalisointia laskettavuuden näkökulmasta. Varoitus: yksityiskohdat sivuutetaan. 231

Tyypillinen tapa formalisoida päättelyä on määritellä aksioomia ja päättelysääntöjä. Aksioomat ovat väittämiä, joita voidaan todistuksessa pitää annettuina. Tyypillinen esimerkki aksioomasta on ( x)( y)( z)(((x = y) (y = z)) (x = z)), joka esittää yhtäsuuruusrelaation transitiivisuuden. Päättelysäännöt esitetään tyypillisesti muodossa ψ 1,..., ψ n. φ Tämä sääntö tarkoittaa, että jos väittämät ψ 1,..., ψ n on jo saatu todistetuksi, voidaan edelleen päätellä φ. Perusesimerkki päättelysäännöstä on modus ponens ψ, ψ φ. φ 232

Väittämän φ todistus annetuista aksioomista ja päättelysäännöistä on jono ψ 1,..., ψ n, missä ψ n = φ ja kaikilla 1 i n pätee ψ i on aksiooma tai on olemassa päättelysääntö jolla { θ 1,..., θ k } { ψ 1,..., ψ i 1 }. θ 1,..., θ k ψ i, Oletetaan jatkossa, että aksioomien ja päättelysääntöjen joukot (sopivasti koodattuna) ovat ratkeavia. Tämä on edellä esitetyn motivaation valossa luonteva (mutta ei pakollinen) rajoitus. Huomaa, että aksioomia ja päättelysääntöjä voi silti olla ääretön määrä. 233

Jos aksioomien ja päättelysääntöjen joukot ovat ratkeavia, myös kaikkien todistusten joukko on selvästi ratkeava. P = { ψ 1,..., ψ n ψ 1,..., ψ n on todistus kaavalle ψ n } Tästä seuraa edelleen, että todistuvien väitteiden joukko T = { φ on olemassa ψ 1,..., ψ n 1, joilla ψ 1,..., ψ n 1, φ P } on Turing-tunnistettava. Kieli T voidaan luetella esim. seuraavasti: 1. Alusta n := 1. 2. Etsi leksikografisessa järjestyksessä ensimmäinen φ, jolla ψ 1,..., ψ n 1, φ P. 3. Tulosta φ. Aseta ψ n := φ ja n := n + 1. Palaa kohtaan 2. 234

Sen sijaan todistuvien väittämien joukko T ei välttämättä ole ratkeava. Lyhyenkin väittämän φ todistuksessa voi tarvita välivaiheina pitkiä väittämiä ψ i. Tällöin ylläoleva luettelija ei tuota kieltä T leksikografisessa järjestyksessä. Onko T todella ratkeava vai ei riippuu siitä, mitä nimenomaisia aksioomia ja päättelysääntöjä tarkastellaan. Esim. luonnollisten lukujen Peanon aksioomien tapauksessa T ei ole ratkeava. Toisaalta jos järjestelmä on täydellinen (complete) ja ristiriidaton (consistent), eli kaikilla φ pätee joko φ T tai φ T mutta ei molemmat, niin T on ratkeava. Kysymys päteekö φ T voidaan näet ratkaista seuraavasti: 1. Simuloi edelläesitettyä kielen T luettelijaa, kunnes se tulostaisi φ tai φ. 2. Jos tulostettavana on φ, niin hyväksy. Jos tulostettavana on φ, niin hylkää. (Asiat esitetään tarkemmin kurssilla Matemaattinen logiikka.) 235

Todetaan vielä seuraava kokonaislukujen aritmetiikkaan liittyvä keskeinen ratkeamattomuustulos: Lause 5.5: Ei ole olemassa algoritmia, joka ratkaisee, onko annetulla kokonaislukukertoimisella polynomilla nollakohtia kokonaislukujen joukossa. Ts. kieli { p p(x 1,..., x n ) on kokonaislukukertoiminen polynomi ei ole ratkeava. ja on olemassa a 1,..., a n Z joilla p(a 1,..., a n ) = 0 } Tästä seuraa yleisemmin, että ei ole olemassa menetelmää testata, onko jokin kokonaislukuja koskeva väittämä tosi. Huomaa, että tämä on eri asia kuin testata toteutuvuutta jossain formaalissa järjestelmässä (esim. Peanon aksioomat). 236