Beta normal form
I lambdakalkylen är en term i betanormalform om ingen beta-reduktion är möjlig. En term är i beta-eta-normalform om varken en beta-reduktion eller en eta-reduktion är möjlig. En term är i normal form om det inte finns någon beta-redex i huvudposition .
Beta-reduktion
I lambdakalkylen är en beta redex en term av formen:
- .
En redex är i huvudposition i en term , om har följande form (observera att applikation har högre prioritet än abstraktion, och att formeln nedan är avsedd att vara en lambda-abstraktion, inte en applikation):
- , där och .
En beta-reduktion är en tillämpning av följande omskrivningsregel på en beta-redex som ingår i en term:
där är resultatet av att termen med variabeln i termen .
En betaminskning av huvudet är en betaminskning som tillämpas i huvudposition, det vill säga av följande form:
- \ and .
Varje annan minskning är en intern beta-reduktion.
En normalform är en term som inte innehåller något beta redex, dvs som inte kan reduceras ytterligare. En huvudnormalform är en term som inte innehåller ett beta-redex i huvudläge, dvs som inte kan reduceras ytterligare genom en huvudreduktion. När man överväger den enkla lambdakalkylen (dvs utan tillägg av konstant- eller funktionssymboler, avsedda att reduceras med ytterligare deltaregel), är huvudnormala former termerna för följande form:
- där är en variabel, och .
En huvudnormalform är inte alltid en normalform, eftersom de tillämpade argumenten inte behöver vara normala. Men det omvända är sant: vilken normal form som helst är också en huvudnormalform. I själva verket är normalformerna exakt huvudnormalformerna där undertermerna i sig är normala former. Detta ger en induktiv syntaktisk beskrivning av normala former.
Det finns också begreppet svagt huvud normal form : en term i svag huvud normal form är antingen en term i huvud normal form eller en lambda abstraktion. Detta betyder att ett redex kan dyka upp inuti en lambdakropp.
Reduktionsstrategier
I allmänhet kan en given term innehålla flera redoxer, därför kan flera olika beta-reduktioner tillämpas. Vi kan specificera en strategi för att välja vilken redex som ska minskas.
- Normalordningsreduktion är strategin där man kontinuerligt tillämpar regeln för beta-reduktion i huvudposition tills inga fler sådana minskningar är möjliga. Vid den tidpunkten är den resulterande termen i normal form. Man fortsätter sedan att tillämpa huvudreduktion i undertermerna från vänster till höger. Med andra ord är normalordningsreduktion den strategi som alltid reducerar den yttersta vänstra redexen först.
- Däremot, i applicerande ordningsreduktion tillämpar man de interna minskningarna först, och tillämpar sedan endast huvudreduktionen när inga fler interna minskningar är möjliga.
Normalordningsreduktion är komplett, i den meningen att om en term har en huvudnormalform, så kommer normalordningsreduktion så småningom att nå den. Genom den syntaktiska beskrivningen av normalformer ovan innebär detta samma uttalande för en "helt" normalform (detta är standardiseringssatsen). Tillämplig orderreduktion får däremot inte upphöra, även när termen har en normal form. Om du till exempel använder applicerande orderreduktion är följande sekvens av reduktioner möjlig:
Men med normal ordningsreduktion reduceras samma utgångspunkt snabbt till normal form:
Sinots regissörssträngar är en metod med vilken beta-reduktionens beräkningskomplexitet kan optimeras.