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

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

Säännöllisten kielten sulkeumaominaisuudet

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Kertausta 1. kurssikokeeseen

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

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

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

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

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

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

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

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

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

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

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

Automaatit. Muodolliset kielet

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

Yhteydettömän kieliopin jäsennysongelma

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

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

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Formalisoimme nyt edellä kuvatun laskennan.

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

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

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

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

Algoritmin määritelmä [Sipser luku 3.3]

Säännöllisten operaattoreiden täydentäviä muistiinpanoja

Laskennan mallit

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

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

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

Säännöllisen kielen tunnistavat Turingin koneet

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

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

Laskennan mallit

Laskennan mallit

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Rajoittamattomat kieliopit

5.3 Ratkeavia ongelmia

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

Turingin koneen laajennuksia

Laskennan mallit

Tietojenkäsittelyteorian alkeet, osa 2

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

1. Universaaleja laskennan malleja

Laskennan mallit

Rekursiiviset palautukset [HMU 9.3.1]

Laskennan mallit. luennot syksyllä 2018, periodi I Jyrki Kivinen. tietojenkäsittelytieteen aineopintokurssi, pääaineopiskelijoille pakollinen

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

Johdatus matemaattiseen päättelyyn

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

Laskennan mallit

Pinoautomaatit. Pois kontekstittomuudesta

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

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Chomskyn hierarkia ja yhteysherkät kieliopit

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI. 1. Äärelliset automaatit Äärellinen automaatti (DFA = deterministic finite automaton) on

Vaihtoehtoinen tapa määritellä funktioita f : N R on

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

2. Laskettavuusteoriaa

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

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

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

Täydentäviä muistiinpanoja laskennan rajoista

Miten osoitetaan joukot samoiksi?

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

Todistusmenetelmiä Miksi pitää todistaa?

Lisää pysähtymisaiheisia ongelmia

8. Kieliopit ja kielet

(2n 1) = n 2

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

S BAB ABA A aas bba B bbs c

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )

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

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

Ensimmäinen induktioperiaate

Ensimmäinen induktioperiaate

Yhteydettömät kieliopit [Sipser luku 2.1]

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

ICS-C2000 Tietojenkäsittelyteoria

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

Luonnollisen päättelyn luotettavuus

2. Laskettavuusteoriaa

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

Laskennan mallit (syksy 2007) Harjoitus 5, ratkaisuja

2.6 SÄÄNNÖLLISET LAUSEKKEET Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

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

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

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

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

Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta:

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

Transkriptio:

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)). Esimerkkejä: Σ koostuu kaikista aakkoston Σ merkkijonoista ja Σ + kaikista aakkoston Σ ei-tyhjistä merkkijonoista. 1Σ esittää kaikkia ykkösellä alkavia merkkijonoja. (0(0 1) 1) (1(0 1) 0) esittää kaikkia aakkoston { 0, 1 } merkkijonoja, joiden viimeinen merkki on eri kuin ensimmäinen. R = kaikilla R, ja =. Operaatioilla ja on neutraalialkiot ja : kaikilla R pätee R = R = R R = R = R. 89

Säännöllisiä lausekkeita käytetään etsittävän hahmon kuvaamiseen erilaisissa tekstinkäsittelytyökaluissa kuten Unixin grep. Monissa sovelluksissa tiettyjen syötteiden kuten päivämäärän tai henkilötunnuksen oikea muotoilu määritellään säännöllisenä lausekkeena. Myös ohjelmointikielten syntaktiset perusalkiot määritellään usein säännöllisenä lausekkeena. Esim. jossakin ohjelmointikielessä sallitut tunnukset voisivat olla muotoa kokonaislukuvakiot muotoa ja liukulukuvakiot muotoa kirjain(kirjain numero alaviiva), ( + )numero + ( + )(numero.numero + numero +.numero ), missä kirjain tarkoittaa a... z ja numero tarkoittaa 0... 9. Käytännön sovelluksissa säännöllinen lauseke hyvin usein muunnetaan äärelliseksi automaatiksi (kohta nähtävän kaltaisella konstruktiolla). 90

Äärellisten automaattien ja säännöllisten lausekkeiden ekvivalenssi [Sipser s. 66 76] Osoitamme seuraavan keskeisen tuloksen: Lause 1.9: [Sipser Thm. 1.54] Kieli on säännöllinen, jos ja vain jos jokin säännöllinen lauseke esittää sitä. Siis säännöllisillä lausekkeilla voidaan esittää tasan ne kielet, jotka voidaan tunnistaa äärellisillä automaateilla. Todistuksen helpompi suunta on seuraava: Lemma 1.10: [Sipser Lemma 1.55] Säännöllisen lausekkeen kuvaama kieli voidaan tunnistaa äärellisellä automaatilla. Seuraavalla sivulla on esimerkkinä muodostettu säännöllistä lauseketta (ac ) vastaava NFA. Tämä perustuu edellä esitettyihin muunnoksiin, jotka esimerkin jälkeen kokoamme Lemman 1.10 todistukseksi. 91

