Calculul construcțiilor ( CoC ) este o teorie a tipurilor bazată pe un λ-calcul polimorf de ordin superior cu tipuri dependente , dezvoltat de Thierry Cocan și Gerard Huet în 1986. Este situat în cel mai înalt punct al cubului lambda Barendregt , fiind cel mai larg dintre sistemele sale constitutive - . Poate fi folosit ca bază pentru construirea unui limbaj de programare tipizat și ca sistem de baze constructive pentru matematică .
Folosit ca bază pentru sistemul interactiv de dovezi Coq și o serie de instrumente similare (inclusiv Matita ).
Printre opțiunile de calcul se numără calculul construcțiilor inductive [1] (folosește tipuri inductive ), calculul construcțiilor co-inductive (folosind coinducția ), calculul predicativ al construcțiilor inductive (elimină o parte din non-predicativitatea ).
În ceea ce privește corespondența Curry-Howard , calculul de construcție stabilește relația dintre tipurile dependente și dovezi în calculul predicat intuiționist secvențial .
Un termen în calculul construcțiilor este construit conform următoarelor reguli:
Cu alte cuvinte, sintaxa unui termen, atunci când este scris folosind BNF , este:
Calculul de construcție folosește cinci tipuri de obiecte:
Calculul de construcție permite să se dovedească judecăți despre tipuri .
poate fi citit ca o implicație:
Dacă variabilele sunt de tip , atunci termenul este de tip .Propozițiile valide pentru calculul construcției pot fi derivate dintr-un set de reguli de inferență. În cele ce urmează, folosim simbolul pentru a desemna o secvență de atribuiri de tip , iar K pentru a desemna fie P , fie T. Formula va fi folosită pentru a înlocui termenul pentru fiecare variabilă liberă din termen .
Regulile de inferență sunt scrise în următorul format:
inseamna:
Dacă este o propoziție validă, atunci1 .
2 .
3 .
4 .
5 .
Calculul de construcție include un număr foarte mic de operatori de bază: singurul operator logic pentru formarea enunțurilor . Cu toate acestea, această declarație este suficientă pentru a defini toți ceilalți operatori logici:
Calculul de construcție vă permite să definiți tipurile de date de bază utilizate în informatică:
Valori booleene numere întregi Muncă Unire exclusivă (notație variantă)Rețineți că valorile booleene și numerice sunt definite într-un mod similar cu codarea Bisericii . Cu toate acestea, probleme suplimentare apar din extensialitatea enunțurilor și din irelevanță[ clarifica ] dovezi [2] .