W tym kontekście dualność odnosi się do zajęcia najmniej stałego punktu w jednym przypadku i największego stałego punktu w drugim. Powinniśmy starać się zrozumieć, w jakim sensie i G = ∃ X . ( X → F ( X ) ) x X są "najmniej" i "największe" roztwory rekurencyjnych równania F ( x ) ≅ X .L = ∀ X. ( F.( X) → X) → XG = ∃ X. ( X→ F.( X) ) × Xfa( X) ≅X
Po pierwsze, i G są rzeczywiście stałymi punktami (przy pewnych założeniach technicznych, które ograniczają naturę F ), ponieważ mapy porównawcze v : F ( L ) → L i w : G → F ( G ) podane przez
vL.solfav : F( L ) → Lw : G → F.( G )
i
W ( X , ( F , x ) ) = K ( λ Y : X
vxXsol= g( F.( λ h : L.hXsol)x )
to izomorfizmy. Zauważ, że użyliśmy faktu, że
F jest funktorem, tj. Jest monotoniczny, kiedy zastosowaliśmy go do funkcji.
w ( X, ( f, x ) ) = F.( λ y: X.( X, ( f, y)))(fx)
F
Załóżmy, że jest rozwiązanie kwestii F ( Y ) ≅ Y z pośredniczącym izomorfizmie U : F ( Y ) → Y . Mamy zatem mapy kanoniczne α : L → Y i β : Y → G zdefiniowane przez
αYF(Y)≅Yu:F(Y)→Y
α:L→Y and β:Y→G
i
βαf=fYu
Dlatego
L jest
najmniejsze,ponieważ możemy zmapować z niego do dowolnego innego rozwiązania, a
G jest
największe,ponieważ możemy zmapować z dowolnego innego rozwiązania. Możemy to wszystko uściślić, mówiąc o początkowych algebrach i końcowych węgielach, ale chcę, aby moja odpowiedź była krótka i słodka, a cody i tak wyjaśnił algebry.
βy=(Y,(u−1,y)).
LG
W praktyce najmniejszymi rozwiązaniami są chętne typy danych, a największymi rozwiązaniami są leniwe typy danych. Na przykład, jeśli czym w pierwszym przypadku mamy skończonych listy „S i w drugim skończony i nieskończony listy ” S.F(X)=1+A×XAA