a a c c ac a c a c ac a c (ac ) 92

Todistus: Ennen yksityiskohtiin menemistä tarkastellaan yleisesti tällaisen todistuksen luonnetta. Säännöllisen lausekeen määritelmä on induktiivinen (eli rekursiivinen). Vertaa induktiiviseen luonnollisen luvun määritelmään: 1. 0 on luonnollinen luku ja 2. jos n on luonnollinen luku, niin n + 1 on luonnollinen luku. Luonnollisten lukujen induktioperiaatteesta seuraa, että jos 1. luvulla 0 on ominaisuus P ja 2. jos luvulla n on ominaisuus P niin luvulla n + 1 on ominaisuus P niin kaikilla luonnollisilla luvuilla on ominaisuus P. Todistamme lemman suorittamalla analogisen induktion säännöllisten lausekkeiden yli. 93

Haluamme siis osoittaa, että kaikilla säännöllisillä lausekkeilla R kieli L(R) on säännöllinen. Teemme tämän osoittamalla, että 1. L( ) ja L() ovat säännöllisiä, 2. L(a) on säännöllinen kaikilla a Σ, 3. jos L(R 1 ) ja L(R 2 ) ovat säännöllisiä, niin L(R 1 R 2 ) ja L(R 1 R 2 ) ovat säännöllisiä ja 4. jos L(R) on säännöllinen, niin L(R ) on säännöllinen. Kohdat (1) ja (2) muodostavat perustapauksen ja niiden todistus on ilmeinen: on helppoa muodostaa äärellinen automaatti tunnistamaan kieli, kieli { } ja kieli { a }, missä a Σ. Kohdat (3) ja (4) muodostavat induktioaskeleen. Koska L(R 1 R 2 ) = L(R 1 ) L(R 2 ) ja L(R 1 R 2 ) = L(R 1 ) L(R 2 ), niin kohta (3) seuraa lauseista 1.6 ja 1.7. Samoin kohta (4) seuraa lauseesta 1.8, koska L(R ) = (L(R)). 94

Säännöllisten kielten luokka on suljettu myös leikkauksen ja komplementin suhteen, joten edellä nähty todistus toimisi edelleen, jos säännöllisten lausekkeiden määritelmää laajennettaisiin leikkaus- ja komplementtioperaatioilla. Näin ei kuitenkaan tehdä paristakin syystä: Säännöllinen lauseke muunnetaan usein NFA:ksi edellä nähdyn kaltaisella konstruktiolla, joka on yksinkertainen ja jolla on useita hyödyllisiä ominaisuuksia. Esim. jokaista säännöllisen lausekkeen itsenäistä osaa kohti on automaatissa erotettavissa vastaava osa-automaatti. Leikkaukselle ja komplementille ei vastaavanlaista konstruktiota ole. (Tätä käsitellään vähän tarkemmin harjoituksissa.) Leikkaus ja komplementti ovat myös turhia operaatioita siinä mielessä, että niiden salliminen ei laajentaisi esitettävissä olevien kielten joukkoa. Jo nykyisillä operaatioilla voidaan esittää kaikki säännölliset kielet, kuten seuraavaksi osoitetaan. 95

Osoitamme nyt, että mille tahansa äärelliselle automaatille M voidaan muodostaa säännöllinen lauseke R, jolle L(R) = L(M). Jos M on automaatti a c q 1 q 2 q 3 d niin selvästi voidaan valita R = (a c) d. Jotta voisimme hyödyntää tätä havaintoa osana monimutkaisemman automaatin analysoimista, otamme käyttöön yleistetyt NFA:t (generalized NFA, GNFA), joissa kaareen voi liittyä yksittäisen symolin tai symolijoukon sijasta kokonainen säännöllinen lauseke. 96

Ajatuksena on, että esim. edellä esitetystä automaatista a c q 1 q 2 q 3 d voidaan eliminoida tila q 2 ja saada ekvivalentti GNFA (a c) d q 1 q 3 Meidän pitää nyt sopia tarkemmin, mitä GNFA tarkalleen on. 97

