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

Samankaltaiset tiedostot
formalismeja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 15. joulukuuta 2015 TIETOTEKNIIKAN LAITOS

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

TIES542 kevät 2009 Aliohjelmien formalisointia lambda-kieli

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

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

Laskennan teoriasta. Antti-Juhani Kaijanaho. 11. helmikuuta 2016

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

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

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

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

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

Muita universaaleja laskennan malleja

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

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

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

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

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

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

Lisää pysähtymisaiheisia ongelmia

Rajoittamattomat kieliopit

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

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

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

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

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

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Luku 2. Ohjelmointi laskentana. 2.1 Laskento

1. Primitiivirekursiiviset funktiot muodostetaan kolmesta perusfunktiosta käyttäen. succ(n) = n + 1

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

Pinoautomaatit. Pois kontekstittomuudesta

Täydentäviä muistiinpanoja laskennan rajoista

Rekursiiviset tyypit

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

TIES542 kevät 2009 Rekursiiviset tyypit

Turingin koneet. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Algoritmin määritelmä [Sipser luku 3.3]

Rekursiiviset palautukset [HMU 9.3.1]

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Rekursiivisten ja lambda-määriteltävien funktioiden yhtenevyys

1. Universaaleja laskennan malleja

Säännöllisen kielen tunnistavat Turingin koneet

Luku 7. Aliohjelmat. 7.1 Kutsusekvenssit. Aliohjelma (subroutine) on useimpien kielten tärkein kontrollivuon ohjausja abstrahointikeino.

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

TIEA341 Funktio-ohjelmointi 1, kevät 2008

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

Entscheidungsproblem

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

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

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

14.1 Rekursio tyypitetyssä lambda-kielessä

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

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

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

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

Ydin-Haskell Tiivismoniste

Yksinkertaiset tyypit

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

5.3 Ratkeavia ongelmia

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

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

Tietojenkäsittelyteorian alkeet, osa 2

Geneeriset tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Entscheidungsproblem

Aloitus. TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 14. maaliskuuta 2011 TIETOTEKNIIKAN LAITOS. Aloitus.

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

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

2.4 Normaalimuoto, pohja ja laskentajärjestys 2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13

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

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

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

Lisää laskentoa. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Demo 7 ( ) Antti-Juhani Kaijanaho. 9. joulukuuta 2005

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

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

Attribuuttikieliopit

1 Lineaariavaruus eli Vektoriavaruus

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013

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

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Laskettavuus ja Churchin teesi. Mika Haataja

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

Staattinen tyyppijärjestelmä

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

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

1 Määrittelyjä ja aputuloksia

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Lineaarinen toisen kertaluvun yhtälö

2. Laskettavuusteoriaa

Transkriptio:

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

Sisällys ja

ja on yksi vanhimmista tavoista yrittää mallittaa mekaanista laskentaa. Kurt Gödel käytti sen pääpointteja kuuluisan epätäydellisyyslauseensa todistuksessa. Edeltää olennaisilta osin Turingin konetta ja muita kurssilla käsiteltyjä malleja. Church muotoili oman teesinsä myös rekursioteorian kielellä, mutta juuri kukaan muu ei siihen uskonut ennen Turingin koneita. Päälähde Soaren Computability and Recursion 1 ; lisäksi Stanford Encyclopedia of Philosophyn artikkeli Recursive Functions 2. 1 http://www.jstor.org/stable/420992 2 http://plato.stanford.edu/archives/fall2012/ entries/recursive-functions/

Primitiivirekursio, osa 1 Määritelmä Perusfunktioita ovat kaikki vakiofunktiot c n k : Nn N, c n k (x 1..., x n ) = k seuraajafunktio s : N N, s(x) = x + 1 kaikki projektiofunktiot p n i : N n N, p n i (x 1..., x i,..., x n ) = x i ja Määritelmä Olkoot g 1,..., g m : N n N ja h : N m N osittaisfunktioita. Niiden yhdiste h (g 1,..., g m ) : N n N, määritellään seuraavasti: 3 (h (g 1,..., g m ))(x 1,..., x n ) = h(g 1 (x 1,..., x n ),..., g m (x 1,..., x n )) 3 Tässä a = b on tosi silloin, kun sekä a että b ovat määriteltyjä ja samanarvoisia, sekä silloin, kun sekä a että b ovat määrittelemättömiä.

