Lambda hesabı, sezgisel hesaplanabilirlik kavramını tam olarak nasıl yakalar?


12

Başımı hesabının ne, neden ve nasıl sarmaya çalışıyordum ama "neden çalışıyor?"λ

"Sezgisel" Turing Machines (TM) hesaplanabilirlik modelini alıyorum. Ama bu soyutlama beni şaşırttı.λ

Diyelim ki TM'ler yok - o zaman hesabının bu hesaplanabilirlik kavramını yakalama yeteneği hakkında nasıl "sezgisel olarak" ikna edilebilir ? Her şey için bir grup fonksiyona sahip olmaları ve bunların uyumlulukları hesaplanabilirliği nasıl ima eder? Burada ne eksik? Bu konuda Alonzo Church'un makalesini okudum ama yine de kafam karıştı ve daha "aşağılanmış" bir anlayış arıyorum.λ


Yeniden yazma sistemleri ve gramerlerle aynı sorunlarınız mı var? Lambda hesabında temel işlemler oldukça basittir: fonksiyon soyutlama, ikame ile fonksiyon uygulaması ve hesaplama beta normalleştirmedir. Başka bir deyişle, bununla ilgili probleminizin makul bir hesaplama modeli olduğunu görmüyorum.
Kaveh

2
Hiç kimse lambda hesabı tanımlanabilir fonksiyonların hesaplanabilir olduğundan şüphe etmedim. Tarihsel olarak soru, bunların sezgisel olarak hesaplanabilen tek fonksiyonlar olup olmadığıydı; bu, sorduğunuzdan tamamen farklı bir konudur.
Kaveh

1
Yararlı bulduğum bir şey, Raymond M Smullyan'ın "Sihirli bir ormandaki kuşlarla işlevlerini değiştiren (ve iyi okunan bir kitaptır)" To Mock a Mockbird "adlı kitabıydı
dspyz

1
Smullyans kitabı kombinatorik mantık hakkında
Trismegistos

Yanıtlar:


21

λ

λλ


4
Dediğiniz gibi Firewalking eğlenceli ise, o zaman ben gerekir denemek için.
Radu GRIG

Andrej, bunlar için referans var mı? Godel, Chruch'un modelini tüm değişebilir işlevleri yakalama olarak kabul etmedi, ancak modeli bundan çok daha fazla eleştirdiği hiçbir yerde gördüğümü hatırlamıyorum. Kilisenin lambada kalkülüs modeline eleştirisi, bildiğim kadarıyla kendi Godel-Herbrand genel özyinelemeli işlevlerine yönelik eleştirisiyle eşitti.
Kaveh

3
Sanırım K. Godel: "Kararsızlık Sonuçları Üzerine Bazı Düşünceler", Solomon Feferman, John Dawson ve Stephen Kleene (ed.), Kurt Gödel: Collected Works Vol. Ii. Oxford Üniversitesi Yayınları. 305-306 (1972). Bkz. Books.google.si/…
Andrej Bauer

6

Sen programla! Kilise kodlamalarına bir göz atın . Muhtemelen son derece güçlü olduğuna ikna etmesi gereken tüm aritmetik işlemlerinin ne kadar yapılabileceğini görebilirsiniz. Ancak listelerdeki operasyonlara bakmayı seviyorum. Herhangi bir veri yapısının çoğunu, üzerinde en önemli işlemi yapan bir işlev olarak tanımlayabilirsiniz.

Örneğin, bir listenin kodlaması, üzerinde katlanan katlama işlevidir. Bu Kilise'nin kodlaması değil, Percie'nin türlerinden ve programlama dillerinden aldığım bir kod olduğuna dikkat edin. Kilisenin çift kodlamaları bize özyineleme sağlamaz, bunu bir tür özyineleme birleştiricisi ile kendimize eklemek zorundayız.

böylece bir liste iki argüman alır, katlama yapmak için bir işlev ve bir noktada katlamaya eklenecek başlangıç ​​değeri.

cons x xs = lam f. lam a. f x (xs f a)
nil       = lam f. lam a. a

şimdi bir toplama fonksiyonu verilen bir toplamı tanımlayabiliriz (yukarıdan kilise kodlarına bakınız)

sum xs = xs add 0

daha fazlasını yapabilir ve bir harita fonksiyonu tanımlayabiliriz

consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil

Hala burada bir hesaplama olduğu konusunda ikna olmadıysanız ve herhangi bir hesaplama yapabildiğinizden emin olmak istiyorsanız , sabit nokta birleştiricisine bakın . Bazen kafamı düşünmek biraz ağrıyor, bu yüzden sezgisel diyeceğimden emin değilim, ancak bazı argümanlarla manuel olarak değerlendirirseniz neler olduğunu görebilirsiniz.

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.