Lähtökohtana on, että GNFA on kuten NFA, mutta kuhunkin kaareen voi liittyä mielivaltainen säännöllinen lauseke. Siirtyminen kaarta pitkin kuluttaa syötteestä jonkin osamerkkijonon, joka kuuluu kyseisen säännöllisen lausekkeen kuvaamaan kieleen. Yksinkertaisuuden vuoksi sovimme, että GNFA noudattaa seuraavia rajoitteita: 1. Siinä on tasan yksi hyväksyvä tila ja yksi alkutila, ja nämä eivät ole sama tila. 2. Alkutilaan ei tule siirtymiä. 3. Hyväksyvästä tilasta ei lähde siirtymiä. 4. Muuten minkä tahansa kahden tilan välillä on siirtymä, johon liittyy tasan yksi säännöllinen lauseke. 98

Esimerkki 1.11: Alla on eräs GNFA, joka tunnistaa kielen (aca ) (cac ): ac a q st q acc ca c 99

Muodollisesti GNFA on siis viisikko (Q, Σ, δ, q start, q accept ), missä 1. Q on äärellinen tilajoukko, 2. Σ on aakkosto, 3. δ on funktio (Q { q accept }) (Q { q start }) R, missä R on aakkoston Σ säännöllisten lausekkeiden joukko ja 4. q start Q, q accept Q ja q start q accept. Huomaa siirtymäfunktion δ aiemmasta poikkeava määrittely. Kun aiemmin olisi kirjoitettu esim. δ(q 1, a) = q 2, nyt kirjoitetaan sen sijaan δ(q 1, q 2 ) = a. 100

GNFA (Q, Σ, δ, q start, q accept ) hyväksyy merkkijonon w Σ, jos on olemassa esitys w = w 1... w k, missä w i Σ kaikilla 1 i k, ja tilajono (q 0,..., q k ) Q k+1, joilla 1. q 0 = q start, 2. w i L(R i ) kaikilla 1 i k, missä R i = δ(q i 1, q i ) ja 3. q k = q accept. Huom. Jos δ(r, s) =, niin r ja s eivät koskaan voi esiintyä peräkkäin yllä mainitussa tilajonossa, sillä edes ei kuulu kieleen L( ). Jätämme jatkossa GNFA:ta piirrettäessä tällaiset kaaret kuvasta pois. 101

Mistä tahansa DFA:sta voidaan helposti muodostaa saman kielen tunnistava GNFA: 1. Lisää uudet tilat q start ja q accept. 2. Lisää -siirtymät tilasta q start vanhaan alkutilaan ja vanhoista hyväksyvistä tiloista tilaan q accept. 3. Kaikilla alkuperäisillä tiloilla q 1 ja q 2 aseta δ(q 1, q 2 ) = a 1... a n, missä { a 1,..., a n } on niiden merkkien joukko, joilla vanhassa automaatissa on siirtymä tilasta q 1 tilaan q 2. 4. Niillä q 1 ja q 2, joilla δ(q 1, q 2 ) ei vielä tullut määritellyksi, aseta δ(q 1, q 2 ) =. 102

Esimerkki 1.12: Seuraava DFA hyväksyy merkkijonot, joissa on pariton määrä -merkkiä: a a Vastaava GNFA on seuraava: a 1 2 a S A Tilat on nimetty S, A, 1 ja 2 jatkoa ajatellen. 103

Korkean tason algoritmi DFA:ta M vastaavan säännöllisen lausekkeen muodostamiseksi on nyt seuraava: 1. Olkoon automaatin M tilojen lukumäärä k. Muodosta k + 2-tilainen GNFA G k+2, joka tunnistaa saman kielen. 2. Muodosta 2-tilainen GNFA G 2, joka tunnistaa saman kielen kuin G k+2. 3. Päättele kaksitilaisesta GNFA:sta G 2, mikä säännöllinen lauseke esittää sen tunnistamaa kieltä. Totesimme juuri, miten askel 1 toteutetaan. Askel 3 on triviaali: kaksitilaisen GNFA:n q start R q acc tunnistamaa kieltä esittää tietysti säännöllinen lauseke R. Jäljelle jää askeleen 2 toteutus. 104

GNFA:n G k+2 muuntaminen ekvivalentiksi kaksitilaiseksi GNFA:ksi G 2 tapahtuu eliminoimalla tiloja yksi kerrallaan. Tilan eliminoiminen perustuu muunnokseen S x R q pois T y P x (RS T ) P y Huomaa, että tämä pitää tehdä samanaikaisesti kaikilla pareilla (x, y), joiden välillä on yhteys tilan q pois kautta. Erityisesti pitää muistaa tapaus x = y. 105

