Sou relativamente novo em teoria de tipos e programação dependente. Eu estudei o cálculo de construções (CoC) e outros sistemas de tipo puro. Estou particularmente interessado em usá-lo como uma representação intermediária de preservação de prova para um sistema de compilador.
Entendo que os tipos (co-) recursivos são representáveis , computacionalmente , usando como o único construtor de tipos. Eu li, no entanto, que eles não podem ser usados para criar provas por indução (perdoe-me, não consigo encontrar onde agora!), Por exemplo, que não pude provar que em CoC simples (embora ser digitado como ).
Suponho que é por isso que eles construíram o cálculo de construções indutivas (CIC). Isso está correto? Mas por que? Não encontrei nenhum material que explique por que essas provas não podem ser representadas sem o uso de tipos (co) indutivos como primitivos. Se isso não for verdade, por que adicioná-los como primitivos no CIC?