Estou lendo o livro do HoTT e tenho uma pergunta (provavelmente muito ingênua) sobre as coisas do capítulo um.
O capítulo apresenta o tipo de função e o generaliza, tornando B dependente de x : A B : A → U ,
Seguindo em frente, o capítulo apresenta o tipo de produto e o generaliza, tornando B dependente de x : A B : A → U ,
Definitivamente, posso ver um padrão aqui.
Seguindo em frente, o capítulo apresenta o tipo de coproduto e ... combobreaker ... não há discussão sobre a versão dependente desse tipo.
Existe alguma restrição fundamental sobre isso ou é apenas irrelevante para o tópico do livro? De qualquer forma, alguém pode me ajudar com a intuição sobre por que tipos de função e produto? O que torna esses dois tão especiais que eles podem ser generalizados para tipos dependentes e usados para construir todo o resto?
Vou falar sobre isso mais de engenharia de software.
Você está falando de um tipo de coproduto cujos últimos construtores podem se referir aos anteriores (que parecem muito com um produto cujos últimos campos podem se referir aos anteriores)? Isso é possível no Agda após a introdução do HIT (na versão 2.6.0):
Seguindo este artigo , se o seu verificador de tipos verificar as definições definidas usando a sintaxe apresentada na figura "(26)", acredito que seja bastante simples oferecer suporte a "coprodutos dependentes".
fonte