El cálculo de construcciones ( CoC ) es una teoría de tipos basada en un cálculo λ polimórfico de orden superior con tipos dependientes , desarrollado por Thierry Cocan y Gerard Huet en 1986. Está situado en el punto más alto del cubo lambda de Barendregt , siendo el más ancho de sus sistemas constituyentes- . Se puede utilizar como base para construir un lenguaje de programación tipado y como un sistema de fundamentos constructivos para las matemáticas .
Se utiliza como base para el sistema de prueba interactivo Coq y varias herramientas similares (incluida Matita ).
Entre las opciones de cálculo se encuentran el cálculo de construcciones inductivas [1] (utiliza tipos inductivos ), el cálculo de construcciones co-inductivas (utilizando coinducción ), el cálculo predicativo de construcciones inductivas (elimina parte de la no predicatividad ).
En términos de la correspondencia de Curry-Howard , el cálculo de construcción establece la relación entre los tipos dependientes y las pruebas en el cálculo de predicados intuicionista secuencial .
Un término en el cálculo de la construcción se construye de acuerdo con las siguientes reglas:
En otras palabras, la sintaxis de un término, cuando se escribe usando BNF , es:
El cálculo de la construcción utiliza cinco tipos de objetos:
El cálculo de construcción permite probar juicios sobre tipos .
se puede leer como una implicación:
Si las variables son de tipo , entonces el término es de tipo .Las proposiciones válidas para el cálculo de la construcción se pueden derivar de un conjunto de reglas de inferencia. En lo que sigue, usamos símbolo para denotar una secuencia de asignaciones de tipos y K para denotar P o T. La fórmula se utilizará para reemplazar el término de cada variable libre en el término .
Las reglas de inferencia se escriben en el siguiente formato:
significa:
Si es una proposición válida, entonces1 .
2 .
3 .
4 .
5 .
El cálculo de la construcción incluye un número muy pequeño de operadores básicos: el único operador lógico para la formación de declaraciones . Sin embargo, esta declaración por sí sola es suficiente para definir todos los demás operadores lógicos:
El cálculo de construcción le permite definir los tipos de datos básicos utilizados en informática:
valores booleanos enteros Trabajar Unión exclusiva (notación variante)Tenga en cuenta que los valores booleanos y numéricos se definen de manera similar a la codificación de la Iglesia . Sin embargo, surgen problemas adicionales de la extensionalidad de las declaraciones y la irrelevancia[ aclarar ] evidencia [2] .