У цьому контексті подвійність стосується взяття найменшої фіксованої точки в одному випадку і найбільшої фіксованої точки в іншому. Ми повинні спробувати зрозуміти , в якому сенсі і 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, ( у- 1, у) ) .
LГ
На практиці найменше рішень - це жадані типи даних, а найбільше - ледачі типи даних. Наприклад, якщо то в першому випадку ми отримуємо кінцеві списки A 's, а у другому скінченні та нескінченні списки A ' s.Ж( X) = 1 + A × XАА