Martin-Löf tipi teoriye giriş


36

Per Martin-Löfs'ün tip teorisi hakkındaki fikirlerine en iyi giriş hangisidir? Oregon PL yaz okulundan bazı derslere baktım, ancak hala şu soru karşısında şaşkınım:

Bir tür nedir?

Bir setin ne olduğunu biliyorum, çünkü onları her zamanki ZF aksiyomlarıyla tanımlayabiliyorsunuz ve çok sezgisel bir somut modeli var; sadece eşyalarla dolu bir sepet düşünün. Ancak, henüz bir türün makul bir tanımını görmedim ve bu fikri kukla için damlatacak bir kaynak olup olmadığını merak ediyordum.


4
Hott kitap türleri ve setleri, belki de bu irade yardıma, Kısmına 1.1 bkz karşılaştırır bir giriş vardır homotopytypetheory.org/book . Fakat daha da önemlisi, kafanıza doğrudan doğru tip fikir fikrini yerleştirmemizi istiyorsunuz. Ancak, setler için, "gerçekte ne olduklarını" bilmekte ısrar etmeden, aksiyomlar tarafından tanımlanmalarını sağlamaktan mutluluk duyuyorsunuz. Tipler, tipler için çıkarım kuralları ile tanımlanmaktadır. Ve çok sezgisel bir somut modeli var, biliyorsunuz, Lego bloklarıyla dolu bir basked. Onlardan yapabilecekleriniz, türündedir.
Andrej Bauer

Beynimi set teorisinden uzaklaştırmanın en büyük sorun olduğunu düşünüyorum. Ancak, Lego analojisinin ne kadar iyi olduğundan emin değilim. Bloklar nelerdir? Eğer x: A ve y: A, tipik olarak A, özyinelemeli bir ok türü olmadığı sürece onlardan hiçbir şey yapamam. Elbette, üçüncü türden bir şey inşa etmek için farklı tipte şeyleri sık sık karıştırabilirim ...
dst

4
Lego blokları tip yapıcılardır. Bu yüzden gelen örneğin ve y : Bir kurup ( x , y ) ve ( x , x ) ve i , n L ( x ) , ve R , e l f x ve λ z : A . x . Ayrıca yeni türler de oluşturabilirsiniz, örneğin I d ( x , y ) ve zx:Ay:A(x,y)(x,x)inl(x)relfxλz:A.xId(x,y)vb. İnsanların türleri hakkında farklı fikirleri vardır. Kümeler bunlardan biri ama kaba. Tipler aynı zamanda topolojik uzaylar gibidir. Ayrıca programlamadaki yapısal veri gibidirler. Ayrıcaω-groupoids gibidirler. Bu onun güzelliği, olasılıkların zenginliği. Bir olasılık seç ve onunla koş. z:AId(x,z)ω
Andrej Bauer

Yanıtlar:


31

Bir tür, hesaplamaların bir özelliğidir. Kolonun sağ tarafına yazdığın şey bu.

Bu konuda ayrıntılı olarak anlatayım. Terminolojinin tamamen standart olmadığını unutmayın: Bazı makaleler veya kitaplar belirli kavramlar için farklı kelimeler kullanabilir.

MN

  • xy
  • λx.M
  • uygulama, arity 2, yazılıMN

Bir terim, sözdizimsel bir yapıdır. Bir anlambilim, terimlerle hesaplamalarla ilgilidir. Semantik birçok türü en yaygın olarak bulunmaktadır operasyonel (terimler diğer şartlar dönüştürülebilir açıklayan) ya da denotasyonel (genellikle bir dizi teori inşa bir boşluk, bir transformasyon ile terimleri tarif eder).

Bir tür , terimlerin bir özelliğidir. Bir tür sistemi Türlenmemiş hesabı için terimler olan türleri sahip olan tarif etmektedir. Matematiksel olarak, özünde, bir tür sistemi terimler ve türler arasındaki ilişkidir. Daha doğru olarak, bir tür sistemi, bağlamlar tarafından indekslenen bu tür ilişkilerin ailesidir - tipik olarak, bir bağlam en azından değişkenler için tipler sağlar (yani bir bağlam, değişkenlerden türlere kadar kısmi bir fonksiyondur), tüm serbest değişkenleri için bir tür sağlayan bağlamlarda. Bir tür ne tür bir matematiksel nesne tür sistemine bağlıdır.

Bazı tip sistemler, kesişim, birlik ve kavrama gibi küme teorisi kavramlarını kullanarak, kümelerle türlerle tanımlanır. Bunun bilinen matematiksel temellere dayanma avantajı vardır. Bu yaklaşımın bir sınırlaması, eşdeğer tipler hakkında muhakeme yapmasına izin vermemesidir.

τ

  • AB
  • τ0τ1

