Що робить висновок про тип залежних типів нерозбірливим?


42

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


Не впевнений, але я гадаю, ви можете використовувати висновок, щоб визначити, зупинили чи не обчислення.
jmite

це пов’язано з перетворенням типів в мовах програмування? там відкрита проблема - перетворення типів у мови програмування
невідступність

Ще одна причина полягає в тому, що залежні типи не допускають основних типів. Який тип ? λa.a
jmite

Відповіді:


36

Для досить простої версії теорії залежних типів Гілль Довек подав доказ невідповідності типізації в не порожньому контексті:

Джилс Доук, Невизначеність типізації у -калькуляціїλΠ

Що можна знайти тут .

λ

Ідея полягає в тому, щоб кодувати проблему кореспонденції після публікації як проблему перетворення типу, а потім ретельно побудувати термін, який можна ввести, якщо два конкретні типи є конвертованими. Тут використовуються знання про форми нормальних форм, які завжди існують у цьому обчисленні. Стаття коротка і добре написана, тому я не буду тут детальніше описуватись.

λ

JB Wells, типізація та перевірка типу в системі F еквівалентні та не визначні .

Про це можна ознайомитись тут . Все, що я знаю про це, полягає в тому, що це зводить проблему напівз'єднання (що є модулем уніфікації універсальних кванторів і не можна визначити) для перевірки типу в System F.

Нарешті, досить легко показати, що заселення залежних сімей не можна визначити: просто зашифруйте проблему Посту в індекси конструктора. Ось кілька слайдів Ніколя Насі, які наводять аргумент.

Що стосується того, чи є "обмеження", це багато що залежить від того, що ви намагаєтеся зробити зі своїми залежними типами, і існує багато наближень, які намагаються бути вирішальними, або, принаймні, досить близькими, щоб бути корисними. Ці питання все ще є частиною активних досліджень.

Один з можливих напрямків - це поле "типів уточнення", де мова вираження залежностей типів обмежена, щоб дозволити перевірку, яку можна визначити, наприклад, Рідкі типи . Однак рідко можна зробити висновок про повний тип навіть у цих системах.


Посилання з рідкими типами розірвано
michaelsnowden

@michaelsnowden виправлено!
коді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.