Keyfi kanıtın dairesel olup olmadığını test etmek?


13

Kanıtları düşünüyordum ve ilginç bir gözlemle karşılaştım. Bu nedenle kanıtlar Curry-Howard İzomorfizmi ile programlara eşdeğerdir ve dairesel kanıtlar sonsuz özyinelemeye karşılık gelir. Ancak durdurma probleminden, genel testlerde keyfi bir programın sonsuza dek geri çekilip çekilmediğinin bilemeyiz biliyoruz. Curry-Howard, bu, bir ispatın dairesel muhakeme kullanıp kullanmadığını belirleyebilecek bir "ispat denetleyicisi" olmadığı anlamına mı geliyor?

Her zaman kanıtların kolay kontrol edilebilir adımlardan (çıkarım kuralları uygulamalarına karşılık gelen) oluşması gerektiğini düşündüm ve tüm adımları kontrol etmek sonucun takip edildiğine dair güven verir. Ama şimdi merak ediyorum: belki böyle bir kanıt denetleyicisi yazmak aslında imkansızdır, çünkü bunun durma problemini çözüp dairesel akıl yürütmeyi tespit etmesinin bir yolu yoktur?

Yanıtlar:


15

İspat sistemlerinin büyük çoğunluğu sonsuz, dairesel ispatlara izin vermez, ancak dilleri Turing yapmayı tamamlayarak yaparlar.

Ya.(aa)a

aaa

Buradaki anahtar, Y-birleştiricisinin bir dilde yerleşik olması, bir aksiyom olarak alınmasıdır. Bu yüzden size sorun yaratmamasını istiyorsanız, bir aksiyom olarak kurtulun!

Çoğu resmi kanıt sistemi, bu nedenle, özyinelemenin iyi bir şekilde kurulmasını gerektirir. Sadece duracaklarını ispat edebilecekleri fonksiyonları kabul ederler. Ve sonuç olarak, durduran, ancak bunu kanıtlayamadıkları bazı programları reddediyorlar.

Coq bunu oldukça sınırlı bir şekilde yapar: sadece özyinelemeli işlevlerin, özyinelemeli çağrıların yalnızca bu argümanın sadece daha küçük sürümlerini kullandığı bir argümana sahip olması gerekir. Agda benzer bir şey yapar, ancak birkaç programı daha kabul etmek için biraz daha süslü bir kontrolle.


1
Coq, başka türlü kanıtlayabileceğiniz bazı meşru teoremleri ekarte eder mi? Yoksa bütünlük denetleyicisinin çok muhafazakar olduğu durumlar için her zaman geçici çözümler var mı? (Cevabın bağımlı tip teorisine dayanan diğer kanıt asistanları için aynı olduğunu varsayıyorum?)
stovetop

1
@boyers FWIW, Coq'da , bütünlük denetleyicisi başarısız olursa bazı işlevlerin toplam olduğunu kanıtlamak için Functionveya Program Fixpointyapıları kullanabilir . Bir basit örnek listelerinde birleştirme-sıralama fonksiyonudur. Birinin (uzunluk> 1) listeleri kesinlikle daha küçük alt listelere böldüğümüzü manuel olarak kanıtlamamız gerekir.
Anton Trunov

@boyers Evet, Gödel'in ilk teoremi ile Coq'ta ispatlayamayacağınız şeyler olmalı. Pratikte onlarla karşılaşmak nadirdir, ancak her zaman çapraz bir argüman vardır: Coq, Coq'un kendisini kanıtlayamaz, sadece bir alt kümeyi (tüm özellikleri içeren çok büyük bir alt küme, zihin, ancak ne kadar özyineleme olduğunu daha düşük bir sınırla kanıtlayabilir. işleyebilir). Coq'un teorisinin Peano aksiyomlarına ve belirli bir büyük ordinalin varlığına (ve daha da büyük bir ordinalin sığmayacağına dair kanıtlar) eşdeğer olduğunu okuduğumu hatırlıyorum, ancak şimdi referansı bulamıyorum.
Gilles 'SO- kötü olmayı bırak'

@AntonTrunov Bu bağlamda Programve benzerleri kırmızı bir ringa balığıdır. Teoriyi değiştirmezler. Yaptıkları şey, bir kanıtta bir ölçü kullanmak için sözdizimsel şekerdir: ilgilendiğiniz nesnenin küçüldüğünü düşünmek yerine, bir dolaylılık düzeyi eklersiniz: başka bir nesnenin daha küçük (örneğin bir boyut) olduğunu hesaplayın ve kanıtlayın küçülür. WfKütüphaneye bakın .
Gilles 'SO- kötü olmayı bırak

@Gilles, bağlamın pratik (somut) tarafla ilgili olduğunu varsaydım, Coq'un buluşsal yöntemlerinin başarısız olması gibi ... Lütfen bahsettiğiniz kağıdı bulmayı deneyebilir misiniz? Bir bağlantı çok takdir edilecektir.
Anton Trunov
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.