Подтипы и зависимые типы являются ортогональными понятиями.
Подтип обычно снабжен понятием подтипа, благодаря которому выражение одного типа может появиться в месте, где ожидается супертип.
Субтипирование, скорее всего, будет решаемо, и его легче будет реализовать при реализации.
Зависимая типизация гораздо более выразительна. Но если вы когда-нибудь захотите считать группу моноидом, вам нужно понятие подчинения, чтобы забыть о дополнительной структуре. Часто, например, при использовании Coq, создается тривиальное обязательное доказательство для борьбы с этим типом принуждения, поэтому на практике подтипирование может ничего не добавлять. Более важно иметь способы объединения различных теорий, чтобы сделать их многократно используемыми, например, повторное использование теории моноидов при разговоре о группах. Классы типов в Coq - недавнее новшество для таких вещей. Модули - более старый подход.
Если вы быстро сделаете гугл по «подтипам зависимых типов», вы обнаружите кучу работы по добавлению подтипов к зависимым типам, в основном примерно с 2000 года. Я полагаю, что мета-теория действительно сложна, поэтому в подтипах зависимых типов не появляется корректоры.