Як ви отримуєте обчислення конструкцій з інших точок Ламбда-куба?


21

Кози, як кажуть, є кульмінацією всіх трьох вимірів Ламбда-куба. Це мені зовсім не видно. Я думаю, що я розумію окремі виміри, і поєднання будь-яких двох, здається, призводить до відносно прямого союзу (можливо, мені чогось не вистачає?). Але коли я дивлюся на CoC, замість того, щоб виглядати як поєднання всіх трьох, це виглядає як зовсім інша річ. З якого розміру походять тип "Тип", "Проп" та "малий / великий"? Куди зникли залежні продукти? І чому зосереджено увагу на пропозиціях та доказах замість типів та програм? Чи є щось еквівалентне, що орієнтується на типи та програми?

Редагувати: Якщо це не зрозуміло, я прошу пояснити, як CoC рівнозначний прямому об'єднанню розмірів Куб Ламбда. І чи існує справді об'єднання всіх трьох там, де я можу вчитися (це стосується програм і типів, а не доказів і пропозицій)? Це у відповідь на коментарі до питання, а не на будь-які поточні відповіді.


1
Принаймні, це має бути а soft-question. Тут я не бачу актуального технічного питання. Можливо, ви можете бути трохи більш конкретними щодо того, що ви просите?
Андрій Бауер

3
@AndrejBauer Чи не питання: у чому полягає взаємозв'язок між презентацією куба Barendregt / PTS та оригінальною презентацією Coquand & Huet?
Мартін Бергер

1
@AndrejBauer: Схоже, це питання також ставить питання про різницю в представленні CoC (в будь-якій формі) та наголос на певних особливостях на практиці. Це правда, що орієнтована на PTS версія CoC підкреслює деякі функції як важливі, тоді як практика Coq підкреслює інші. Я погоджуюся, що він повинен мати тег із запитанням.
Жак Карет

1
Я радий, що хтось зможе відповісти на це.
Андрій Бауер

Відповіді:


28

По-перше, щоб повторити одну з точок коді, обчислення індуктивних конструкцій (на основі яких є ядро ​​Кока) дуже сильно відрізняється від обчислення конструкцій. Найкраще думати про те, як почати теорію типу Мартіна-Лефа з всесвітів, а потім додати сортувальну опору в нижній частині ієрархії типів. Це зовсім інший звір, ніж оригінальний CoC, який найкраще розглядати як залежну версію F-омеги. (Наприклад, CiC має задані теоретичні моделі, а CoC - ні.)

При цьому, лямбда-куб (членом якого є Кок) зазвичай представлений як система чистого типу з міркувань економії в кількості правил набору тексту. Трактуючи сорти, типи та терміни як елементи однієї і тієї ж синтаксичної категорії, ви можете записати набагато меншу кількість правил, і ваші докази також стануть трохи менш зайвими.

Однак для розуміння може бути корисним чітке виділення різних категорій. Ми можемо запровадити три синтаксичні категорії, види (розподілені за метавимірюваними k), типи (діапазон за метавимірюваними A) та терміни (діапазон по метаваріабельній e). Тоді всі вісім систем можна розуміти як варіації того, що дозволено на кожному з трьох рівнів.

λ → (просто набране лямбда-числення)

 k ::= ∗
 A ::= p | A → B
 e ::= x | λx:A.e | e e

Це основне набране лямбда-числення. Є єдиний вид , який є типом. Самі типи - це атомні типи pта типи функцій A → B. Терміни - це змінні, абстракції або програми.

λω_ (STLC + оператори вищого типу)

 k ::= ∗ | k → k
 A ::= a | p | A → B | λa:k.A | A B
 e ::= x | λx:A.e | e e

STLC допускає абстрагування лише на рівні термінів. Якщо ми додаємо його на рівні типів, тоді ми додамо новий вид, k → kякий є типом функцій на рівні типу, а також абстрагуванням λa:k.Aта застосуванням A Bна рівні типу. Тому зараз у нас немає поліморфізму, але ми маємо оператори типу.

Якщо пам'ять служить, ця система не має більше обчислювальної потужності, ніж STLC; це просто дає можливість скоротити типи.

