Jestem stosunkowo nowy w teorii typów i programowaniu zależnym. Studiowałem rachunek różniczkowy konstrukcji (CoC) i inne systemy czystego typu. Szczególnie interesuje mnie wykorzystanie go jako pośredniej reprezentacji zabezpieczającej system kompilatora.
Rozumiem, że typy (ko) rekurencyjne są reprezentatywne , obliczeniowo , przy użyciu jako jedynego konstruktora typów. Przeczytałem jednak, że nie można ich używać do budowania dowodów przez indukcję (wybacz mi, nie mogę teraz znaleźć gdzie!), Np. Że nie mogłem udowodnić, że 0 ≠ 1 w zwykłym CoC (chociaż Nat można wpisać jako Π ( N : ∗ ) . Π ( S : N → N ) . Π ( Z : N ) . N ).
Zakładam, że właśnie dlatego zbudowali rachunek konstrukcji indukcyjnych (CIC). Czy to jest poprawne? Ale dlaczego? Nie mogłem znaleźć żadnego materiału wyjaśniającego, dlaczego takich dowodów nie można przedstawić bez użycia typów (ko) indukcyjnych jako prymitywów. Jeśli nie jest to prawdą, to po co dodawać je jako prymitywy w CIC?
źródło