Jak można motywować relacyjną parametryczność?

15

Czy istnieje jakiś naturalny sposób na zrozumienie istoty semantyki relacyjnej polimorfizmu parametrycznego?

Właśnie zacząłem czytać o pojęciu parametryczności relacyjnej, a la John Reynolds „Typy, abstrakcja i polimorfizm parametryczny” i mam problem ze zrozumieniem, w jaki sposób motywowana jest semantyka relacyjna. Zestaw semantyki ma dla mnie idealny sens i zdaję sobie sprawę, że semantyka zestawu jest niewystarczająca do opisania polimorfizmu parametrycznego, ale skok do semantyki relacyjnej wydaje się magiczny, pochodzący całkowicie znikąd.

Czy istnieje jakiś sposób wyjaśnienia tego w następujący sposób: „Załóżmy relacje na podstawowych typach i terminach, a następnie interpretacja pochodnych terminów jest po prostu naturalną relacją między … a taką naturalną rzeczą… w twoim języku programowania „? Lub jakieś inne naturalne wytłumaczenie?

Tom Ellis
źródło

Odpowiedzi:

22

Cóż, parametryczna relacja jest jednym z najważniejszych pomysłów wprowadzonych przez Johna Reynoldsa, więc nie powinno być zaskoczeniem, że wygląda jak magia. Oto bajka o tym, jak mógł ją wymyślić.

Załóżmy, że próbujesz sformalizować pogląd, że niektóre funkcje (tożsamość, mapa, składanie, odwracanie list) działają „tak samo na wielu typach”, tzn. Masz intuicyjne wyobrażenia o polimorfizmie parametrycznym i sformułowałeś pewne reguły do tworzenia takich map, tj. polimorficznego -calculus lub jego wczesnego wariantu. Zauważasz, że naiwna semantyka teoretyczna nie działa.λ

Na przykład patrzymy na typ który powinien zawierać tylko mapę tożsamości, ale naiwna semantyka teoretyczna zestawu pozwala na niepożądane funkcje, takie jak Aby wyeliminować tego rodzaju rzeczy, musimy nałożyć pewne dodatkowe warunki na funkcje. Na przykład, moglibyśmy wypróbować teorię domen: wyposażyć każdy zestaw w częściowy porządek i wymagać, aby wszystkie funkcje były monotoniczne. Ale to nie całkiem go ogranicza, ponieważ powyższa niepożądana funkcja jest stała lub identyczna, w zależności od , a są to mapy monotoniczne.

X:Type.XX,
λX:Type.λa:X.if (X={0,1}) then 0 else a.
XXX

Częściowy porządek jest relatywny, przechodni i antysymetryczny. Możemy spróbować zmienić strukturę, na przykład możemy spróbować zastosować ścisły porządek częściowy, porządek liniowy, relację równoważności lub po prostu relację symetryczną. Jednak w każdym przypadku wkradają się niechciane przykłady. Na przykład relacje symetryczne eliminują naszą niechcianą funkcję, ale pozwalają na inne funkcje uwarunkowane (ćwiczenie).

A potem zauważasz dwie rzeczy:

  1. Do chcieli przykłady nie są eliminowane, co stosunki użyć zamiast częściowych zamówień .
  2. Dla każdego konkretnego niechcianego przykładu, na który patrzysz, możesz znaleźć relację, która go eliminuje, ale nie ma jednej relacji, która eliminowałaby wszystkie z nich.

Zatem masz genialną myśl, że pożądanymi funkcjami są te, które zachowują wszystkie relacje , i rodzi się model relacyjny.

Andrej Bauer
źródło
1
Dzięki Andrej. Rodzi to kolejne pytanie: czy istnieje jakaś mniejsza podklasa relacji, która eliminuje wszystkie niechciane przykłady?
Tom Ellis
Cóż, prawdopodobnie możemy ograniczyć logiczną złożoność relacji, ponieważ musimy się tylko martwić mapami obliczalnymi. Ale nie jestem wystarczającym ekspertem, aby odpowiedzieć. Wzywam @UdayReddy.
Andrej Bauer
2
@TomEllis. Tak, w szczególnych przypadkach wystarczająca może być podklasa relacji. Najbardziej bezpośrednim przypadkiem szczególnym jest to, że jeśli wszystkie operacje są pierwszego rzędu, wystarczą funkcje (relacje całkowite, jednowartościowe). W przypadku pól wystarczą częściowe izomorfizmy. Przypomnijmy, że wiodącym przykładem Reynoldsa jest pole liczb zespolonych, a jego logiczną relacją między Besselem i Kartezjuszem jest częściowy izomorfizm.
Uday Reddy,
4
X.XX
Pokazujesz, że jeśli interpretujesz typy jako zestawy, wówczas są niepożądane funkcje. Czy to samo nie dotyczy relacji? \X:Type. \a:X. if X = {(0,0), (1,0), (0,1), (1,1)} then 0 else a
Jules
11

