Sono relativamente nuovo alla teoria dei tipi e alla programmazione dipendente. Ho studiato il calcolo delle costruzioni (CoC) e altri sistemi di tipo puro. Sono particolarmente interessato a usarlo come rappresentazione intermedia di conservazione delle prove per un sistema di compilazione.
Comprendo che i tipi (co) ricorsivi sono rappresentabili , dal punto di vista computazionale , usando come unico costruttore di tipi. Ho letto, tuttavia, che non possono essere utilizzati per costruire prove per induzione (perdonami, non riesco a trovare dove adesso!), Ad esempio, che non sono riuscito a dimostrare che 0 ≠ 1 in CoC semplice (anche se Nat è digitabile come Π ( N : ∗ ) . Π ( S : N → N ) . Π ( Z : N ) . N ).
Suppongo che sia per questo che hanno costruito il calcolo delle costruzioni induttive (CIC). È corretto? Ma perché? Non sono riuscito a trovare alcun materiale che spieghi perché tali prove non possano essere rappresentate senza usare tipi (co) induttivi come primitivi. Se questo non è vero, allora perché aggiungerli come primitivi in CIC?