Некоторые из его вариантов включают исчисление индуктивных конструкций (которое добавляет индуктивные типы ), исчисление (ко)индуктивных конструкций (которое добавляет коиндукцию) и предикативное исчисление индуктивных конструкций (которое устраняет некоторую непредикативность ).
Общие черты
CoC — это типизированное лямбда-исчисление высшего порядка , изначально разработанное Тьерри Кокандом . Оно хорошо известно тем, что находится на вершине лямбда-куба Барендрегта . В CoC можно определять функции от термов к термовам, а также термов к типам, типов к типам и типов к термовам.
CoC был разработан вместе с помощником по доказательству Coq . По мере добавления функций (или устранения возможных обязательств) к теории они стали доступны в Coq.
Варианты CoC используются в других помощниках по проверке доказательств, таких как Matita и Lean .
Термин в исчислении конструкций строится по следующим правилам :
— это термин (также называемый типом );
является термином (также называемым prop , типом всех предложений);
Переменные ( ) — это термины;
Если и являются терминами, то также является ;
Если и являются терминами, а — переменной, то следующие также являются терминами:
,
.
Другими словами, синтаксис термина в форме Бэкуса-Наура выглядит следующим образом:
Исчисление конструкций имеет пять видов объектов:
доказательства , которые являются терминами, типами которых являются предложения ;
предложения , которые также известны как малые типы ;
предикаты , которые являются функциями, возвращающими предложения;
большие типы , которые являются типами предикатов ( является примером большого типа);
сам по себе, который является типом больших типов.
β-эквивалентность
Как и в случае с нетипизированным лямбда-исчислением, исчисление конструкций использует базовое понятие эквивалентности терминов, известное как -эквивалентность. Это отражает значение -абстракции:
-эквивалентность — это отношение конгруэнтности для исчисления конструкций в том смысле, что
Если и , то .
Суждения
Исчисление конструкций позволяет доказывать типизированные суждения :
,
что можно прочитать как подтекст
Если переменные имеют, соответственно, типы , то терм имеет тип .
Действительные суждения для исчисления конструкций выводятся из набора правил вывода . В дальнейшем мы используем для обозначения последовательности назначений типов ; для обозначения терминов; и для обозначения либо , либо . Мы будем писать для обозначения результата подстановки термина вместо свободной переменной в термин .
Правило вывода записывается в виде
,
что означает
если является обоснованным суждением, то таковым является и .
Правила вывода для исчисления конструкций
1 .
2 .
3 .
4 .
5 .
6 .
Определение логических операторов
Исчисление конструкций имеет очень мало основных операторов: единственный логический оператор для формирования предложений — это . Однако этого одного оператора достаточно для определения всех остальных логических операторов:
Определение типов данных
Основные типы данных, используемые в информатике, можно определить в рамках исчисления конструкций:
Булевы значения
Натуралы
Продукт
Несвязное объединение
Обратите внимание, что булевы и натуральные числа определяются так же, как в кодировке Чёрча . Однако из-за пропозициональной экстенсиональности и нерелевантности доказательства возникают дополнительные проблемы. [2]
^ ab Coquand, Thierry; Gallier, Jean H. (июль 1990 г.). «Доказательство сильной нормализации для теории конструкций с использованием интерпретации, подобной интерпретации Крипке». Технические отчеты (Cis) (568): 14.
Также доступно в свободном доступе в Интернете: Coquand, Thierry; Юэ, Жерар (1986). Расчет конструкций (Технический отчет). ИНРИА , Центр Рокенкура. 530. Обратите внимание, что терминология несколько отличается. Например, ( ) записывается как [ x : A ] B .
Бандер, М. В.; Селдин, Джонатан П. (2004). «Варианты базового исчисления конструкций». CiteSeerX 10.1.1.88.9497 .
Фраде, Мария Жуан (2009). "Исчисление индуктивных построений" (PDF) . Архивировано из оригинала (обсуждение) 2014-05-29 . Получено 2013-03-03 .
Huet, Gérard (1988). "Induction Principles Formalized in the Calculus of Constructions" (PDF) . В Fuchi, K.; Nivat, M. (ред.). Programming of Future Generation Computers . North-Holland. стр. 205–216 . ISBN0444704108. Архивировано из оригинала (PDF) 2015-07-01.— Применение Кодекса