Primitiivirekursio, osa 2 ja Määritelmä Olkoot g : N n+1 N ja h : N n 1 N osittaisfunktioita. Niiden primitiivirekursio ϱ(h, g) : N n N määritellään paloittain rekursiivisesti seuraavasti: ϱ(h, g)(0, y 2,..., y n ) = h(y 2,..., y n ) ϱ(h, g)(x + 1, y 2,..., y n ) = g(x, f (x, y 2,..., y n ), y 2,..., y n ) Määritelmä Osittaisfunktio on primitiivirekursiivinen, jos se voidaan muodostaa perusfunktioista yhdistettä ja primitiivirekursiota tarpeellisen monta kertaa soveltaen.

ja Lause Primitiivirekursiiviset osittaisfunktiot ovat täydellisiä funktioita. Lause Yhteenlasku on primitiivirekursiivinen. Lause For-kieliset ohjelmat laskevat täsmälleen kaikki primitiivirekursiiviset funktiot.

µ-rekursio ja Määritelmä Olkoon f : N n+1 N osittaisfunktio. Sen minimisaatio µf : N n N määritellään seuraavasti: (µf )(x 1,..., x n ) = min{ k N f (k, x 1,..., x n ) = 0 } Näin saatava kieli on µ-rekursion laskennon kieli. Määritelmä Osittaisfunktio f : N N on µ-rekursiivinen, jos se voidaan rakentaa perusfunktioista yhdistettä, primitiivirekursiota ja minimisaatiota tarpeellisen monta kertaa soveltaen.

Kleenen normaalimuotolause ja Lause (Kleene) Jokaiselle µ-rekursiiviselle osittaisfunktiolle f : N n N on primitiivirekursiiviset funktiot g : N n+1 N ja h : N N, joille pätee f = h µg Todistus Sivuutetaan.

Yhteys rekursiivisiin kieliin ja Määritelmä Olkoon merkistö Σ = {0,..., n 1}. Tällöin voidaan esittää mielivaltainen merkkijono c 0... c m Σ yksikäsitteisesti ei-negatiivisena kokonaislukuna 4 [c 0... c m ] = m i=0 c i n i. Kielen A Σ (Gödel-numeroitu) karakteristinen funktio on kuvaus f : N {0, 1}, jolle A = { w Σ f ([w]) = 1 }. 4 Tämä on merkkijonojen eräs Gödel-numerointi.

Määritelmä jatkuu Kieli A Σ on primitiivirekursiivinen, jos sen karakteristinen funktio on primitiivirekursiivinen. Kieli A Σ on µ-rekursiivinen, jos sen karakteristinen funktio (joka ei ole osittaisfunktio) on µ-rekursiivinen. Kieli A Σ + on µ-rekursiivisesti lueteltava jos ja vain jos se on tyhjä tai on olemassa µ-rekursiivinen funktio f : N N, jolle A = { w Σ k N: f (n) = [w] } pätee. ja Lause 1. Kieli on µ-rekursiivinen jos ja vain jos se on rekursiivinen. 2. Kieli on µ-rekursiivisesti lueteltava jos ja vain jos se on rekursiivisesti lueteltava.

ja Alun perin Alonzo Churchin malli mekaaniselle laskennalle, nykyisin käyttössä ohjelmointikielten teoriassa. Kieli laskentasääntöineen, joka kuvaa funktioiden rakentamista ja kutsumista eikä mitään muuta. λx E tarkoittaa lauseketta E tulkittuna x:n funktioksi. λx x on identiteettifunktio λx c on vakiofunktio, jonka arvo on aina c fx tarkoittaa funktion f kutsua argumentilla x (λx x) c saa arvokseen c Puhtaassa lambda-laskennossa ei ole mitään muuta, käytännössä yleensä laajennetaan esim. aritmetiikalla

