Lambda Küpü'nün diğer noktalarından İnşaatlar Hesapını nasıl alıyorsunuz?


21

CoC'un Lambda Küpünün üç boyutunun da doruk noktası olduğu söyleniyor. Bu bana hiç belli değil. Sanırım bireysel boyutları anladım ve her ikisinin kombinasyonu göreceli olarak basit bir birliğe yol açıyor gibi görünüyor (belki bir şeyleri özlüyorumdur?). Ama CoC'ye baktığımda, üçünün de kombinasyonu gibi bakmak yerine, tamamen farklı bir şeye benziyor. Tür, Pervane ve küçük / büyük tipler hangi boyutlardan geliyor? Bağımlı ürünler nereye kayboldu? Ve neden türler ve programlar yerine teklifler ve deliller üzerinde duruluyor? Türlere ve programlara odaklanan bir eşdeğer var mı?

Düzenleme: Açık değilse, CoC'nin Lambda Küpü boyutlarının basit birleşimiyle nasıl eşdeğer olduğu konusunda bir açıklama istiyorum. Ve dışarıda çalışabileceğim bir yerde (bunların kanıtları ve önerileri değil, programları ve türleri olan) üçünün gerçek bir birliği var mı? Bu, herhangi bir güncel cevaba değil, soru hakkındaki yorumlara cevaben gelir.


1
En azından bu bir olmalıdır soft-question. Burada asıl teknik bir soru görmüyorum. Belki de ne sorduğunuzu biraz daha spesifik olabilir?
Andrej Bauer

3
@AndrejBauer Soru değil mi: CoC'nin Barendregt-cube / PTS sunumuyla Coquand & Huet'in orijinal sunum arasındaki ilişki nedir?
Martin Berger,

1
@AndrejBauer: Soru aynı zamanda CoC'un sunumundaki (her iki kılıkta) farklılık ve uygulamadaki belirli özelliklerin vurgulanması hakkında sorular soruyor gibi görünüyor. CoTS uygulamasının diğerlerini de vurguladığı gibi, PTS odaklı CoC sürümünün bazı özellikleri önemli olarak vurguladığı doğrudur. Yumuşak soru etiketi olması gerektiğini kabul ediyorum.
Jacques Carette

1
Buna cevap verebilecek birini gördüğüme sevindim.
Andrej Bauer

Yanıtlar:


28

Birincisi, cody'nin noktalarından birini yinelemek için, Endüktif Yapılar Hesabı (Coq'un çekirdeğinin dayandığı), Yapılar Hesabı'ndan çok farklıdır. Martin-Löf tipi teorilerde evrenlerle başlayan ve ardından tip hiyerarşisinin dibine bir sıralama Prop eklenmesi en iyisidir. Bu, F-omega'nın bağımlı bir sürümü olarak en iyi düşünilen orijinal CoC'den çok farklı bir canavar. (Örneğin, CiC'nin set-teorik modelleri vardır ve CoC yoktur.)

