Subtipagem e tipos dependentes são conceitos ortogonais.
A subtipagem normalmente é equipada com uma noção de subsunção, na qual uma expressão de um tipo pode aparecer no local em que um supertipo é esperado.
É mais provável que a subtipagem seja decidível e mais simples de gerenciar na implementação.
A digitação dependente é muito mais expressiva. Mas se você quiser considerar um grupo também um monóide, precisará de uma noção de subsunção para esquecer a estrutura extra. Freqüentemente, como ao usar o Coq, uma obrigação de prova trivial é gerada para lidar com esse tipo de coerção; portanto, na prática, a subtipagem pode não adicionar nada. O mais importante é ter maneiras de agrupar várias teorias para torná-las reutilizáveis, como reutilizar a teoria dos monoides ao falar sobre grupos. As classes de tipo no Coq são uma inovação recente para fazer essas coisas. Módulos são uma abordagem mais antiga.
Se você faz uma rápida pesquisa no Google sobre "subtipo de tipos dependentes", encontra um monte de trabalho adicionando subtipo a tipos dependentes, principalmente por volta do ano 2000. Imagino que a metateoria seja realmente desafiadora, portanto, nenhuma subtipo de tipos dependentes aparece em assistentes de prova.
Uma coisa extra que a subtipagem fornece é que a subsunção implica que muitas propriedades de coerência são válidas. Uma teoria do tipo dependente também precisa de uma noção de irrelevância da prova para modelar tudo o que você pode fazer com os subtipos. Por exemplo, na teoria dos tipos dependentes, você pode aproximar a formação de um subconjunto com um registro dependente:
Depois de ter isso, é possível elaborar sistematicamente a subtipagem na teoria dos tipos dependentes. Veja a tese de William Lovas para um exemplo de adição de subtipagem a uma teoria de tipos dependentes (neste caso, Twelf).
fonte