Nie, w tym przypadku predykcyjność i monotoniczność nie są ściśle powiązane.
Kontrola pozytywności w Coq / Adga ma na celu upewnienie się, że z grubsza zajmujesz najmniej ustalony punkt monotonnej rzeczy.
Oto, jak myśleć o typach indukcyjnych w kategoriach operatorów kratowych i monotonicznych. Przypomnijmy, że twierdzenie Knastera-Tarskiego mówi, że na pełnej sieci każdy operator monotoniczny f : L → L ma najmniej ustalony punkt μ ( f ) . Następnie możemy myśleć o typach w teorii typów jako o formowaniu sieci pod dowartościowalnością. Oznacza to, że typ S jest poniżej T jeśli prawda S oznacza, że z T . Teraz chcielibyśmy wziąć monotoniczny operator F na typach i użyć Knaster-Tarski, aby uzyskać interpretację najmniej ustalonego punktu tego operatoraLf:L→Lμ(f)STSTF . μ(F)
Jednak typy w teorii typów nie są tylko siatką: tworzą kategorię. Oznacza to, że biorąc pod uwagę dwa typy i T , istnieje potencjalnie wiele sposobów S jest poniżej T , z jednym sposób dla każdej próbnym e : S → T . Tak więc operator typu F musi również zrobić coś sensownego na tych dowodach. Właściwym uogólnieniem monotoniczności jest funkcjonalność . Oznacza to, że chcemy, aby F miał operator na typach, a także działał na dowody, tak że jeśli e : S → T , to F (STSTe:S→TFFe:S→T .fa( e ) : F( S) → F( T)
Funkcjonalność jest teraz zachowywana przez sumy i iloczyny (tj. Jeśli i G są endofunkorami na typach, to F + G i F × G (działając punktowo) są również funktorami na typach (zakładając, że mamy sumy i iloczyny w naszej algebrze jednak nie jest zachowywany przez przestrzeń funkcji, ponieważ wykładnik dwufunkcyjny F → G jest sprzeczny w swoim lewym argumencie. Więc kiedy piszesz definicję typu indukcyjnego, definiujesz funktor, który ma przyjąć co najmniej ustalony punkt. Aby upewnić się, że rzeczywiście jest to funktor, należy wykluczyć występowanie parametru rekurencyjnego po lewej stronie przestrzeni funkcji - stąd kontrola pozytywności.fasolfa+ Gfa× Gfa→ G.
Generalnie unika się impredykatywności (w sensie Systemu F), ponieważ jest to zasada, która zmusza do wyboru między klasyczną logiką a modelami teoretycznymi. Nie możesz interpretować typów jako zbiorów w klasycznej teorii zbiorów, jeśli masz indeksowanie w stylu F. (Zobacz słynny „Polimorfizm nie jest teoretyczny” Reynoldsa.)
Kategorycznie, impredykatywność w stylu F mówi, że kategoria typów i terminów tworzy małą kompletną kategorię (to znaczy, homs i obiekty są zarówno zestawami, jak i istnieją granice wszystkich małych diagramów). Klasycznie wymusza to kategorię poety. Wielu konstruktywistów jest konstruktywnych, ponieważ chcą, aby ich twierdzenia opierały się na większej liczbie systemów niż tylko na logice klasycznej, a zatem nie chcą udowodnić niczego, co byłoby klasycznie fałszywe. Dlatego są nieufni wobec impredykatywnego polimorfizmu.
Jednak polimorfizm pozwala powiedzieć wiele warunków, które są klasycznie „duże” wewnętrznie w stosunku do teorii typów - a pozytywność jest jednym z nich! Operator typu jest funkcyjny, jeśli można wytworzyć termin polimorficzny:fa
F m a p :∀α,β.( α → β) → ( F( α ) → F.( β) )
Widzisz, jak to odpowiada funkcjonalności? IMO, to byłaby bardzo fajna opcja w Coq, ponieważ pozwoliłaby ci na łatwiejsze programowanie ogólne. Syntaktyczna natura kontroli pozytywności stanowi dużą przeszkodę dla programowania ogólnego i chętnie wymieniłbym możliwość klasycznych aksjomatów na bardziej elastyczne programy funkcjonalne.
EDYCJA: Pytanie, które zadajesz na temat różnicy między Prop i Set, wynika z faktu, że programiści Coq chcą pozwolić ci myśleć o twierdzeniach Coq w naiwnych terminach teoretycznych, jeśli chcesz, bez zmuszania cię do tego. Technicznie dzielą Prop i Set, a następnie zabraniają zestawom zależeć od obliczeniowej zawartości Prop.
Możesz więc interpretować Prop jako wartości prawdy w ZFC, które są booleanami prawdą i fałszem. Na tym świecie wszystkie dowody twierdzeń są równe, a więc oczywiście nie powinieneś być w stanie rozgałęzić się na dowodzie zdania. Zatem zakaz zestawów w zależności od obliczeniowej zawartości dowodów Prop jest całkowicie rozsądny. Co więcej, 2-elementowa sieć boolowska jest oczywiście kompletną siecią, więc powinna wspierać indeksowanie impredykatywne, ponieważ istnieją arbitralne wartości ustalone. Ograniczenie predyktywności dla zbiorów wynika z faktu (wspomnianego powyżej), że indeksowanie w stylu F jest zdegenerowane w klasycznych modelach teorii zbiorów.
Coq ma inne modele (to logika konstruktywna!), Ale chodzi o to, że z półki nigdy nie udowodni niczego, czym mógłby się zastanawiać klasyczny matematyk.