Bununla birlikte, (CoC'nin bir üyesi olduğu) lambda küpü, tipik olarak yazım kurallarının sayısında ekonomik nedenlerden dolayı saf tip bir sistem olarak sunulur. Türleri, türleri ve terimleri aynı sözdizimsel kategorideki öğeler olarak ele alarak, daha az sayıda kural yazabilir ve kanıtlarınız da biraz daha fazla gereksiz olur.

Ancak, anlamak için, farklı kategorileri açıkça ayırmak faydalı olabilir. Üç sözdizimsel kategori, türler (meta değişkenler arasında değişmektedir k), türler (meta değişkenler arasında değişiyordu A) ve terimler (meta değişkenler arasında değişiyordu e) tanımlayabiliriz . Daha sonra, sekiz sistemin tümü, üç seviyenin her birinde izin verilen şeylerin varyasyonu olarak anlaşılabilir.

λ → (Basitçe yazılı lambda matematiği)

 k ::= ∗
 A ::= p | A → B
 e ::= x | λx:A.e | e e

Bu temel tipte lambda matematiğidir. Tek bir tür vardır, bu bir türdür. Tiplerin kendileri atomik tipler pve fonksiyon tipleridir A → B. Terimler değişkenler, soyutlamalar veya uygulamalardır.

λω_ (STLC + daha iyi türdeki operatörler)

 k ::= ∗ | k → k
 A ::= a | p | A → B | λa:k.A | A B
 e ::= x | λx:A.e | e e

STLC sadece terim düzeyinde soyutlamaya izin verir. Onu, tür düzeyinde eklersek, o zaman tür k → kdüzeyinde işlevlerin türünü ve soyutlama λa:k.Ave uygulama türünü de içeren yeni bir tür ekleriz A B. Yani şimdi polimorfizmimiz yok, fakat tip operatörlerimiz var.

Hafıza hizmet ederse, bu sistem STLC'den daha fazla hesaplama gücüne sahip değildir; sadece size türleri kısaltmak için yeteneği verir.

λ2 (F Sistemi)

 k ::= ∗
 A ::= a | p | A → B  | ∀a:k. A 
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Tip operatörleri eklemek yerine, polimorfizm ekleyebilirdik. Tip düzeyinde, ∀a:k. Aeski olan bir polimorfik tip olanı ekleriz ve terim düzeyinde, tipler Λa:k. eve tip uygulaması üzerine soyutlama ekleriz e [A].

Bu sistem STLC'den çok daha güçlü - ikinci dereceden aritmetik kadar güçlü.

λω (Sistem F-omega)

 k ::= ∗ | k → k 
 A ::= a | p | A → B  | ∀a:k. A | λa:k.A | A B
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Hem tip operatörleri hem de polimorfizmimiz varsa, F-omega alırız. Bu sistem, en modern işlevsel dillerin (ML ve Haskell gibi) çekirdek türü teorisidir. Aynı zamanda Sistem F'den çok daha güçlüdür - daha yüksek dereceli aritmetik ile mukavemet bakımından eşdeğerdir.

λP (LF)

 k ::= ∗ | Πx:A. k 
 A ::= a | p | Πx:A. B | Λx:A.B | A [e]
 e ::= x | λx:A.e | e e

Polimorfizm yerine basitçe yazılmış lambda hesabından bağımlılık yönünde gidebilirdik. İşlev türünün argümanının dönüş türünde kullanılmasına izin vermesine izin verdiyseniz (yani, Πx:A. B(x)yerine yazın A → B), o zaman λP olur. Bunu gerçekten yararlı hale getirmek için, tür kümesini argüman olarak alan bir tür tür işleçleri ile genişletmek zorundayız Πx:A. kve bu nedenle tür düzeyinde de buna uygun bir soyutlama Λx:A.Bve uygulama eklemeliyiz A [e].

Bu sisteme bazen LF veya Edinburgh Mantıksal Çerçevesi denir.

Basit yazılı lambda matematiği ile aynı hesaplama gücüne sahiptir.

λP2 (özel ad yok)

 k ::= ∗ | Πx:A. k 
 A ::= a | p | Πx:A. B | ∀a:k.A | Λx:A.B | A [e]
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Ayrıca λP2 elde etmek için λP'ye polimorfizm de ekleyebiliriz. Bu sistem sık kullanılmaz, bu yüzden belirli bir isme sahip değildir. (Kullanılmış olan Herman Geuvers'ın İndüksiyonu olduğunu okuduğum bir makale , İkinci Dereceye Bağlı Tip Teorisinde Türetilmez )

Bu sistem Sistem F ile aynı güce sahiptir.

λPω_ (özel ad yok)

 k ::= ∗ | Πx:A. k | Πa:k. k'
 A ::= a | p | Πx:A. B | Λx:A.B | A [e] | λa:k.A | A B 
 e ::= x | λx:A.e | e e 

ΛPω_ almak için λP'ye tip operatörleri de ekleyebiliriz. Bu, Πa:k. k'tip operatörleri için bir tür eklemeyi ve karşılık gelen tip düzeyinde soyutlamayı Λx:A.Bve uygulamayı içerir A [e].

Yine STLC üzerinde hesaplama gücünde bir sıçrama olmadığından, bu sistem aynı zamanda mantıklı bir çerçeve için iyi bir temel sağlamalıdır, ancak kimse yapmadı.

λPω (Yapıların Hesabı)

 k ::= ∗ | Πx:A. k | Πa:k. k'
 A ::= a | p | Πx:A. B | ∀a:k.A | Λx:A.B | A [e] | λa:k.A | A B 
 e ::= x | λx:A.e | e e | Λa:k. e | e [A]

Son olarak, λPω_ alarak ve eski ∀a:k.Ave terim düzeyinde soyutlama Λa:k. eve e [A]bunun için bir polimorfik tip ekleyerek, Yapıların Hesabı olan λPω'ya ulaşıyoruz .

Bu sistemin tipleri F-omega'dan çok daha anlamlı, ancak aynı hesaplama gücüne sahip.


3
Elbette, teknik olarak CoC (aksiyomsuz) en az CiC kadar set teorik modellere sahiptir, sadece doğal sayılar için aksiyomlu CoC olan istediğimiz durumun modellenmesinde çok iyi değillerdir (örneğin, ). 01
cody

2
Ben de gerçekten ait conservativity üzerinde bir başvuru sevinirim STLC bitti. Bu açık değil gibi görünüyor. λω_
cody

3
@cody: Bir referans bilmiyorum - Kevin Watkins bir kanıtını beyaz tahtaya çizdi! Buradaki fikir, λω_ ile yazılmış bir terim almanız, tüm türleri beta-normal eta-uzun formuna koymanız ve ardından orijinal programdaki her farklı normal form için taze bir atomik tip sunarak STLC'ye gömmenizdir. Öyleyse, azaltma dizilerinin birebir sıralanması gerektiği açıktır.
Neel Krishnaswami

