Öğrenebileceğim en sezgisel bağımlı tip teorisi nedir?


46

Bağımlı yazarak gerçekten sağlam bir kavrama elde etmekle ilgileniyorum. TaPL'in çoğunu okudum ve (tamamen absorbe değilse) ATTaPL'de 'Bağımlı Türler'i okudum . Ayrıca bağımlı yazmayla ilgili birkaç makale okudum ve inceledim.

Birçok tip teorisi tartışması, önceki tip sistemlere artan özellikler eklemeye odaklanmış gibi görünmektedir, "X tip sisteminden sonraki büyük genelleme nedir?". Bağımlı türler, Sistem F'nin bir sonraki büyük genellemesi gibi görünüyor, ancak henüz sezgisel, kanonik bağımlılıkla yazılmış dili bulamadım. Calculus (endüktif) Yapılar'a yapılan birçok referans, CoC'nin o dil olduğunu düşünmemi sağlıyor, ancak gördüğüm dilin açıklamaları bana çok açık veya sezgisel görünmüyor.

Böyle bir dilin şu gibi özelliklere sahip olacağını tahmin ediyorum / tahmin ediyorum: (ve eğer özellikle herhangi bir şeyin kafası karışmış veya gerçekçi görünmüyorsa lütfen bana bildirin)

  • Genelleştirilmiş soyutlama (tür hiyerarşisindeki herhangi bir etki alanından diğerine, tür -> terim, terim> tür '' 'vb. İşlevlere sahip olabilir)
  • Sonsuz bir yazma hiyerarşisine sahiptir (terimler: types: types ': types' ': ...)
  • En az sayıda temel eleman. Dilin her seviye için sadece tek bir öğe belirlediğini hayal ediyorum. Örneğin, ((): Birim: Tür: Tür ': ...) olduğunu iddia edebilir. Diğer elemanlar bu elemanlardan yapılmıştır.
  • Toplam ve ürün çeşitleri elde edilebilir.

Ayrıca, ideal olarak tartışacağımız dilin bir açıklamasını da arıyorum:

  • Bu dilde soyutlama ve niceliklendirme arasındaki ilişki. Birleştirilmezlerse, neden birleştirilmediklerini açıklayın.
  • Açıkça sonsuz tip hiyerarşi

Bu soruyu soruyorum çünkü bağımlı tip teorisini öğrenmek istiyorum ama aynı zamanda küçük bir CS arka planı varsayarak, kanıt yardımcılarının ve bağımlı yazılan dillerin nasıl kullanılacağını ve nasıl anlaşılacağını öğreten bir rehber oluşturmak istediğim için soruyorum.

(Cross Reddit'e gönderildi)

Yanıtlar:


35

Buna yaklaşmanın birkaç farklı yolu var:

  1. Bağımlı Tip Teorisi . Muhtemelen bağımlı türler hakkında öğrenmenin en kolay yolu bu değildir, ancak örneğin Calculus of Constructions makalelerine ve bunların türevlerine, Saf Tip Sistemlere ve Martin Hofmann'ın Bağımlı Türlerin Sözdizimi ve Anlambilimi konulu makalesine bakabilirsiniz.

  2. Teoremi ispatlamak . Öncelikle, ilgili bir soruya verdiğim cevaba bir bakın: Coq kanıt asistanının altında yatan teoriyi nasıl öğrenirim? .

  3. Bağımlı tiplerle programlama . Epigram veya Agda gibi bağımlı türlerde olan son dillere bakmak veya Dependent ML gibi daha az yeni olanlara bakmak ve bazı programlar yazmak fikirlerin sağlamlaştırılmasına yardımcı olacaktır. Epigram, örneğin, tasarım açısından son derece temiz. Başka bir açı, bağımlı türlerin nasıl uygulandığını görmektir . Pratik bir bağımlı tip teorisi ise : Şekersiz Bağımlı Tipler. Birkaç doktora tezi bağımlı tip teorisi ile programlamaya adanmıştır: Dan Licata , Nils Anders Daniels , Ulf Norrel , Susmit SarkarΠΣ, diğerleri arasında. Ve elbette, Marc Hamann'in cevabında verilen Adam Chlipala'nın kitabı var.

Teorem kanıtlamayı kullanmaya geçmeden önce programlama ile çalışmaya ve daha teorik konuları keşfetmeye başlamaya meyilliyim.


Epigram için kağıt bulabilirim, ancak Epigram için gerçek bir indirme bulamıyorum, yalnızca henüz bitmemiş Epigram 2'yi bulabilirim. Herhangi bir fikir?
John Salvatier,

1
Buldunuz mu : e-pig.org/darcs/Pig09/web ? Epigram sayfanın altında mevcuttur.
Dave Clarke

3
Epigram 1 uzunca bir süredir temelde korunmuyor AFAIK - yazar bugünlerde Agda kullanıyor (yandan Epigram 2 üzerinde çalışırken).
Blaisorblade

2019'da Epigram 2'nin olacağını asla sanmıyorum - ama şimdi İdris (ve İdris 2!) Var.
xrq

14

esasen LF çekirdeğidir -ki hesabı, içinde ana kadar sadece tip uzatılması oluşur beri, öğrenebilir basit bağımlı yazılan sistem gereğidir Terörizminin Mantığını yüksek sırasına en yaygın reimplemented yaklaşım çevirmek bağımlı olarak yazılan niceleyicileri olan basitçe yazılmış lambda hesabının sistemi. Dolayısıyla, LF'ye hakim olmak için gereken temel sezgiler, bağımlı tiplerdeki herhangi bir teoride ustalaşmanız gereken sezgilerdir.λπ

On iki, LF'ye dayalı iyi bir teorem kanıtlama sistemidir. Frank Pfenning tarafından sunulan ileri ders notlarına bakmak, LF teorisi ve pratiğine iyi bir giriş niteliğindedir.

Bununla birlikte, ilgi alanınızın tür teorisinin temellerinden ziyade yapıcı matematiğe girip girmediğini öğrenmek için belki de en iyi ilk sistem bu değildir: LF mantıksal çerçeve anlamına gelir ve teorileri aksiyomatize etmek için kullanılan bir sistemdir ve bu kadar sık ​​olarak çalışmaz. doğrudan bir hedef sistem. Martin-Loef'in tip teorisine dayanan bir sistem kullanmak muhtemelen en iyi tanıtımdır -Dave, diğerlerinin yanı sıra Agda'dan bahseder; belki de amacınız buysa, daha iyi bir başlangıç ​​noktasıdır, çünkü böyle bir durumda aritmetik ve indüktif tiplerle daha hızlı ilerleyebilirsiniz. çerçeve.


10

CoC büyük olasılıkla gitmenin yolu. Hemen içine dalış Coq gibi güzel bir öğretici ile ve iş Yazılım Vakıflar (TaPL ve ATTaPL Pierce katılır).

Bağımlı yazmanın pratik yönleri hakkında bir fikir edindikten sonra, teorik kaynaklara geri dönün: o zaman çok daha anlamlı olacaklar.

Özellik listeniz temel olarak doğru geliyor, ancak pratikte nasıl oynadıklarını görmek binlerce özellik noktasına değer.

(Başka, biraz daha gelişmiş bir öğretici olan Adam Chlipala'nın Bağımlı Türlerle Sertifikalı Programlaması )


"sezgisel" belki de buradaki yapışma noktasıdır: CoC / CIC'de sadece bağımlı tiplerden çok daha fazla sezgi var. Bu iyi bir son hedef - aklıma gelen seçim gerçekten Coq ve Twelf arasında - ama "bağımlı yazımda gerçekten sağlam bir kavrama elde etmek için" atılacak en iyi ilk adım olmayabilir.
Charles Stewart

@Charles: Amacınız alındı. Hala pratik açıdan bence bu iyi bir bahis. CoC / CIC’in tam olarak anlaşılması daha karmaşık bir taahhüt olsa da, Coq (ayrıca bunun için iyi temel seviye eğiticilerin varlığı) sadece programlama yönlerini veya sadece temel kanıt yardımcı yönlerini öğrenmeye odaklanmayı kolaylaştırır ( çıkarların dikte eder) bütün karmaşıklıkları kavramadan önce bile. Bunun teorik bir arka plandan gelmeyen biri için "sezgisel" olduğunu düşünüyorum.
Marc Hamann


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.