Większość teorii typów, które znam, są predykcyjne, przez co mam na myśli to
Void : Prop
Void = (x : Prop) -> x
nie jest dobrze wpisany w większość dowodów twierdzeń, ponieważ ten typ pi należy do tego samego wszechświata co Prop
i tak nie jest Prop : Prop
. To czyni je predykatywnymi i nie pozwala na stosowanie takich impredykatywnych definicji jak wyżej. Jednak okropna liczba „języków tablicowych”, takich jak System F lub CoC, jest w rzeczywistości impredycyjna. W rzeczywistości ta impredykatywność jest niezbędna do zdefiniowania większości konstrukcji nie zawartych pierwotnie w języku.
Moje pytanie brzmi: dlaczego ktoś zrezygnowałby z impredykatywności, skoro ma moc definiowania logicznych konstrukcji? Słyszałem, jak kilka osób zauważyło, że impredykcyjność spieszy „obliczenia” lub „indukcję”, ale mam problem ze znalezieniem konkretnego wyjaśnienia.
forall P : Type, {P} + {~P}
, ponieważ ten zestaw impredykatywny implikuje nieistotność dowodu (i nienat
jest dowodem nieistotny). Patrz np. Coq.inria.fr/library/Coq.Logic.ClassicalUniqueChoice.html i coq.inria.fr/library/Coq.Logic.Berardi.html