Większość systemów typowanych zależnie ma ścisłe warunki dodatnie dla typów indukcyjnych. Czy ktoś zna przykład, w którym naruszenie warunku prowadzi do niespójności w systemie?
źródło
Większość systemów typowanych zależnie ma ścisłe warunki dodatnie dla typów indukcyjnych. Czy ktoś zna przykład, w którym naruszenie warunku prowadzi do niespójności w systemie?
W rzeczywistości można rozluźnić ścisłą pozytywność i zachować spójność. Na przykład wystarczy mieć warunek dodatni. Oznacza to, że możemy zaakceptować takie definicje typów
gdzie zmienne typu rekurencyjnego występują po lewej stronie parzystej liczby strzałek i zachowują spójność.
Jednak teorie pozwalające na tego rodzaju indukcyjny typ nie mają modeli teoretycznych - nie można interpretować typów jako zbiorów, a terminów jako elementów zbiorów. W tym przypadku mówimy, że jest izomorficzny w stosunku do swojego podwójnego zestawu sił (tj. ), a to narusza twierdzenie Cantora .
Ponieważ teorie typów zależnych są często używane do sformalizowania matematyki, ich projektanci zwykle wahają się dodawać zasady, które nie są zgodne z semantyką teoretyczną, nawet jeśli są spójne.
EDYCJA: Dodam tę zmianę w odpowiedzi na pytanie Andreja. Typ jest spójny, jeśli dodasz go do (powiedzmy) Agdy; nie ma z tym żadnych problemów. Mamy problem tylko wtedy, gdy połączymy nie ścisłą pozytywność z wykluczonym środkiem.
Intuicja, dlaczego jest bezpieczny, jest najlepiej widoczna przez soczewkę parametryczną (IMO). W Systemie F możemy pokazać za pomocą parametryczności, że dla dowolnego definiowalnego funktora , typ jest rzeczywiście typem indukcyjnym.
Przypomnijmy teraz, że definiowalnym funktorem jest operator typu , wraz z operatorem spełniających warunki funkcjonalności (tj. i ).
Teraz możemy zdefiniować operator typu dla podwójnego zestawu zasilającego
a ponieważ występuje tylko pozytywnie, możemy również zdefiniować dla niego operatora mapy:
Wiemy więc, że jest uzasadnionym typem indukcyjnym.