Curry-Howard ve yapıcı olmayan kanıtlardan programlar


29

Bu bir takip sorusu

Deliller ve programlar arasındaki (veya önermeler ve türler) arasındaki fark nedir?

Hangi program biçiminin yapıcı olmayan (klasik) bir kanıtına karşılık gelir ? ( bazı ilginç karar verilebilir bir ilişki olduğunu varsayalım; örneğin, e- th TM k adımda durmaz .)k T(e,k)¬k T(e,k)Tek

(ps: Ben ziyerete Neel araçlarla ilgili daha fazla bilgi edinmek ilgilenen ediyorum kısmen bu soruyu ilanıyla " Godel-Gentzen çeviri içinde devamıdır geçen dönüşümdür" onun comment .)


2
Bu ders notlarının 2. sayfasında kısmi cevap . Bu biraz şifreli; Daha eksiksiz bir şeyler bulmaya çalışacağım.
Dave Clarke

Cevabımı yazmayı planladığımdan biraz daha uzun sürüyor, çünkü bildiğim şeyleri ispatlamak yerine karar vermeye karar verdim. :)
Neel Krishnaswami

1
En yeni JSL'de bu yazı vardı . Temel nokta, klasik ispatların hesaplamalı içeriğinin, onu nasıl çıkarmayı seçtiğinize büyük ölçüde bağlı olabileceğidir. Henüz onu sindirmedim, ancak oraya fırlatıp atmayacağımı düşündüm.
Mark Reitblatt

Ancak, T'nin geçerliliği olan bir ilişki olduğunu belirttiniz, bu nedenle teklifinizin yapıcı kanıtları var. Klasik mantık, sezgisel mantığın bir alt kümesidir ve T'nin bu alt kümeye ait olduğunu belirterek çağırabilir olarak belirttiniz.
Wren Romano

Wren, ilk başta ben de öyle düşünmüştüm! Ancak P / / P'deki P önermesi, aslında tüm k için nicelenirse soruya örnek teşkil eder ve bu T miktarının belirlenmesi kesinlikle zorunlu değildir.
jbapple

Yanıtlar:


25

Bu ilginç bir soru. Açıkçası kimse her biri için karar veren bir programa sahip bekleyemezsiniz olmadığını k T ( e , k ) Bu Durdurulması Sorununu karar vereceğini olarak, tutar ya da değil. Daha önce de belirtildiği gibi, ispatları hesaplamalı olarak yorumlamanın birkaç yolu vardır: Curry-Howard'ın genişletilmesi, gerçekleştirilebilirlik, diyalektika, vb. Fakat hepsi, bahsettiğiniz teoremi, daha az ya da çok, aşağıdaki şekilde hesaplamalı olarak yorumlardı.ekT(e,k)

Basitlik için eşdeğer klasik teoremi düşünün

(1) ij(¬T(e,j)¬T(e,i))

Bu, belirtilen için belirtilen bir (yapıcı) eşdeğerdir biz karar verebilir k t ( E , K ) tutar veya sadece değerini denetleyerek ¬ T ( e , i ) . Eğer ¬ T ( e , i ) daha sonra tutan I ¬ t ( e , i ) ve bu nedenle ¬ ı t ( e , i ) . Öte yandanikT(e,k)¬T(e,i)¬T(e,i)i¬T(e,i)¬iT(e,i)beklemiyorsa (1) bizdej ( ¬ T ( e , j ) ) var, ki buj T ( e , j ) anlamına gelir.¬T(e,ben)j(¬T(e,j))jT(e,j)

Şimdi, yine her bir e için (1) 'yi hesaplayamayız çünkü Halting Problemini tekrar çözeriz. Yukarıda belirtilen tüm yorumların yapacağı şey eşdeğer teoremine bakmaktır.bene

(2) fi(¬T(e,f(i))¬T(e,i))

