Calculul constructiilor

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 .

Structura

Băi

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:

  1. dovezi care au tipul anumitor afirmatii ;
  2. aserţiuni , numite şi tipuri mici ;
  3. predicate , care sunt funcții care returnează aserțiuni ;
  4. tipuri mari care sunt tipuri pentru predicate ( P  este un exemplu de tip atât de mare);
  5. T ca atare, care este tipul căruia îi aparțin tipurile mari.

Hotărârile

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ă, atunci

Reguli de inferență pentru calculul construcției

1 .

2 .

3 .

4 .

5 .

Definiția operatorilor logici

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:

Definirea tipurilor de date

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

Note

  1. Calculus of Inductive Constructions Arhivat la 10 iunie 2020 la Wayback Machine și în Coq Core Standard Libraries: Arhivat la 10 iunie 2020 la Wayback Machine și arhivat la 10 iunie 2020 la Wayback Machine .Datatypes Logic
  2. Biblioteca standard | Asistentul Coq Proof . Preluat la 24 iunie 2020. Arhivat din original la 21 iulie 2011.