1
@ user833970, türetilebilir olmadığı gerçeği , aslında bahsettiğiniz diğer gerçeklerden çok daha basittir ve n a t kodlamasıyla hiçbir ilgisi yoktur : CC'nin kanıtı alakasız bir modelinin bulunmasından kaynaklanmaktadır. hangi tiplerde en fazla bir element vardır . Birden fazla öğeye sahip bir türün bulunduğu bir mantık istiyorsanız, bu kötü bir özelliktir (say, nat). Bir referans: Miquel ve Werner tarafından , CC'nin bu kadar basit olmayan kanıtsız modeli . 01nbirt
cody

1
Fw'nin F Sisteminden çok daha güçlü olduğunu söylüyorsunuz. Bunun için bir referansınız var mı? Özellikle, doğal sayıların Fw cinsinden toplamı kanıtlanabilir ancak F cinsinden bir işlevi var mı?
Thorsten Altenkirch

21

Sık sık denemek ve her boyutunun özetlemek istedim ben bunu bir atış vereceğim böylece, temsil ettikleri -cube ve ne.λ

Ancak önce, muhtemelen çeşitli sorunları çözmeyi denemelisiniz. Coq interaktif teorem ispatı, bazen sevgiyle evrenlerle endüktif yapıların hesabı olarak adlandırılan temel bir tip teorisine dayanır . Bunun sadece "Yapıların Hesabı" ndan çok daha çılgınca olduğunu ve gerçekten de orada sadece CoC'den çok daha fazla şey olduğunu not edersiniz. Özellikle, tam olarak hangi özelliklerin CoC'da uygun olduğu konusunda kafanızın karıştığını düşünüyorum. Özellikle, Set / Prop ayrımı ve evrenler CoC'de görünmez.

Burada Saf Tip Sistemlere genel bir bakış vermeyeceğim, ancak önemli kural ( CoC gibi işlevsel PTS'ler için)

Γbir:sΓ,x:birB:kΓΠx:bir.B : k (s,k)R,

s,kS(s,k)R,S

SR,Πx:bir.B

S

{*,}
R,={(*,*),(,),(,*),(*,)}

Ve böylece 4 farklı amaca karşılık gelen 4 kuralımız var:

  • (*,*)

  • (,)

  • (,*)

  • (*,)

Bunların her birini daha ayrıntılı olarak açıklayacağım.


birBΠx:bir.BxB

*nbirtbOOlx=yxy*

lbenstlbenst:**lbenstnbirt,lbenstbOOl**(,)

Πt:*. tt
λ(t:*)(x:t).xΠt:*._(,*)tt(*,*)

birB: =Πt:*. (birBt)t
birB: =Πt:*. (birt)(Bt)t
: =Πt:*. t
: =Πt:*. tt
x:bir. P(x): =Πt:*. (Πy:bir. P(y)t)t
(*,)

**(,*)

(,)

Πc:**.  c nbirtc nbirt

0=1

= : nbirtnbirt*
= : Πt:*. tt*
nbirtnbirt*(*,)

benben=1,2,3,...ben:ben+1

(ben,ben)

Γbir:benΓbir:j benj

Bu ekstra türlü ve kurallar ile, bir şey elde değil bir PTS, ama bir şey yakın. Bu (neredeyse) Coq'un temeline yakın olan Genişletilmiş İnşaatlar Hesabıdır. Buradaki en büyük eksik parça burada tartışmayacağım endüktif tiplerdir.

Düzenleme: Programlama dillerinin çeşitli özelliklerini, fonksiyonel bir programlama dilinin orta düzeyde gösterilmesi için iyi bir aday olan bir PTS'yi tanımlayarak, PTS'ler çerçevesinde tanımlayan çok hoş bir referans var:

Henk: Yazılı bir Ara Dil , SP Jones & E. Meijer.


2
Tip ve Programlama Dillerinde İleri Konular, S2.6 ve S2.7 .
Kaveh

2
BTW "Tip aileler" genellikle daha iyi türler olarak da adlandırılır.
Martin Berger,

1
PTS 20 yıl önce iyi bir fikirdi ama o zamandan beri işler yolunda gitti.
Thorsten Altenkirch

Dışsallığa gerek yok @ThorstenAltenkirch, Thorsten! PTS'leri dahil etmeyi düşünecek bazı eğlenceli şeyler var, örneğin Bernardy'nin içselleştirilmiş parametriklik üzerine yaptığı çalışmalar akla geliyor.
cody

@cody Dışlayıcılık hedeflenmedi, ancak sözdizimsel tip teorisi geçmişinde sıkışıp kalmamalıyız. Bernardi'nin çalışması mükemmel ve evren kullanarak daha iyi yapılabilir.
Thorsten Altenkirch
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.