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

Матеріал з testwiki
Версія від 07:09, 20 листопада 2024, створена imported>InternetArchiveBot (Виправлено джерел: 1; позначено як недійсні: 0.) #IABot (v2.0.9.5)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Числення конструкцій (Шаблон:Lang-en) — теорія типів на основі поліморфного λ-числення вищого порядку із залежними типами, розроблена Шаблон:Нп і Шаблон:Нп 1986 року. Міститься у вищій точці лямбда-куба Барендрегта, є найширшою зі систем, що входять до нього — λPω. Може застосовуватись як основа для побудови типізованої мови програмування і як система конструктивних основ математики.

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

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

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

Структура

Терми

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

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

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

e::=𝐓𝐏xeeλx:e.ex:e.e

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

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

Судження

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

x1:A1,x2:A2,t:B

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

Якщо змінні x1,x2, мають типи A1,A2,, то терм t має тип B.

Допустимі міркування для числення конструкцій можна отримати з набору правил виведення. Надалі символом Γ позначено послідовність присвоєння типів x1:A1,x2:A2,, і символом K позначено або P, або T. Формула B[x:=N] буде використовуватися для заміни терму N для кожної вільної змінної x у термі B.

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

ΓA:BΓC:D

це означає:

Якщо ΓA:B є валідним судженням, то ΓC:D

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

1 . ΓP:T

2 . ΓA:KΓ,x:Ax:A

3 . Γ,x:AB:KΓ,x:AN:BΓ(λx:A.N):(x:A.B):K

4 . ΓM:(x:A.B)ΓN:AΓMN:B[x:=N]

5 . ΓM:AA=βBΓB:KΓM:B

Визначення логічних операторів

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

ABx:A.B(xB)ABC:P.(ABC)CABC:P.(AC)(BC)C¬AC:P.(AC)x:A.BC:P.(x:A.(BC))C

Визначення типів даних

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

Булівські значення
A:P.AAA
Натуральні числа
A:P.(AA)(AA)
Добуток A×B
AB
Виключне об'єднання (запис із варіантами) A+B
AB

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

Примітки

Шаблон:Reflist Шаблон:Бібліоінформація Шаблон:Типи даних