W Wadler's Recursive Types za darmo! [1], zademonstrował dwa typy, i i twierdził, że są podwójne . W szczególności wskazał, że typ nie jest dualistą poprzedniej. Wydaje się, że dualność, o której tu mowa, różni się logicznie od dualności De Morgana. Zastanawiam się, w jaki sposób definiuje się dualność typów, szczególnie dla wymienionych trzech typów, dlaczego drugi jest podwójny z pierwszym, a trzeci nie. Dzięki.∃ X . ( X → F ( X ) ) × X
[1] http://homepages.inf.ed.ac.uk/wadler/papers/free-rectypes/free-rectypes.txt
lo.logic
type-theory
dzień
źródło
źródło
Odpowiedzi:
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) → X G = ∃ X. ( X→ F.( X) ) × X fa( 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. sol fa v : F( L ) → L w : G → F.( G )
i
W ( X , ( F , x ) ) = K ( λ Y : X
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 αY F(Y)≅Y u:F(Y)→Y
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×X A A
źródło
w'
jest to izomorfizm, ale czy daje ci prawidłową węgiel? (Zgaduję, że tak powinno być, ale mogę się mylić ...) Nie wygląda na to, żeby plac dojeżdżał.Odpowiedź można zrozumieć kategorycznie przez soczewki F-algebry . Kategoryczny reprezentacją rekurencyjnego typu w kategorii C, można z grubsza określić za pomocą funktor F : C → C . Jeden następnie pracuje w kategorii F- algebry zja do fa: C→ C. fa
jako strzałki: kwadraty
Teraz aby stać się typem rekurencyjnym reprezentowanym przez F , muszę być początkowy w tej kategorii: potrzebujemyja fa ja
Teraz zdefiniować . Jest całkiem jasne, jak zbudować f o, l D : wystarczy wziąć f o, l D = λ I : I . I α : I → budynku i n jest nieco bardziej skomplikowane, Wadler wyjaśnia, więc nie będę próbować. Zauważ jednak, że wymaga to faktu, że F jest funktoremja= ∀ X. ( F.( X) → X) → X fao l d
Teraz w teorii kategorii często chcemy wziąć pod uwagę sytuację, w której wszystkie strzałki są odwrócone. W tym przypadku, biorąc pod uwagę , możemy rozważyć kategorię F- węglowy zfa fa
Teraz chcemy zbadać obiekt końcowy tej kategorii. Wymagania są teraz odwrócone:T.
Jak to robimy? A także określa Wadler bierzemy . W podobny sposób, niż wcześniej, mają c o, f O l d = X Ż : Z . ( Z , ω , oo ) : Z → T Ta konstrukcja nie będzie pracował, gdybyśmy zamiast podjąć T = ∃ X . X → ( XT.= ∃ X. ( X→ F.( X) ) × X
źródło
Z mojego doświadczenia wynika , że dobrym i operacyjnym sposobem na zrozumienie dualności typów dla calculi jest przejście przez π- calculus.λ π
Kiedy tłumaczysz (rozkładasz) typy na rachunek procesowy, dualność staje się prosta: dane wejściowe są podwójne do danych wyjściowych i odwrotnie . W dualności nie ma (dużo) więcej.
Co oznacza uniwersalna kwantyfikacja na poziomie procesu? Istnieje prosta interpretacja: jeśli dane są wpisywane przez zmienną typu, nie mogą być użyte jako przedmiot wyniku, tylko obiekt. Nie możemy więc sprawdzać tych danych, możemy je tylko przekazać lub zapomnieć.
Teorię tę opracowano bardziej szczegółowo w [1, 2, 3] i niektórych innych, trudniej dostępnych pracach, i bardzo precyzyjnie dotyczyły spolaryzowanej logiki liniowej i jej pojęcia dualności w 4 .
4 K. Honda i in., Dokładna zgodność między typowanym pi-rachunek a spolaryzowanymi siatkami próbnymi .
5 R. Milner, Funkcje jako procesy .
źródło