Beeta-normaali muoto - Beta normal form
Vuonna lambdakalkyyli , termi on beta normaalissa muodossa , jos ei ole beeta vähentäminen on mahdollista. Termi on beeta-eta-normaalimuodossa, jos beeta- tai eta-pelkistys ei ole mahdollista. Termi on pään normaalimuodossa, jos pään asennossa ei ole beeta-redexiä .
Beetan vähennys
Lambda-laskennassa beeta-redeksi on termi muodossa:
- .
Redex on asento on termi , jos on seuraava muoto (Huomaa, että sovellus on korkeampi prioriteetti kuin abstraktio, ja että alla oleva kaava tarkoitus olla lambda-abstraktio, ei sovellus):
- , missä ja .
Beeta vähentäminen on sovellettava seuraavia uudelleenkirjoitussääntöön beeta Redex sisältämä termi:
missä tulos on termin korvaaminen muuttujalla termissä .
Pää beeta vähentäminen on beeta vähennystä pään asentoon, joka on, on seuraavassa muodossa:
- , missä ja .
Mikä tahansa muu alennus on sisäinen beeta-alennus.
Normaali muoto on termi, joka ei sisällä beeta Redex, eli joita ei voida edelleen pienentää. Pää normaali muoto on termi, joka ei sisällä beeta Redex pään asennossa, toisin sanoen , että ei voida edelleen pienentää pään vähentäminen. Kun tarkastellaan yksinkertaista lambda-laskentaa (eli ilman vakio- tai funktiosymbolien lisäämistä, joiden on tarkoitus vähentää ylimääräistä delta-sääntöä), pään normaalit muodot ovat seuraavan muodon termit:
- , missä on muuttuja, ja .
Pään normaali muoto ei aina ole normaali muoto, koska käytettyjen argumenttien ei tarvitse olla normaalia. Päinvastoin on kuitenkin totta: mikä tahansa normaali muoto on myös pään normaali muoto. Itse asiassa normaalit muodot ovat täsmälleen pään normaalit muodot, joissa alaosat ovat itse normaalimuotoja. Tämä antaa normaalimuotojen induktiivisen syntaktisen kuvauksen.
Myös käsite heikko pään normaalimuoto : termi heikko pää normaalimuodossa joko termi pään normaalissa muodossa tai lambda abstraktio. Tämä tarkoittaa, että redex voi näkyä lambda-rungon sisällä.
Vähentämisstrategiat
Yleensä tietty termi voi sisältää useita redeksoja, joten useita erilaisia beetavähennyksiä voitaisiin soveltaa. Voimme määritellä strategian, jolla valitaan redex, jota vähennetään.
- Normaalin järjestyksen vähennys on strategia, jossa pään asennon beetavähennystä sovelletaan jatkuvasti, kunnes tällaiset vähennykset eivät ole enää mahdollisia. Siinä vaiheessa tuloksena oleva termi on pään normaalissa muodossa. Sitten jatketaan pään vähennyksen soveltamista alaosiin vasemmalta oikealle. Toisin sanoen normaalin kertaluvun vähennys on strategia, joka vähentää aina ensin vasemman uloimman punaisen.
- Sitä vastoin sovellettavassa järjestysvähennyksessä käytetään ensin sisäisiä vähennyksiä ja sitten pään vähennystä vain, kun sisäisiä vähennyksiä ei enää ole mahdollista.
Normaalirivisen pelkistys on täydellinen siinä mielessä, että jos termillä on pää, normaali muoto, niin normaalirivin reduktio saavuttaa sen. Edellä olevien normaalimuotojen syntaktisen kuvauksen perusteella tämä edellyttää samaa lausetta "täysin" normaalille muodolle (tämä on standardointilause ). Sitä vastoin sovellettava tilausten vähennys ei välttämättä pääty, vaikka termillä olisi normaali muoto. Esimerkiksi soveltavaa tilauksen vähennystä käyttämällä seuraava vähennysjärjestys on mahdollinen:
Normaalijärjestelmän vähennystä käytettäessä sama lähtökohta pienenee nopeasti normaalimuotoon:
Sinotin johtajan kielet ovat yksi menetelmä, jolla beeta-pelkistyksen laskennallinen monimutkaisuus voidaan optimoida.