λ2 (система F)

 k ::= ∗
 A ::= a | p | A → B  | ∀a:k. A 
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Замість додавання операторів типів ми могли б додати поліморфізм. На рівні типу додаємо, ∀a:k. Aякий є колишнім поліморфним типом, а на рівні терміна додаємо абстракцію над типами Λa:k. eта типовими додатками e [A].

Ця система набагато потужніша за STLC - вона така ж сильна, як арифметика другого порядку.

λω (система F-омега)

 k ::= ∗ | k → k 
 A ::= a | p | A → B  | ∀a:k. A | λa:k.A | A B
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Якщо у нас є оператори типу і поліморфізм, ми отримуємо F-омегу. Ця система є більш-менш теорією типу ядра більшості сучасних функціональних мов (наприклад, ML та Haskell). Він також набагато потужніший, ніж Система F - він еквівалентний за силою арифметиці вищого порядку.

λP (LF)

 k ::= ∗ | Πx:A. k 
 A ::= a | p | Πx:A. B | Λx:A.B | A [e]
 e ::= x | λx:A.e | e e

Замість поліморфізму ми могли б піти у напрямку залежності від просто набраного лямбдального числення. Якщо ви дозволили типу функції дозволити використовувати його аргумент у типі повернення (тобто записувати Πx:A. B(x)замість A → B), то ви отримаєте λP. Щоб зробити це по-справжньому корисним, нам потрібно розширити набір типів операторами типу, які беруть терміни як аргументи Πx:A. k, і тому нам також потрібно додати відповідну абстракцію Λx:A.Bта додаток A [e]на рівні типу.

Ця система іноді називається LF, або Edinburgh Logical Framework.

Він має таку ж обчислювальну силу, як і просто набране лямбда-числення.

λP2 (немає спеціальної назви)

 k ::= ∗ | Πx:A. k 
 A ::= a | p | Πx:A. B | ∀a:k.A | Λx:A.B | A [e]
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Ми також можемо додати поліморфізм до λP, щоб отримати λP2. Ця система не часто використовується, тому не має конкретної назви. (Один документ, який я прочитав, який використовував, - це індукція Германа Гейвера, не виведена в залежності від другого типу теорії залежного типу .)

Ця система має таку ж міцність, що і система F.

λPω_ (немає спеціальної назви)

 k ::= ∗ | Πx:A. k | Πa:k. k'
 A ::= a | p | Πx:A. B | Λx:A.B | A [e] | λa:k.A | A B 
 e ::= x | λx:A.e | e e 

Ми також можемо додати оператори типу до λP, щоб отримати λPω_. Це включає в себе додавання типу Πa:k. k'для операторів типів, а також відповідних абстракцій на рівні типу Λx:A.Bта застосування A [e].

Оскільки знову не спостерігається стрибка обчислювальної сили над STLC, ця система також повинна створити чудову основу для логічної основи, але ніхто цього не зробив.

λPω (обчислення конструкцій)

 k ::= ∗ | Πx:A. k | Πa:k. k'
 A ::= a | p | Πx:A. B | ∀a:k.A | Λx:A.B | A [e] | λa:k.A | A B 
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Нарешті, ми дістаємось до λPω, обчислення конструкцій, взявши λPω_ і додавши поліморфний тип колишнього ∀a:k.Aта термінального абстрагування Λa:k. eта застосувавши e [A]його.

Типи цієї системи набагато виразніше, ніж у F-омезі, але вона має таку ж обчислювальну силу.


3
Звичайно, технічно CoC (без аксіом) має щонайменше стільки теоретично заданих моделей, як і CiC, вони просто не дуже добре моделюють ситуацію, яку ми хочемо, а це CoC з аксіомами для натуральних чисел (скажімо, ). 01
коді

2
Я також дуже вдячний посиланням на консервативність над STLC. Це здається неочевидним. λω_
Коді

