Введение

Теория типов, созданная Тьерри Коканд. В математической логике и информатике, исчисление конструкций (CoC) — это теория типов, разработанная Тьерри Кокандом. Оно может использоваться как в качестве типизированного языка программирования, так и в качестве конструктивного основания для математики. По этой второй причине CoC и его варианты легли в основу Coq и других систем доказательства теорем. Некоторые из его вариантов включают исчисление индуктивных конструкций (которое добавляет индуктивные типы), исчисление (ко)индуктивных конструкций (которое добавляет коиндукцию) и предикативное исчисление индуктивных конструкций (которое устраняет некоторую импредикативность).

Общие черты

CoC — это ламбда-исчисление высшего порядка, первоначально разработанное Тьерри Коквандом. Оно хорошо известно тем, что занимает верхнюю позицию в кубе лямбда Барендрегта. В CoC можно определять функции от термов к термам, от термов к типам, от типов к типам и от типов к термам. CoC сильно нормализуется и, следовательно, является непротиворечивым.

Использование

CoC разрабатывался параллельно с системой доказательств Coq. По мере добавления новых возможностей (или устранения потенциальных недостатков) в теорию, они становились доступными в Coq. Варианты CoC используются в других системах доказательств, таких как Matita и Lean.

Основы исчисления конструкций

Калькуль конструкций можно рассматривать как расширение изоморфизма Керри — Ховарда. Изоморфизм Керри — Ховарда сопоставляет терму в просто типизированном лямбда-исчислении каждое доказательство естественной дедукции в интуиционистской пропозициональной логике. Калькуль конструкций расширяет этот изоморфизм на доказательства в полном интуиционистском предикатном исчислении, которое включает доказательства квантифицированных утверждений (которые мы также будем называть "высказываниями").

Правила вывода для исчисления конструкций

1 . - Да. - Да.
2 . - Да. - Да.
3 . - Да. - Да.
4 . - Да. - Да.
5 . - Да. - Да.
6 . - Да. - Да.

Определение логических операторов

В исчислении конструкций очень мало базовых операторов: единственный логический оператор для формирования высказываний — это Однако, этого одного оператора достаточно для определения всех остальных логических операторов: