Я относительно новичок в теории типов и зависимом программировании. Я изучал исчисление конструкций (CoC) и других систем чистого типа. Я особенно заинтересован в том, чтобы использовать его в качестве промежуточного представления для сохранения системы компиляции.
Я понимаю , что (со) рекурсивные типы представимы , вычислительно , используя в качестве единственного типа конструктора. Я читал, однако, что они не могут быть использованы для создания доказательств по индукции (простите меня, я не могу найти где сейчас!), Например, что я не мог доказать, что в простом CoC (хотя можно печатать как ).
Я предполагаю, что именно поэтому они построили исчисление индуктивных конструкций (CIC). Это правильно? Но почему? Я не смог найти никакого материала, объясняющего, почему такие доказательства не могут быть представлены без использования (со) индуктивных типов в качестве примитивов. Если это не так, то зачем добавлять их как примитивы в CIC?
источник