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


12

У рекурсивних видах Вадлера безкоштовно! [1], він показав два типу, X.(F(X)X)X і X.(XF(X))×X , і стверджується, що вони подвійні . Зокрема, він зазначив, що тип X.X(XF(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.(XF(X))×XF(X)X

Перш за все, і G - це дійсно нерухомі точки (за певних технічних припущень, які обмежують характер F ), оскільки порівняльні карти v : F ( L ) L і w : G F ( G ), задані vLGFv:F(L)Lw:GF(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

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

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


У моїй відповіді відсутній доказ того, що і G є фіксованими точками (за деякими припущеннями про F , які можуть залишатися незмінними). Як записати порівняльні карти F ( L ) L і G F ( G ) ? LGFF(L)LGF(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 : CC . Потім працює в категорії F -алгебр сICF:CCF

  • як об'єкти: об'єкти з 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:IA

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

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

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

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

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

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

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

cofold=λz:Z.(Z,ω,z):ZT
.T=X.X(XF(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.