De Bruijn notation
Inom matematisk logik är De Bruijn-notationen en syntax för termer i λ-kalkylen som uppfanns av den holländska matematikern Nicolaas Govert de Bruijn . Det kan ses som en omkastning av den vanliga syntaxen för λ-kalkylen där argumentet i en applikation placeras bredvid dess motsvarande binder i funktionen istället för efter den senares kropp.
Formell definition
Termer ( ) i De Bruijn-notationen är antingen variabler ( ), eller har ett av två vagnprefix . Abstraktionsvagnen , skriven , motsvarar det vanliga λ-bindemedlet i λ-kalkylen , och applikatorvagnen , skrivet , motsvarar argumentet i en tillämpning i λ-kalkylen.
Termer i den traditionella syntaxen kan konverteras till De Bruijn-notationen genom att definiera en induktiv funktion för vilken:
Alla operationer på λ-termer pendlar med avseende på översättningen. Till exempel, den vanliga β-reduktionen,
i De Bruijn-notationen är, förutsägbart,
En egenskap hos denna notation är att abstraktor- och applikatorvagnar av β-redex är parade som parenteser. Betrakta till exempel stadierna i β-reduktionen av termen där redexerna är understrukna:
Således, om man ser applikatorn som en öppen parenter (' (
') och abstraktorn som en parentes (' ]
'), så är mönstret i termen ovan ' (( ](]]
'. De Bruijn kallade en applikator och dess motsvarande abstraktor i denna tolkning partner och vagnar utan partners ungkarlar En sekvens av vagnar, som han kallade ett segment , är välbalanserad om alla dess vagnar är partner.
Fördelar med De Bruijn-notationen
I ett välbalanserat segment kan de samarbetade vagnarna flyttas runt godtyckligt och så länge pariteten inte förstörs förblir innebörden av termen densamma. Till exempel, i exemplet ovan kan applikatorn föras till sin abstraktor , eller abstraktorn till applikatorn. Faktum är att alla kommutativa och permutativa omvandlingar på lambda-villkor kan enkelt beskrivas i termer av paritetsbevarande omordningar av samarbetade vagnar. Man får alltså en generaliserad konverteringsprimitiv för λ-termer i De Bruijn-notationen.
Flera egenskaper hos λ-termer som är svåra att ange och bevisa med den traditionella notationen uttrycks lätt i De Bruijn-notationen. Till exempel, i en typteoretisk miljö, kan man enkelt beräkna den kanoniska klassen av typer för en term i ett typningssammanhang, och återställa typkontrollproblemet till en att verifiera att den kontrollerade typen är en medlem av denna klass. De Bruijn notation har också visat sig vara användbar i calculi för explicit substitution i ren typ system .