Як визначається подвійність типів?


12

У рекурсивних видах Вадлера безкоштовно! [1], він показав два типу, ∀X.(F(X)→X)→X і ∃X.(X→F(X))×X , і стверджується, що вони подвійні . Зокрема, він зазначив, що тип ∃X.X→(X→F(X)) - нідуал першої. Здається, дуальність, про яку йдеться, відрізняється від логіки подвійності Де Моргана. Цікаво, як визначається подвійність типів, зокрема для трьох згаданих типів, чому другий є подвійним першим, а третій - ні. Дякую.

[1] http://homepages.inf.ed.ac.uk/wadler/papers/free-rectypes/free-rectypes.txt


Я не буду тут багато допомагати, але це звучить категорією теоретично.
— Ентоні

Відповіді:


8

У цьому контексті подвійність стосується взяття найменшої фіксованої точки в одному випадку і найбільшої фіксованої точки в іншому. Ми повинні спробувати зрозуміти , в якому сенсі і G = ∃ х . ( Х → Р ( Х ) ) × Х є "найменш" і "найбільшим" рішенням рекурсивного рівняння F ( X ) ≅ Х .L=∀X.(F(X)→X)→XG=∃X.(X→F(X))×XF(X)≅X

Перш за все, і G - це дійсно нерухомі точки (за певних технічних припущень, які обмежують характер F ), оскільки порівняльні карти v : F ( L ) → L і w : G → F ( G ), задані vLGFv:F(L)→Lw:G→F(G) і w ( X , ( f , x ) ) = F ( λ y : X

vxXg=g(F(λh:L.hXg)x)
- ізоморфізми. Зауважте, що ми використовували той факт, що F - функтор, тобто це одноманітно, коли ми застосовували його до функцій.
w(X,(f,x))=F(λy:X.(X,(f,y)))(fx)
F

Нехай будь-яке рішення F ( Y ) ≅ Y з посередницькою ізоморфізму у : F ( Y ) → Y . Тоді маємо канонічні карти α : L → Y  і  β : Y → G, визначені αYF(Y)≅Yu:F(Y)→Y

α:L→Y and β:Y→G
і β
αf=fYu
Тому L - ценайменше,тому що ми можемо відобразити його з будь-яким іншим рішенням, а G єнайбільшим,оскільки ми можемо відобразити з будь-якого іншого рішення до нього. Ми могли б зробити все це більш точним, поговоривши про початкові алгебри та кінцеві вугілля, але я хочу, щоб моя відповідь була короткою і милою, і Коді так чи інакше пояснив алгебри.
βy=(Y,(u−1,y)).
LG

На практиці найменше рішень - це жадані типи даних, а найбільше - ледачі типи даних. Наприклад, якщо то в першому випадку ми отримуємо кінцеві списки A 's, а у другому скінченні та нескінченні списки A ' s.F(X)=1+A×XAA


У моїй відповіді відсутній доказ того, що і G є фіксованими точками (за деякими припущеннями про F , які можуть залишатися незмінними). Як записати порівняльні карти F ( L ) → L і G → F ( G ) ? LGFF(L)→LG→F(G)
— Андрій Бауер

Гаразд, знайшов карти і w з Coq. vw
— Андрій Бауер

Схоже, є ще один кандидат на , а саме w ′ ( X , ( f , x ) ) = F ( λ y : Xw . Може хтось пояснить, що відбувається? w′(X,(f,x))=F(λy:X.(X,(f,x)))(fx)
— Андрій Бауер

1
Я припускаю, що ви довели, що w'це ізоморфізм, але чи дає він дійсну вуглегебру? (Я здогадуюсь, що це повинно бути, але я можу помилятися ...) Схоже, що квадрат може міняти.
— CA McCann

У своїй примітці: homepages.inf.ed.ac.uk/wadler/papers/free-rectypes/… , Вадлер дає першу версію. Однак він пише це трохи інакше: w (X, (f, x)) = F (розгорнути X k) (fx). Це робить структуру вуглегебри більш чіткою і майже одразу дає комутацію відповідних морфізмів основної струми. Як каже Камканн, я думаю, що ваша інша версія не робить ці квадрати зрушеннями.
— коді

7

Відповідь можна зрозуміти категорично через лінзу F-алгебр . Категоричне уявлення рекурсивного типу в категорії C приблизно можна вказати з допомогою функтора F : C → C . Потім працює в категорії F -алгебр сICF:C→CF

  • як об'єкти: об'єкти з C разом з морфізма & alpha ; : F ( A ) → AAC
    α:F(A)→A
  • як стрілки: квадрати

    М-морфізм F-алгебри

Тепер, щоб був рекурсивним типом, представленим F , я повинен бути початковим у цій категорії: нам потрібноIFI

  1. Морфізм in:F(I)→I
  2. Для кожної -алгебри ( A , α ) морфізм f o l d : I → A, що робить відповідний квадратний комут.F(A,α)fold:I→A

Тепер визначимо . Це досить ясно , як побудувати е ущільнювального л д : просто е ущільнювального л д = λ я : я . i A α : I → A Building i n трохи складніше, пояснює це Уодлер, тому я не намагатимусь цього робити. Зауважте, що це вимагає факту, що F є aI=∀X.(F(X)→X)→Xfold

fold=λi:I.i A α:I→A
inF функтором, що може розглядатися як вимога позитивності.

Зараз в теорії категорій ми часто хочемо розглянути ситуацію, в якій всі стрілки перевернуті. У цьому випадку, з огляду на , ми можемо розглянути категорію F -когельгери зFF

  • Як об'єкти: об'єкти of C разом із морфізмом ω : Z → F ( Z )ZC
    ω:Z→F(Z)
  • Як стрілки, квадрати, як у випадку алгебри (але з оберненими α і β ).Fαβ

Тепер ми хочемо вивчити термінальний об’єкт цієї категорії. Тепер вимоги змінено:T

  1. Морфізм out:T→F(T)
  2. Для кожного -коалгебри Z , морфізм з про е про л д : Z → T .FZcofold:Z→T

Як ми це робимо? Ну , як наказує Wadler, ми приймаємо . Аналогічним чином , ніж раніше, ми маємо гр ущільнювачів е про л д = Л г : Z . ( Z , ω , г ) : Z → T Ця конструкція не працювала б , якби ми замість того, щоб приймати T = ∃ X . X → ( XT=∃X.(X→F(X))×X

cofold=λz:Z.(Z,ω,z):Z→T
.T=∃X.X→(X→F(X))

6

На мій досвід, хороший та оперативний спосіб зрозуміти подвійність типів для -калькулів - це проходження π -калькуляції.λπ

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

πα=(Bool,Int)↑ααxx¯⟨false,7⟩α¯(v,w)vwα¯(bool,int)↓α¯xc(v,w).0

β=(int,(int)↑)↓(v,w)vwβ¯=(int,(int)↓)↑αα¯PαxQα¯xPQββ¯

∀X.(X,(X)↑)↓(v,w)vXwXx

x(vw).w¯v
∀X.(X,(X)↑)↓

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

∀X.(X,(X)↑)↓∃X.(X,(X)↓)↑

Теорія цього була детально опрацьована в [1, 2, 3] та деяких інших, важче доступних до роботи, і дуже точно пов'язана з поляризованою лінійною логікою та її поняттям подвійності в 4 .

λλπλπλ

π

π

π

4 К. Хонда та ін., Точне відповідність між набраним пі-колом та поляризованими захисними сітками .

5 Р. Мілнер, Функції як процеси .


1
re: Ваша думка про кількість жителів типу ∀X. (X, (X) ↑) ↓. Чи є аналог "вільних теорем" тоді для пі-числення? Якщо так, то де це обговорюється?
— Домінік Малліган

1
Привіт @DominicMulligan, так, є "вільні теореми", і ми це трохи дослідили в [1, 2]. Я думаю, що в цьому напрямку можна було б сказати набагато більше.
— Мартін Бергер

1
@MartinBerger: Чи можете ви використовувати параметричність, щоб зрозуміти, що таке «правильне» поняття еквівалентності процесу для набраного пі-числення? Наприклад, у системі F параметричне логічне відношення відповідає контекстній еквівалентності. За аналогією, я б очікував, що будь-яке поняття еквівалентності процесу відповідає параметричному логічному відношенню для пі-числення буде особливо цікавим.
— Ніл Крішнасвамі

π

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