Odpowiedź na twoje pytanie znajduje się w bajce Reynoldsa (część 1). Pozwól, że spróbuję to dla ciebie zinterpretować.

W języku lub formalizmie, w którym typy są traktowane jako abstrakcje , zmienna typu może oznaczać dowolne pojęcie abstrakcyjne. Nie zakładamy, że typy są generowane za pomocą jakiejś składni terminów typu lub jakiegoś stałego zbioru operatorów typów, lub że możemy przetestować dwa typy pod kątem równości itp. W takim języku, jeśli funkcja obejmuje zmienną typu, wówczas jedyna rzeczą, którą funkcja może zrobić z wartościami tego typu, jest tasowanie wokół podanych wartości. Nie może wymyślić nowych wartości tego typu, ponieważ nie „wie”, co to za typ! To intuicyjna koncepcja parametryczności .

tAAR:AAxAxAxxRtxxRxx

AAAAAA

RIKKt×IntInt×tR×IIntIInt×Rf(x,n)(x,n)(m,x)(m,x)F(IA1,,IAn)=IF(A1,,An) własność.

tttIntInttt×tt×t(tt)t(tt)(tt)

Uday Reddy
źródło
Wreszcie moje wezwanie zadziałało!
Andrej Bauer,
2
@AndrejBauer. Hmm, właściwie nie dostałem wezwania. Być może inkantacja @ UdayReddy działa tylko na początku komentarza. W każdym razie wezwania nie są potrzebne. „Parametryczność” należy do moich filtrów.
Uday Reddy,
„jedyną rzeczą, jaką funkcja może zrobić z wartościami tego typu, jest tasowanie wokół podanych wartości” - w rzeczywistości oprócz tasowania funkcja może usunąć daną wartość (osłabienie) i skopiować ją (skurcz). Ponieważ operacje te są zawsze dostępne, wartość nie jest tak abstrakcyjna, jak mogłoby się wydawać.
Łukasz Lew
@ ŁukaszLew, masz rację. Nie wiem jednak, czy można to scharakteryzować jako utratę „abstrakcji”.
Uday Reddy
@UdayReddy Usunąłem wyróżnienie i zadałem to jako samodzielne pytanie .
Łukasz Lew
3

ω

Ponadto kuszące jest identyfikowanie funkcji o tym samym zachowaniu ekstensywnym, co prowadzi do relacji równoważności. Relacja jest częściowa, jeśli wykluczymy funkcje „niezdefiniowane”, czyli funkcje, które „zapętlają” się w przypadku niektórych dobrze sformułowanych danych wejściowych.

Modele PER są uogólnieniem tego.

Innym sposobem na zobaczenie tych modeli jest (bardzo) specjalny przypadek prostego zestawu modeli teorii typów homotopii . W tych ramach typy są interpretowane jako (uogólnienie), zestawy ze relacjami oraz relacje między tymi relacjami itp. Na najniższym poziomie mamy po prostu modele PER.

Wreszcie, w dziedzinie matematyki konstruktywnej pojawiły się pokrewne pojęcia, w szczególności Teoria zbiorów biskupa obejmuje opisanie zbioru poprzez podanie zarówno elementów, jak i wyraźnej relacji równości, która musi być równoważna. Naturalne jest oczekiwanie, że niektóre zasady matematyki konstruktywnej wkroczą do teorii typów.

cody
źródło
1
Ach, ale modele PER nie są zbyt ładne i mogą zawierać uwarunkowane funkcje polimorficzne. Trzeba przejść do relacyjnych modeli PER, aby się ich pozbyć.
Andrej Bauer,
Nadal uważam, że motywuje to podejście relacyjne.
cody
@cody. Zgadzam się. Myślę o PERach jako sposobie budowania relacji w „teorii mnogości”, aby przede wszystkim uzyskać modele impredykacyjne. Dzięki za wspomnienie teorii typu Homotopy. Nie wiedziałem, że ma podobne pomysły.
Uday Reddy,
@UdayReddy: pomysły są bardzo podobne! W szczególności ideę „zgodnych implementacji zależnych”, które wiążą typy abstrakcyjne z zależnościami, można zrozumieć poprzez pryzmat jednoznacznej równości.
cody