3
@cody: Я не знаю посилання - Кевін Уоткінс замальовував мені доказ на дошці! Ідея полягає в тому, що ви берете термін, введений в λω_, вводите всі типи в бета-нормальну ета-довгу форму, а потім вбудовуєте його в STLC, вводячи свіжий атомний тип для кожної окремої нормальної форми в початковій програмі. Тоді очевидно, що послідовності скорочення повинні вирівнюватися один на один.
Ніл Крішнасвамі

1
@ User833970 той факт , що виведене насправді набагато простіше , ніж ті , інші факти ви згадуєте, і не має нічого спільного з кодуванням н в т : вона виходить з того , що є доказ не має значення модель CC , у яких типи мають щонайменше один елемент . Це погана властивість, якщо вам потрібна логіка, в якій є тип з більш ніж одним елементом (скажімо, nat). Довідково: Не настільки проста доказна ірелевантна модель CC , Мікель та Вернер. 01нат
коді

1
Ви кажете, що Fw "набагато потужніший", ніж система F. Чи маєте ви посилання на це? Зокрема, чи існує функція від натуральних чисел, яка може бути загальною у Fw, а не у F?
Торстен Альтенкірх

21

Мені часто хотілося спробувати і узагальнити кожен вимір -куби і те, що вони представляють, тому я спробую зробити це.λ

Але спочатку слід, мабуть, спробувати розв'язати різні питання. Інтерактивна теорема Кока заснована на основоположній теорії типу, яку іноді з любов'ю називають обчисленням індуктивних конструкцій із всесвітами . Ви зауважите, що це швидше, ніж просто "обчислення конструкцій", і насправді там є набагато більше речей, ніж просто Кок. Зокрема, я думаю, що ви заплуталися в тому, які саме функції є належними CoC. Зокрема, розмежування Set / Prop та всесвіти не відображаються в CoC.

Я не дам тут повного огляду систем чистого типу, але важливим правилом (для функціональних PTS, таких як CoC) є наступне

ΓA:sΓ,x:AB:kΓΠx:A.B : k (s,k)R

s,кS(с,к)RS

SRΠх:А.Б

S

{,}
R={(,),(,),(,),(,)}

І тому у нас є 4 правила, які відповідають 4 різним цілям:

  • (,)

  • (,)

  • (,)

  • (,)

Я поясню кожне з них більш докладно.


АБΠх:А.БхБ

натбоолх=уху

лiстлiст:лiстнат,лiстбоол(,)

Πт:. тт
λ(т:)(х:т).хΠт:._(,)тт(,)

АБ: =Πт:. (АБт)т
АБ: =Πт:. (Ат)(Бт)т
: =Πт:. т
: =Πт:. тт
х:А. П(х): =Πт:. (Πу:А. П(у)т)т
(,)

(,)

(,)

Πc:.  c натc нат

0=1

= : натнат
= : Πт:. тт
натнат(,)

ii=1,2,3,i:i+1

(i,i)

ΓА:iΓА:j ij

Завдяки цим додатковим видам і правилам ви отримуєте щось, що є не PTS, а щось близьке. Це (майже) розширене обчислення конструкцій , яке ближче до основи Coq. Великий недолік тут - це індуктивні типи, про які я тут не буду говорити.

Редагувати: Є досить приємна посилання, яка описує різні особливості мов програмування в рамках PTSes, описуючи PTS, який є хорошим кандидатом на проміжне представлення функціональної мови програмування:

Хенк: набрана проміжна мова , С. П. Джонс та Е. Мейєр.


2
Розширені теми у видах та мовах програмування, S2.6 та S2.7 .
Каве

2
BTW "Тип сімей" часто також називають вищими типами.
Мартін Бергер

1
PTS була гарною ідеєю 20 років тому, але з цього часу все пішло.
Торстен Альтенкірх

@ThorstenAltenkirch не потрібно ексклюзионізму, Торстен! Є ще деякі цікаві речі, які слід врахувати із залученням PTSes, наприклад, на думку спадає робота Бернарді над інтерналізованою параметричністю.
коді

@cody Не передбачається ексклюзионізм, але ми не повинні зациклюватися на минулому теорії синтаксичного типу. Робота Бернарді відмінна і її можна зробити краще, використовуючи всесвіти.
Торстен Альтенкірх
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.