Lambdakieli ja Määritelmä Lambdakieli määritellään seuraavalla moniselitteisellä kontekstittomalla kieliopilla: T x T λx T T T T T (U) abstraktio applikaatio Välikemerkin T merkkijonot ovat termejä määritellään T = { w T w}. Päätemerkkejä ovat x (joka edustaa muuttujia) sekä λ, ( ja ). Operaattorit on lueteltu yllä laskevassa presedenssijärjestyksessä. Applikaatio assosioi vasemmalle, abstraktio oikealle.

Vapaat ja sidotut muuttujat ja Abstraktio λx t sitoo (engl. binds) muuttujan x. Muuttujaa, joka on jonkin abstraktion sitoma, sanotaan sidotuksi muuttujaksi (engl. bound variable). Muuttuja esiintyy vapaana (engl. occurs free) lambdatermissä, jos ainakin sen yksi esiintymä ei ole sitä sitovan abstraktion sisällä. Vapaana esiintyvää muuttujaa sanotaan myös vapaaksi muuttujaksi (engl. free variable) 5. Termin t vapaiden muuttujien joukkoa merkitään FV(t). 5 I am not a number, I am a free variable!

Korvaus ja Määritellään korvausoperaattori t[x := u], missä t, u T ja x X, siten, että tuloksena on t muutettuna niin, että jokainen x:n vapaa esiintymä korvataan u:lla. Täsmällinen määritelmä: x[x := u] = u x[y := u] = x (t v)[x := u] = t[x := u] v[x := u] (λx t)[x := u] = λx t (λx t)[y := u] = λx t[y := u] x FV(u) missä y = x.

α- ja β-ekvivalenssit ja t ja u ovat α-ekvivalentit, jos ne eroavat vain sidottujen muuttujien nimissä. Jatkossa samastetaan α-ekvivalentit termit toisiinsa. Termi, joka on muotoa (λx t) u on β-redeksi. Määritellään β-sievennys operaatioksi, jossa termiin sisältyvä β-redeksi (λx t) u muutetaan muotoon t[x := u]. Kaksi termiä ovat β-ekvivalentit, jos kummastakin voidaan päästä (mahdollisesti tyhjällä) jonolla β-sievennyksiä samaan (α-ekvivalenttiin) termiin. Merkitään β-ekvivalenssia = β.

Church Rosser ja Määritelmä Lambdatermi on normaalimuodossa, jos se ei sisällä yhtään β-redeksiä. Lause (Church Rosser) Jos t = β u ja t = β u pätevät, niin on olemassa termi v jolle pätee u = β v ja u = β v. u β t β u β v β

Esimerkkejä ja 0 λf λxx s λnλf λx(f (nx)) p n i λx 1 λx n x i Y = λf (λx(f (xx)))(λx(f (xx)))

Suhde Turingin koneisiin ja Lause (Turing) 1. On olemassa normaalimuotoiset lambdatermit t y ja t n, joille pätee: Jokaiselle standardimalliselle Turingin koneelle M ja sen syötteelle w on olemassa lambdakielinen termi t M,w, jolle pätee t M,w = β t y jos ja vain jos M hyväksyy w:n ja t M,w = β t n jos ja vain jos M hylkää w:n. 2. On olemassa Turingin kone, joka saatuaan syötteenä lambdatermin t pysähtyy niin, että nauhalla on normaalimuotoinen lambdatermi u, jos ja vain jos t = β u pätee. Todistus Sivuutetaan.

Kirjallisuutta ja Stephen Cole Kleene: Introduction to Metamathematics. Groningen: Wolthers Noordhoff & North-Holland, 1971. H. P. Barendregt: The Lambda Calculus: Its Syntax and Semantics. Revised edition. Amsterdam: Elsevier, 1984.