Tipe subtipe dan dependen adalah konsep ortogonal.
Subtyping biasanya dilengkapi dengan gagasan subsumption, di mana ekspresi satu jenis dapat muncul di tempat di mana supertype diharapkan.
Subtyping lebih cenderung decidable dan lebih mudah dikelola dalam implementasi.
Pengetikan dependen jauh lebih ekspresif. Tetapi jika Anda pernah ingin menganggap suatu kelompok juga sebagai monoid, maka Anda memerlukan gagasan subsumption untuk melupakan struktur tambahan. Seringkali, seperti saat menggunakan Coq, kewajiban bukti sepele dihasilkan untuk menangani paksaan semacam ini, sehingga dalam praktiknya subtyping mungkin tidak menambah apa pun. Yang lebih penting adalah memiliki cara mengemas berbagai teori untuk membuatnya dapat digunakan kembali, seperti menggunakan kembali teori monoids ketika berbicara tentang kelompok. Jenis kelas dalam Coq adalah inovasi terbaru untuk melakukan hal-hal seperti itu. Modul adalah pendekatan yang lebih tua.
Jika Anda melakukan google cepat "subtipe tipe dependen" Anda menemukan banyak pekerjaan menambahkan subtipe ke tipe dependen, sebagian besar dari sekitar tahun 2000. Saya membayangkan bahwa teori-meta benar-benar menantang, sehingga tidak ada subtipe jenis dependen muncul di asisten bukti.
Satu hal tambahan yang subtyping berikan kepada Anda adalah bahwa subsumsi menyiratkan bahwa banyak sifat koherensi bertahan. Teori tipe dependen juga membutuhkan gagasan bukti tidak relevan untuk memodelkan semua yang dapat Anda lakukan dengan subtipe. Misalnya, dalam teori tipe dependen Anda dapat memperkirakan membentuk subset dengan catatan dependen:
Namun, perhatikan bahwa kardinalitas himpunan bagian akan lebih kecil dari , sedangkan catatan dependen dapat memiliki kardinalitas yang lebih besar (karena mungkin ada banyak kemungkinan bukti untuk setiap .P ( x ) x :S P(x) x:
Untuk mewakili subtyping (yang mengatakan bahwa jika , dan maka ), Anda perlu menjadi tidak relevan - yaitu, agar ada paling banyak satu penghuni ketik .x : X x : Y P ( x ) P ( x )X<:Y x:X x:Y P(x) P(x)
Setelah Anda memilikinya, Anda dapat menguraikan subtyping secara sistematis menjadi teori tipe dependen. Lihat tesis William Lovas untuk contoh menambahkan subtyping ke teori tipe dependen (dalam hal ini, Twelf).
sumber