Числення конструкцій

Числення конструкцій (англ. calculus of constructions, CoC) — теорія типів на основі поліморфного λ-числення вищого порядку із залежними типами, розроблена Тьєррі Коканом[ru] і Жераром Юе[en] 1986 року. Міститься у вищій точці лямбда-куба Барендрегта, є найширшою зі систем, що входять до нього — . Може застосовуватись як основа для побудови типізованої мови програмування і як система конструктивних основ математики.

Є основою для системи інтерактивного доведення Coq та низки подібних інструментів (зокрема, Matita[en]).

Серед варіантів числення — числення індуктивних конструкцій[1] (використовує індуктивні типи), числення коіндуктивних конструкцій (із застосуванням коіндукції), предикативне числення індуктивних конструкцій (усуває деяку частину непредикативності).

З погляду відповідності Каррі — Говарда числення конструкцій встановлює взаємозв'язок між залежними типами та доведеннями у секвенційному інтуїціоністському численні предикатів.

Структура[ред. | ред. код]

Терми[ред. | ред. код]

Терм у численні конструкцій будується за такими правилами:

  • T — це терм (також його позначають як Type);
  • P — це терм (також його позначають як Prop, це — тип, до якого належать усі твердження);
  • змінні (x, y, …) — це терми;
  • якщо A і B — це терми, то вираз (AB) також є термом;
  • якщо A і B — це терми і x — це змінна, то термами є також такі вирази:
    • x:A . B),
    • (∀x:A . B).

Іншими словами, синтаксис терму, якщо записати його за допомогою BNF, такий:

Числення конструкцій використовує п'ять типів об'єктів:

  1. доведення, які мають типом ті чи інші твердження;
  2. твердження, також звані малими типами;
  3. предикати, що є функціями, які повертають твердження;
  4. великі типи, що є типами для предикатів (P — приклад такого великого типу);
  5. T як такий, що є типом, до якого належать великі типи.

Судження[ред. | ред. код]

Числення конструкцій дозволяє доводити судження про типи.

можна прочитати як імплікацію:

Якщо змінні мають типи , то терм має тип .

Допустимі міркування для числення конструкцій можна отримати з набору правил виведення. Надалі символом позначено послідовність присвоєння типів , і символом K позначено або P, або T. Формула буде використовуватися для заміни терму для кожної вільної змінної у термі .

Правила виведення записуються в такому форматі:

це означає:

Якщо є валідним судженням, то

Правила виведення для числення конструкцій[ред. | ред. код]

1 .

2 .

3 .

4 .

5 .

Визначення логічних операторів[ред. | ред. код]

Числення конструкцій включає зовсім невелику кількість основних операторів: єдиний логічний оператор для формування тверджень . Проте одного цього оператора достатньо для визначення всіх інших логічних операторів:

Визначення типів даних[ред. | ред. код]

Числення конструкцій дозволяє визначити базові типи даних, що використовуються в інформатиці:

Булівські значення
Натуральні числа
Добуток
Виключне об'єднання (запис із варіантами)

Зверніть увагу на те, що булівські та числові значення визначаються способом, аналогічним кодуванню Чорча. Однак додаткові проблеми виникають через екстенсіональність тверджень та іррелевантність[уточнити] доведень[2].

Примітки[ред. | ред. код]

  1. Исчисление индуктивных конструкций [Архівовано 2020-06-10 у Wayback Machine.], и в базовых стандартных библиотеках Coq: Datatypes [Архівовано 2020-06-10 у Wayback Machine.] and Logic [Архівовано 2020-06-10 у Wayback Machine.].
  2. Standard Library | The Coq Proof Assistant. Архів оригіналу за 21 липня 2011. Процитовано 24 червня 2020.