Bağımlı türler alt yazmanın yaptığı her şeyi size veriyor mu?


24

Türler ve Programlama Dilleri altyazıya biraz odaklanır, ancak söyleyebildiğim kadarıyla altyazı özellikle temel görünmüyor. Alt yazı, bağımlı türlerden daha fazla bir şey veriyor mu? Bağımlı tiplerle çalışmak daha fazla iş demektir, bu yüzden alt tiplerin pratikte neden yararlı olabileceğini anlayabiliyorum. Ancak, matematiğin temeli olarak tip teorisi ile programlama dillerinin temeli olarak daha çok ilgileniyorum, alt yazmaya çok dikkat etmeli miyim?

Yanıtlar:


22

Alt tipleme ve bağımlı tipler dikey kavramlardır.

Alt tiplendirme tipik olarak, bir üst tipin beklendiği yerde bir tip ifadenin ortaya çıkabileceği bir varsayım kavramı ile donatılmıştır.

Alt tiplendirmenin karar verilebilir olması daha muhtemeldir ve uygulamada daha basit bir şekilde yönetilebilir.

Bağımlı yazma, çok daha etkileyicidir. Ama bir grubun aynı zamanda bir monoid olduğunu düşünmek istersen, ekstra yapıyı unutabilmek için bir varsayım kavramına ihtiyacın var. Coq kullanırken olduğu gibi, bu tür bir zorlama ile başa çıkmak için önemsiz bir kanıt zorunluluğu ortaya çıkar, bu nedenle uygulamada alt türleme hiçbir şey ekleyemez. Daha da önemlisi, gruplar hakkında konuşurken monoid teorisini tekrar kullanmak gibi, onları yeniden kullanılabilir kılmak için çeşitli teorileri bir araya getirme yollarına sahip olmaktır. Coq'daki tip sınıfları böyle şeyler yapmak için yeni bir yeniliktir. Modüller daha eski bir yaklaşımdır.

"Bağlantılı türler" hızlı bir şekilde google yaparsanız, çoğunlukla 2000 yılından bu yana, bağımlı türlere alt tip ekleyen bir sürü iş bulursunuz. kanıt yardımcıları.


3
Teşekkürler, bu tam olarak aradığım şeydi. Şimdi cstheory olsa da iyi karşılanmış gibi görünen birkaç soru sordum. Bu tür sorular için Doğru Yer değil. -5 ila +5 arasında bir ölçekte, gelecekte benzer soruları cesaretlendirir veya cesaretlendirir misiniz? Bir not olarak, anladığım kadarıyla (Robert Harper'ı okumaktan), type sınıfları bir modül alt kategorisidir, doğru mu?
John Salvatier

3
Bu soru cstheory için uygun sınırın sadece sağ tarafındadır.SE. Tip sınıfları gerçekten bir modül alt kategorisi değildir. Tip sınıfları modüller + tip çıkarımı + free_plumbing gibidir.
Dave Clarke

2
Alt türlemeyi her zaman bağımlı türlerle oldukça kolay bir şekilde modelleyebileceğinizi / simüle edebileceğinizi hayal ediyorum. Haskell'de HList (sadece karar verilebilir tip eşitliği üzerine kurulu) size alt tipler verir (örneğin, "Haskell'in Gözden Kaçan Nesne Sistemi"). Alt yazı yazmanın tek zor kısmı tür çıkarımıdır ve bağımlı türlerle çalıştığınızda, bunun% 90'ını bile atmış olursunuz.
sclv

(bir yorumdan bir cevaba değiştirildi)
Neel Krishnaswami

Martin-Loef'in tip teorisinin alt teorisi temelde yapıyı unutarak modellemeniz için ihtiyaç duyduğunuz şeydir ve bu 1980'lere dayanır. Bence bu @ Neel’in cevabında ne elde ettiği ile ilgili.
Charles Stewart

22

Ancak, matematiğin temeli olarak tip teorisi ile programlama dillerinin temeli olarak daha fazla ilgileniyorum, alt yazmaya çok dikkat etmeli miyim?

Ekstra bir altyazı size, varsayımın birçok tutarlılık özelliğinin tuttuğu anlamına geldiği anlamına gelir. Bağımlı tip bir teori ayrıca, alt tiplerle yapabileceğiniz her şeyi modellemek için ispat ilgisizlik kavramına ihtiyaç duyar. Örneğin, bağımlı tip teoride, bağımlı bir kaydı olan bir altküme oluşturma yaklaşık olarak yapabilirsiniz:

{xS|;P(x)} vs. Σx:S.P(x)

SP(x)x:

X<:Yx:Xx:YP(x)P(x)

Bunu yaptıktan sonra, alt tiplendirmeyi bağımlı tip teoriye göre sistematik olarak detaylandırabilirsiniz. Bağımlı tip bir teoriye alt yazı ekleme örneği için William Lovas'ın tezine bakınız (bu durumda, Twelf).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.