Fonksiyon Herbrand işlev denir. Verilen her tanık için bir sayaç örneği j hesaplamaya çalışır i . (1) ve (2) 'nin eşdeğer olduğu açıktır. Bu yapıcıdır Soldan sağa, basitçe almak i ' = i (2), içinde i (1) in assumed tanıktır. Klasik olarak sağdan sola birinin bir nedeni olmalı. Varsayın (1) doğru değildi. Sonra,fjii=ii

(3) ij¬(¬T(e,j)¬T(e,i))

Let bir işlev Buna tanık olmak, yanif

(4) i¬(¬T(e,f(i))¬T(e,i))

Şimdi, (2) ' de alın ve bazı i için ( ¬ T ( e , f ( i ) ) ¬ T ( e , i ) ) yaptık . Fakat i = i (4) ' ü alarak, bunun ihmalini, çelişkiyi elde ederiz. Dolayısıyla (2) (1) anlamına gelmektedir.f=f(¬T(e,f(i))¬T(e,i))ii=i

Yani, biz (1) ve (2) klasik olarak eşdeğerdedir. Ancak ilginç olan şey şu ki (2) şimdi çok basit bir yapıcı tanık var. Bunun almak ise , T ( e , f ( 0 ) ) tutmadığını, daha sonra (2) sonuç doğrudur, çünkü; ya da eğer T ( e , f ( 0 ) ) tutarsa i = 0 alır , çünkü ¬ T ( e , f ( 0 )i=f(0)T(e,f(0))i=0T(e,f(0)) tutmaz ve (2) 'nin öncülü yanlıştır, onu tekrar doğru yapar.¬T(e,f(0))

Bu nedenle, (1) gibi klasik bir teoremi hesaplamada yorumlamanın yolu, bizim durumumuzda (2) yapıcı olarak kanıtlanabilecek (klasik) eşdeğer bir formülasyona bakmaktır.

Yukarıda belirtilen farklı yorumlar, sadece fonksiyonunun açılma biçiminde farklılaşır . Gerçekleştirilebilirlik ve diyalektik yorumlama söz konusu olduğunda, bu açıkça, bir tür olumsuz çeviri (Goedel-Gentzen gibi) ile birleştirildiğinde yorumlama tarafından verilmektedir. İşlev çağrısı-cc ve devamı operatörleri ile Curry-Howard uzantıları söz konusu olduğunda f programı izin verilir aslında doğar (bizim durumumuzda belli bir değer ne "bilmek" i , yani) kullanılacaktır f devamıdır nokta etrafında programın i hesaplanır.ffifi

Bir başka önemli nokta, (1) 'den (2)' ye geçişin "modüler" olmasını istediğiniz, yani (1) 'in (1') ispatlanması için kullanılması durumunda, yorumunun (2) benzer şekilde kullanılması gerektiğidir. (1 ')' in yorumunu ispatlamak için (2 ') deyin. Yukarıda belirtilen tüm yorumlar, Goedel-Gentzen olumsuz çevirileri de dahil olmak üzere bunu yapmaktadır.


8
Hoşgeldiniz! Burada uzman bir kanıt teorisyeni görmek harika.
Neel Krishnaswami

1
Teşekkürler Paulo, cevabınız üzerinde çalıştığım ilgili bir problemde resmin bir bölümünü netleştirdi.
Kaveh

17

Klasik ve sezgisel aritmetiğin aynı derecede tutarlı olduğu oldukça iyi bilinmektedir.

Bunu göstermenin bir yolu, klasik mantığın sezgisel mantığa “olumsuz yerleştirilmesi” iledir. Diyelim ki, klasik birinci dereceden aritmetiğin formülleridir. Şimdi, sezgisel bir mantık formülünü şu şekilde tanımlayabiliriz:ϕ

G()=¬¬G(ϕψ)=¬¬(G(ϕ)G(ψ))G()=¬G(¬ϕ)=¬G(ϕ)G(ϕψ)=¬(¬G(ϕ)¬G(ψ))G(x.ϕ)=x.¬¬G(ϕ)G(x.ϕ)=¬x.¬(G(ϕ))G(P)=¬¬P

O Not ekstra değil-değil sopalarla kopukluklar ve existentials de dışında her yerde olması bir homomorfizması temelde, bu bağlaç ve evrenselleri bunları açmak için Morgan ikiliği de kullanır. (Bunun tam bir Godel-Gentzen çevirisi olmadığına eminim, çünkü bu cevap için hazırladım - temel olarak çifte olumsuzlama + de Morgan dualitesini kullanarak yazdığınız her şey işe yarayacak. Bu çeşitlilik aslında önemli olduğu ortaya çıktı. Klasik mantığın hesaplamalı yorumu; aşağıya bakınız.)G(ϕ)

Birincisi: Bu çevirinin klasik gerçeği koruduğu açıktır, bu nedenle , ϕ klasik olarak konuşuyorken doğrudur .G(ϕ)ϕ

İkincisi: Daha az aşikar, ama yine de durum, ki formüller için fragmanı, sezgisel ve klasik mantıkta provity. Bunu kanıtlamanın yolu, öncelikle bu gramerden hazırlanan formüllere bakmaktır:,,,¬

A,B::=x.A(x)|AB|AB|¬A|¬¬P

Ve sonra ( indükleyerek ) G ( A ) ' nın bir lemması olduğunu kanıtlayabiliriz.A sezgisel olarak türetilebilir. Şimdi, ispatın yapısı üzerinde bir indüksiyon yaparak (örneğin, sıralı hesabı) hesaplanan negatif formüllerin eşitlenebilirliğini gösterebilir ve dışlanan orta kanunu simüle etmek için önceki lemayı kullanabiliriz.G(A)A

Peki, bunu sezgisel olarak nasıl düşünmelisiniz?

  • İlk olarak, ispat-teorik görünüm. Sıralı hesabın kurallarına bakarsanız, klasik ve sezgisel mantığın ciddi şekilde farklılık gösterdiği tek yerin ayrılma ve varoluş kurallarında olduğunu görebilirsiniz. Bu nedenle, bu gerçeği, bu formüllerin bir mantığındaki ispatların diğerinde ispatlara çevrilebileceğini göstermek için kullanıyoruz. Bu, iki yeni bağdaştırıcı ∃ ve ile yapıcı mantığın klasik mantığın bir uzantısı olarak nasıl düşünüleceğini gösterir . "Klasik varoluş" ve "klasik kopukluk" dediğimiz şey, , bağlaç ve olumsuzlamayı içeren kısaltmalardı ve yeni varoluşları tanıtmak için gereken gerçek varoluştan bahsetmek içindi.

  • İkincisi, topolojik bir manzara var. Şimdi, klasik bir mantık modeli (küme ailesi olarak), bir Boole cebiridir (yani, keyfi sendikalar, kesişimler ve tamamlayıcılar altında kapatılan alt kümeler ailesi). Sezgisel mantık modelinin topolojik bir alan olduğu ve önermelerin açık kümeler olarak yorumlandığı ortaya çıktı. Olumsuzlukların yorumlanması, tamamlayıcının iç tarafıdır ve daha sonra, olduğunu göstermek kolaydır; bu , çift olumsuzlamanın bizi her açık ve en küçük pelerin içine gönderdiği anlamına gelir. Boolean cebiri.¬¬¬P=¬P

Şimdi, Curry-Howard sayesinde, sezgisel mantıktaki ispatları işlevsel programlar olarak nasıl yorumlayacağımızı biliyoruz. Öyleyse, "klasik bir ispatın yapıcı içeriği nedir?" Sorusuna olası bir cevap (ancak bir tane değil). takip ediliyor:

Klasik bir ispatın hesaplamalı içeriği, ispatının çevirisinin hesaplamalı içeriği ne olursa olsun (olumsuz çeviriye göre).

Öyleyse çevirisine bakalım . Bu, dışlanan ortadaki yapıcı içeriğin, ¬ P ve ¬ ¬ P'nin tuttuğu - yani çelişki olmadığı durumunun söylenmesi ile aynı olduğunu söylüyor . Dolayısıyla bu anlamda, dışlanan orta kanunun hukuka göre çok fazla hesaplama içeriği yoktur.G(A¬A)=¬(¬G(A)¬¬G(A))¬P¬¬P

Neyin somut olduğunu görmek için yapıcı bir şekilde, olumsuzlamanın olarak tanımlandığını hatırlayın.¬A==A((G(A))((G(A))))

type bot = Void of bot
type 'a not = 'a -> bot

let excluded_middle : ('a not * 'a not not) not = fun (u, k) -> k u 

Yani, A değil ve A olmasanız, istediğiniz çelişkiyi türetmek için ilk ihmali ikinciye aktarabilirsiniz.

Şimdi, devam eden bir geçiş tarzı dönüşümü nedir?

  • Tür bir devamıτ bir tür değeri alan bir şeydir τ ve ondan son bir cevap hesaplar.
  • Continuations are used to model program contexts. That is we might have a term 3+5 evaluating as part of a much larger program C[3+5]. All that stuff around it will take the result of computing 3+5 and compute the final answer.
  • So you can think of a continuation of type τ as a function τα, where α is whatever the answer type is.
  • So if you have a program e of type τ, we can "CPS-convert" it by finding a term of type (τα)α, which will end up passing whatever e would have computed to its continuation. (Basically, this just makes control flow explicit.)
  • But we have to do this hereditarily, so that every subterm of the program has made its continuation explicit.

Now,

  • The negative translation basically hereditarily sends ϕ to ¬¬ϕ.
  • However, while our translation uses negation, it never actually eliminates the false proposition -- so the translation works parametrically in that proposition.
  • In particular, we can replace with any answer type α.
  • So we hereditarily replace ϕ with (ϕα)α.
  • This is a CPS transformation.

I saw "a" CPS transformation, since as I mentioned earlier, there are many negative translations which let you prove this theorem, and each one corresponds to a different CPS trasnformation. In operational terms, each transformation corresponds to a different evaluation order. So there is no unique computational interpretation of classical logic, since you've got choices to make and the difference choices have very different operational characteristics.


3
This is a great answer. It reminded me of Wadler's paper "Call-by-value is dual to call-by-name": homepages.inf.ed.ac.uk/wadler/topics/call-by-need.html, which includes a very memorable anecdote in section 4 to explain the relationship between callCC and the excluded middle.
sclv

8

Yapıcı olmayan kanıtlar konusunda programlar olarak tüm konferanslar var ve bu konuda uzman değilim. Yukarıda, Neel Krishnaswami hazırladığı daha uzun bir cevaba itiraz etti, buradaki çalışmalarından yola çıkarak mükemmel olacak. Bu sadece bir cevabın tadı.

Şu anki devam çağrısı çağrısının türünün , Dışlanmış Orta Yasasını kanıtlamak için kullanılabilecek Peirce yasası olarak bilinen teklife tekabül ettiği ortaya çıkıyor (P,P¬P). Callcc kullanılarak bir LEM programı yazılabilir. Coq'da:

Set Implicit Arguments.

Axiom callcc : forall (A B : Set), ((A -> B) -> A) -> A.

Lemma lem : forall (A B:Set), sum A (A -> B).
Proof.
  intros.
  eapply callcc.
  intros H.
  right.
  intros.
  apply H.
  left.
  assumption.
Defined.

Recursive Extraction lem.

O'Caml kodunu verir:

type ('a, 'b) sum =
  | Inl of 'a
  | Inr of 'b

(** val callcc : (('a1 -> 'a2) -> 'a1) -> 'a1 **)

let callcc =
  failwith "AXIOM TO BE REALIZED"

(** val lem : ('a1, 'a1 -> no) sum **)

let lem =
    callcc (fun h -> Inr (fun h0 -> h (Inl h0)))

Bunu gördüğüm en net tanıtım, Tim Griffin’in “Bir kontrol şekli türü” şeklinde .


3
Şemaya ayıklamayı denemeli ve çıkarma prosedürünün sizi callccŞemaya ayıklaması gerektiğini söylemelisin callcc. O zaman aslında bir şeyler deneyebilirsin.
Andrej Bauer
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.