Konstruktionsberegning

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 .

Struktur

Bade

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:

  1. beviser , der har typen af ​​visse udsagn ;
  2. påstande , også kaldet små typer ;
  3. prædikater , som er funktioner, der returnerer påstande ;
  4. store typer , der er typer for prædikater ( P  er et eksempel på en så stor type);
  5. T som sådan, som er den type, som de store typer tilhører.

Domme

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å

Inferensregler for konstruktionsregning

1 .

2 .

3 .

4 .

5 .

Definition af logiske operatorer

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:

Definition af datatyper

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] .

Noter

  1. Calculus of Inductive Constructions Arkiveret 10. juni 2020 på Wayback Machine og i Coq Core Standard Libraries: Arkiveret 10. juni 2020 på Wayback Machine og Arkiveret 10. juni 2020 på Wayback Machine .Datatypes Logic
  2. Standardbibliotek | Coq Proof Assistant . Hentet 24. juni 2020. Arkiveret fra originalen 21. juli 2011.