Basitçe yazılan lambda hesabını tanımlayan terimler ve türler arasındaki ilişki genellikle yazım kuralları ile tanımlanır . Yazma kuralları, bir tür sistemi tanımlamanın tek yolu değildir, ancak ortaktır. Kompozisyon tipi sistemler için iyi çalışırlar, yani bir terimin türlerinin subter türlerinden yapıldığı tip sistemler. Yazma kuralları bir tür sistemi indüktif olarak tanımlar: her bir yazma kuralı, formüllerin yatay kuralın üstünde herhangi bir örneği için kuralın altındaki formülün de geçerli olduğunu belirten bir aksiyomdur. Bkz yazarak kurallarını okumak için nasıl? daha fazla ayrıntı için. Turing tam tür yazılı lambda matematiği var mı? aynı zamanda ilgi de olabilir.

ΓM:τMτΓ

x:τΓΓx:τ(Γ)Γ,x:τ0M:τ1Γλx.M:τ0τ1(I)ΓM:τ0τ1ΓN:τ0ΓMN:τ1(E)

ABλx.λy.xy(AB)AB(I)(E)(Γ)

Basitçe yazılı lambda hesabının türlerini set olarak yorumlamak mümkündür. Bu, türler için bir terimsel anlambilim vermek anlamına gelir. Temel terimler için iyi bir terimbilimsel anlambilim, her bir terim için, her türden bir terimin bir üyesini atayacaktır.

Sezgisel tip teorisi (aynı zamanda Martin-Löf tip teorisi olarak da bilinir), tip hesaplarında çok daha fazla elemana sahip olduğu için basitçe yazılan lambda matematiğinden daha karmaşıktır (ve aynı zamanda temel terimlere birkaç sabit ekler). Ancak temel ilkeler aynıdır. Martin-Löf tipi teorisinin önemli bir özelliği, türlerin temel terimleri içerebilmesidir ( bağımlı türlerdir ): temel terimler evreni ve türlerin evreni aynıdır, ancak basit sözdizimsel kurallarla ayırt edilebilirler (genellikle sıralama, yani yeniden yazma teorisinde terimlere göre sıralama yapma).

:

Çoğu tip sisteme, onları matematiğin temelleri ile ilişkilendirmek için set-teorik anlambilim verilmiştir. Programlama dilleri ve matematiğin temelleri arasında nasıl bir ilişki vardır? ve İşlev türlerinin anlamsal ve sözdizimsel görüşleri arasındaki fark nedir? burada ilgi çekici olabilir. Tip teorisini matematiğin bir temeli olarak kullanma konusunda da çalışmalar yapılmıştır - set teorisi tarihi temeldir, ancak tek olası seçenek bu değildir. Homotopi tipi teorisi bu yönde önemli bir dönüm noktasıdır: Homotopi teorisi açısından kasıtlı sezgisel tip teorisinin anlamını tanımlar ve bu çerçevede küme teorisini kurar .

Benjamin Pierce'in Kitapları Türleri ve Programlama Dilleri ve İleri Düzeyleri Türlerinde ve Programlama Dillerinde Konular'ı öneririm . Resmi matematiksel akıl yürütmeye temel aşinalıktan başka bir önkoşulu olmayan herhangi bir lisans öğrencisine erişilebilirler. TAPL birçok tip sistem tanımlamaktadır; bağımlı türler ATTAPL'ın 2. bölümünün konusudur.


TAPL için +1. Bu kitabı okumanın türleri hakkında kendime biraz ders verebildim.
Guy Coder

ATTAPL'ın bağımlı türler hakkında bilgi edinmek için iyi bir başlangıç ​​noktası olduğundan emin değilim.
Martin Berger

15

Belki de set teorisinden gelen ve set teorisinin ve Martin-Löf tipi teorisinin nasıl farklılık gösterdiğiyle boğuşan biri için daha iyi bir soru setlerin ne olduğunu yansıtmaktır. Küme teorisi ve matematiğin temelleri hakkındaki düşünceleriniz, kabul ettiğiniz sorgulanmamış küme-teorik varsayımlardan etkilenecektir. Ne yazık ki Martin-Löf tipi teorisi bu varsayımları paylaşmaz.

Geleneksel anlayışın aksine, set teorisi iki ilişki teorisidir : eşitlik ve set üyeliği , sadece set üyeliği değil. Ve bu iki ilişki büyük ölçüde farklı aşamalarda inşa edilmiştir.

  1. Keyfi şeylerin eşitliği teorisi olarak birinci dereceden mantığı oluşturuyoruz (sadece kümeler değil). Birinci derece mantık, gayrı resmi bir ispat kavramını kullanır . Kavram kanıtı tek başına birinci dereceden mantıkta resmen ifade edilemez.

  2. Ardından, kümeler teorisi ve küme üyeliği olarak birinci dereceden mantığın üstüne küme teorisi kurarız.

  3. Küme üyeliği ve eşitlik daha sonra iki kümenin aynı üyeye sahip olduklarında tam olarak eşit olduğunu söyleyen uzatma aksiyomuyla ilişkilidir.

  4. Son olarak, (1) 'den gayrı resmi ispat kavramı, bazı kümeler (prova ağaçları) olarak rasyon sonrası bir eskileşme elde eder.

