Podtypy i typy zależne są pojęciami ortogonalnymi.
Podtypowanie jest zazwyczaj wyposażone w pojęcie subsumcji, przy czym wyrażenie jednego typu może pojawić się w miejscu, w którym oczekiwany jest nadtyp.
Podpisywanie jest bardziej podatne na rozstrzygnięcie i jest łatwiejsze do zarządzania w trakcie wdrażania.
Zależne pisanie jest znacznie bardziej wyraziste. Ale jeśli kiedykolwiek zechcesz uznać grupę za monoidę, potrzebujesz pojęcia subsumpcji, aby zapomnieć o dodatkowej strukturze. Często, na przykład podczas korzystania z Coq, generowany jest trywialny obowiązek dowodu, aby poradzić sobie z tego rodzaju przymusem, więc w praktyce podtypowanie może niczego nie dodawać. Co ważniejsze, to sposoby pakowania różnych teorii, aby można je było ponownie wykorzystać, na przykład ponowne wykorzystanie teorii monoidów w rozmowach o grupach. Klasy typów w Coq to najnowsza innowacja do robienia takich rzeczy. Moduły są starszym podejściem.
Jeśli zrobisz szybkie wyszukiwanie w Google „podtypów zależnych”, znajdziesz mnóstwo pracy nad dodaniem podtypów do typów zależnych, głównie z około 2000 roku. Wyobrażam sobie, że meta-teoria jest naprawdę trudna, więc żadne podtypowanie typów zależnych nie pojawia się w asystenci dowodu.
Jedną dodatkową rzeczą, jaką daje podtyp, jest to, że subsumcja oznacza, że zachowuje wiele właściwości koherencji. Teoria typów zależnych wymaga również pojęcia nieistotności dowodu do modelowania wszystkiego, co można zrobić z podtypami. Na przykład w teorii typów zależnych można w przybliżeniu utworzyć podzbiór z rekordem zależnym:
Gdy już to zrobisz, możesz systematycznie opracowywać podtypy w teorii typów zależnych. Zobacz tezę Williama Lovasa , aby zobaczyć przykład dodawania podtypów do teorii typów zależnych (w tym przypadku Twelfa).
źródło