The calculus of constructions ( CoC ) er en typeteori baseret på en højere ordens polymorf λ-calculus med afhængige typer , udviklet af Thierry Cocan og Gerard Huet i 1986. Den er placeret på det højeste punkt af Barendregt lambda-terningen og er den bredeste af dens konstituerende systemer - . Det kan bruges som grundlag for opbygning af et maskinskrevet programmeringssprog og som et system af konstruktivt grundlag for matematik .
Brugt som grundlag for det interaktive bevissystem Coq og en række lignende værktøjer (herunder Matita ).
Blandt calculus-mulighederne er calculus for induktive konstruktioner [1] (bruger induktive typer ), calculus for co-induktive konstruktioner (med coinduction ), den prædikative calculus for induktive konstruktioner (eliminerer noget af ikke-prædikativiteten ).
Med hensyn til Curry-Howard-korrespondancen etablerer konstruktionskalkylen forholdet mellem afhængige typer og beviser i den sekventielle intuitionistiske prædikatregning .
Et led i konstruktionsregning er konstrueret efter følgende regler:
Med andre ord er syntaksen for et udtryk, når det skrives med BNF ,:
Konstruktionsregningen bruger fem typer objekter:
Konstruktionsregningen giver mulighed for at bevise domme om typer .
kan læses som en implikation:
Hvis variablerne er af typen , så er udtrykket af typen .Gyldige forslag til konstruktionskalkylen kan udledes af et sæt slutningsregler. I det følgende bruger vi symbol til at angive en sekvens af typetildelinger , og K til at angive enten P eller T. Formlen vil blive brugt til at erstatte termen for hver fri variabel i termen .
Inferensregler er skrevet i følgende format:
det betyder:
Hvis det er et gyldigt forslag, så1 .
2 .
3 .
4 .
5 .
Konstruktionsregningen omfatter et meget lille antal grundlæggende operatorer: den eneste logiske operator til dannelse af udsagn . Denne erklæring alene er dog tilstrækkelig til at definere alle andre logiske operatorer:
Konstruktionsberegningen giver dig mulighed for at definere de grundlæggende datatyper, der bruges i datalogi:
booleske værdier Heltal Arbejde Eksklusiv joinforbindelse (variant notation)Bemærk, at booleske og numeriske værdier er defineret på samme måde som kirkens kodning . Der opstår imidlertid yderligere problemer på grund af udsagnenes ekstensionalitet og irrelevansen[ afklare ] beviser [2] .