Gerçekleşmesi gereken önemli olan şey, ispat nosyonunun , bu nedenle, ikinci sınıf bir vatandaş olarak belirlenmiş bir teori olduğudur.

Bu kurulum, geleneksel küçük / orta ölçekli matematik için gayet iyi çalışır, ancak şu anda tüm sonlu basit grupların sınıflandırılması veya önemsiz olmayan bilgisayar programlarının doğrulanması gibi büyük çaplı kanıtlarla uğraştığımız için, birbirinden ayrılır, çünkü Kolay mekanikleşmeye yol açmaz.

TT

λ


Bu son derece yararlı oldu. Yapıcı matematiğe giren herkesin en büyük sorunlarından birinin çoğunu öğrenmek olduğunu düşünüyorum.
dst

Katılıyorum. Birisinin kabul edilmeyen set-teorik varsayımlarını öğrenmesi biraz zaman alır. Çok fazla Agda programlama yapmak bana yardımcı oldu ve bir bilgisayar bilimi geçmişinden geliyorsanız sizin için de işe yarayabilir.
Martin Berger

10

Martin-Löf tipi teoriye giden kolay yolların farkında değilim. Sanırım aşağıdaki tanıtım olarak görev yapabilir.

Bununla birlikte, "tür nedir" sorusundan şaşırıyorsanız, önce çok daha basit tür teorilerine girmenizi öneririm. Yazılan herhangi bir programlama dili olacaktır, ancak örneğin Ocaml, F # ve Haskell özellikle faydalı olacaktır. Biraz basitleştirmek gerekirse, Martin-Löf tipi teorisinin yukarıda belirtilen dillerin arkasındaki tipleri iki şekilde uzattığı söylenebilir:

  1. İle bağımlı tipler . Bunları çeşitli programlama dillerinde tamer formunda bulabilirsiniz.
  2. Kimlik tipleri ile. Bu, Martin-Löf’ün önceki bağımlı tip teoriler üzerindeki temel yeniliğidir.

Bağımlı türlerin arkasındaki anahtar fikir basit: türler programlar tarafından parametrelendirilebilir. Yukarıda bahsedilenler gibi daha geleneksel tipleme sistemlerinde bu mümkün değildir (biraz sadeleştirme). Basit olmakla birlikte, sonuçlar derin: bağımlı tipler, Curry-Howard yazışmalarını birinci dereceden yapıcı mantığa yükseltir. Kimlik tipleri biraz sıra dışı. Haskell gibi bir dille rahatınız varsa , Martin-Löf tip teorisi ile temel olarak Haskell olan Agda'yı öğrenebilirsiniz . Agda'nın bir programcı için öğrenmenin, yukarıda belirtilen kitapları okumaktan çok daha kolay olduğunu düşünüyorum.


Aslında Haskell'i tanıyorum. Benim sorunum, herhangi bir öğreticinin size sadece türleri nasıl tanımlayacağınızı söyleyeceği, fakat gerçekte ne olduklarını söyleyemeyeceğidir. Bu, tüm verilerinize ekli bazı sihirli etiketler gibi görünüyor, bu nedenle tür denetleyicisi, çok biçimli bir işlevin doğru sürümünü seçebilir ve işlerin anlam ifade etmeyen şekillerde karışık olmadığını kontrol edebilir. Hala bir türün ne olduğunu soruyu açık bırakıyorlar. Özellikle bundan şaşırdım, çünkü Voevodsky & co tüm matematiği buna dayandırmaya çalışıyor, ancak henüz kesin bir tanım görmedim.
dst

2
ΓM:αMαMMΓ

Tipler Haskell'de, Martin-Löf tipi teoride ve Voevodsky'nin homotopi tipi teorisinde çok kesin bir şekilde tanımlanmıştır. Hiçbir belirsizlik yoktur. Örneğin, Ek A.2, homotopi tipi teorinin tüm terimleri ve türleri için bir ispat sistemi sunar. Daha fazla titizlik görmek istiyorsanız, Coq veya Agda formalizasyonlarına bakabilirsiniz .
Martin Berger

2
Belki de, bu türlerin tanımlandıklarından başka bir özü olmadığını yutmanız gerekir. Bu, örneğin Setlerden farklı değildir, set teorisinin aksiyomları tarafından verilir. (Bu tam olarak doğru değildir, ancak yine de anlamak önemlidir.)
Martin Berger
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.