Bir dili (ve onun tip sistemini) kendi terimleriyle ilgili teoremleri kanıtlayabilen nedir?


12

Son zamanlarda Aaron'un kendi terimleri hakkında matematiksel teoremleri kanıtlayabilen minimalist bir programlama dili olan Cedille-Core'u uygulamaya çalıştım . Ayrıca, λ kodlu veri türleri için indüksiyonunu kanıtladım, bu da uzantılarının neden gerekli olacağını daha net hale getirdi.

Daha az, hala bu uzantıların nereden geldiğini merak ediyorum. Neden onlar onlar? Onları ne haklı çıkarır? Örneğin, özyineleme gibi bazı uzantıların dili bir kanıt sistemi olarak mahvettiğini biliyorum. CoC'yi diğer ilkellerle de genişletmeye karar verseydim, nasıl haklı çıkarırdım? Normalleşmenin bir kanıtının gerekli olduğunu anlıyorum, ancak bu ilkellerin "mantıklı" olduğunu kanıtlamaz.

Kısacası, bir dili (ve tür sistemini) kendi terimleriyle ilgili teoremleri ispatlayabilen bir sistem olarak nitelendiren nedir?


Bu soruyla ilgili bir blog okudum, ama şimdi bulamıyorum :( "Sistem T yeter!"
Cümlesini

2
Bulundu: queuea9.wordpress.com/2010/01/17/… Aslında Aaron Stump tarafından yazılmış, bu yüzden zaten biliyor olabilirsiniz.
Labbekak

Korumasız özyineleme dili ispat sistemi olarak "mahveder", korumalı özyineleme yapmaz. İlkellerin mantıklı olduğunu kanıtlamak için bir model inşa ettiğinizi söyleyebilirim. Ve kendi terimleriyle ilgili teoremleri kanıtlamak için, kanıtladığınız şeylerin terimleriniz hakkında konuşabilmesi için bir çeşit Curry-Howard izomorfizması ve bağımlı türe ihtiyacı vardır.
xavierm02

Yanıtlar:


5

[Kendini tanıma bunu izler, ancak bunun alakalı olduğunu düşünüyorum.]

Bu sorulara birkaç olası yaklaşım vardır. Doktora tezim sırasında ML benzeri bir dil bağlamında araştırdığım yollardan biri, yazı sistemini birinci dereceden bir katmanla genişletmektir, böylece dil terimleri temel mantığın nesneleri olarak manipüle edilebilir. . Tabii ki, gözlemlenecek bir şey olması için bazı tahminler de eklemeniz gerekir. Sistemimde bu tahminler terim denklikleridir. Özellikle, ve dilin terimleriyse, türünde yalnızca ve gerçekten (gözlemsel olarak) eşdeğerse yerleşim yer alır . gibi özellikleri kodlamak için birinci dereceden niceliku t u t u v , ( λ x . x )tututuv,(λx.x)vv ve bunlarda yaşayan programlar yapılarak kanıtlanmıştır.

Elbette denklikleri de kabul edebilirsiniz ve birkaç farklı niceleyici formu vardır (yazılan / türlenmemiş, evrensel / varoluşsal). Bu mekanizma herhangi bir program hakkında akıl yürütmek için kullanılabilir (programın sonlandığını veya hatta yazıldığını kanıtlamaları gerekmez). Tek kısıtlama, kanıt olarak kullanılan programların sistem tarafından sonlandığını kanıtlanması gerektiğidir (keyfi genel özyineleme tutarsızlığa yol açar).

Şuna bir göz atmak istiyorsanız birkaç referans:

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.