Saamme seuraavan proseduurin: EliminoiTila(G, q pois ) oletus: G = (Q, Σ, δ, q start, q accept ) on GNFA Q > 2 ja q pois Q { q start, q accept } Q Q { q pois } for all x Q { q accept } ja y Q { q start } do R δ(x, q pois ) S δ(q pois, q pois ) T δ(q pois, y) P δ(x, y) δ (x, y) ((R)(S) (T )) (P ) return G = (Q, Σ, δ, q start, q accept ). Tämä pitää automaatin tunnistaman kielen ennallaan: Lemma 1.13: saman kielen. Jos G = EliminoiTila(G, q pois ), niin G ja G tunnistavat 106

Ennen todistusta katsotaan Esimerkki 1.14: Parittoman määrän -merkkiä hyväksyvästä GNFA:sta eliminoidaan ensin tila 2: a a a a 1 2 1 a S A S A 107

Toistetaan proseduuri vielä kerran ja tehdään kolmitilaisesta GNFA:sta kaksitilainen: a a 1 a S (a a ) a A S A Kaksitilaisesta automaatista nähdään, että automaatin hyväksymää kieltä esittää säännöllinen lauseke (a a ) a. Tämä tosiaan esittää kieltä, jossa on parittoman määrän :tä sisältävät merkkijonot. 108

Todistus lemmalle 1.13: Väitämme siis, että G ja G hyväksyvät tasan samat merkkijonot. Olkoon ensin w merkkijono, jonka G hyväksyy. Määritelmän mukaan on olemassa tilat q 0,..., q k ja merkkijonot w 1,..., w k Σ, missä q 0 = q start, q k = q accept, w = w 1... w k ja w i L(δ(q i 1, q i )) kun i = 1,..., k. Merkitsemme tätä w q 1 w start q 2 w 1 q 3 2 q 3... w k 1 w q k k 1 q accept. w Tarkastellaan ensin tilannetta q i i 1 q i, missä kumpikaan tiloista q i 1 ja q i ei ole q pois. Oletuksen mukaan w i L(δ(q i 1, q i )). Konstruktion mukaan δ (q i 1, q i ) = A δ(q i 1, q i ) jollekin A. Siis pätee myös w i L(δ (q i 1, q i )), eli w q i i 1 q i on kelvollinen siirtymä myös automaatissa G. 109

Tarkastellaan nyt tilannetta, että q i q pois ja q j q pois, mutta q i+1 = q i+2 =... = q j 1 = q pois, joillakin i j 2. Siis Nyt oletuksen mukaan w i+1 w i+2 w i+3 w j 1 w j q i qpois qpois... qpois qj. w i+1 L(δ(q i, q pois )) w k L(δ(q pois, q pois )) kun i + 2 k j 1 w j L(δ(q pois, q i )), joten funktion δ määritelmän mukaan w i+1... w j L(δ(q i, q pois )) L(δ(q pois, q pois )) L(δ(q pois, q j )) L(δ(q i, q pois )) L(δ(q pois, q pois )) L(δ(q pois, q j )) L(δ(q i, q j )) = L(δ (q i, q j )). Siis automaatissa G voidaan laillisesti siirtyä w i+1...w j q i qj. 110

Siis automaatin G siirtymäketjusta w q 1 w start q 2 w 1 q 3 2 q 3... w k 1 w q k k 1 q accept voidaan ensin ohittaa kaikki tilan q pois esiintymät. Syntyvä siirtymäketju on kelvollinen tapa päästä tilasta q start tilaan q accept automaatissa G merkkijonolla w. Siis G hyväksyy merkkijonon w. Pitää vielä osoittaa kääntäen, että jos G hyväksyy merkkijonon w, niin myös G hyväksyy sen. Tämä jätetään harjoitustehtäväksi. 111

Kootaan nyt edelläesitetty yhteen. Lemma 1.15: [Sipser Lemma 1.60] Jos kieli on säännöllinen, se voidaan esittää säännöllisellä lausekkeella. Todistus: Olkoon A säännöllinen kieli. Siis jollakin k on olemassa k-tilainen DFA M, joka tunnistaa kielen A. Muodostetaan säännöllinen lauseke R seuraavasti: 1. Muodosta DFA:sta M GNFA G k+2, jossa on k + 2 tilaa ja joka tunnistaa kielen A. 2. Toista seuraava arvoilla n = k + 1, k, k 1,..., 2: (a) Valitse automaatista G n+1 jokin tila q pois { q start, q accept }. () Aseta G n EliminoiTila(G n+1, q pois ). 3. Palauta R = δ (q start, q accept ), missä δ on kaksitilaisen GNFA:n G 2 siirtymäfunktio. Lemman 1.13 perusteella kaikki automaatit G k+2, G k+1,..., G 2 tunnistavat saman kielen A. Siis L(R) = A. Lause 1.9 seuraa nyt suoraan lemmoista 1.10 ja 1.15. 112