Lambda analizinin hesaplama teorisi alanına katkısı nedir?


85

Ben sadece "onu tanımak" için lambda matematiğini okuyorum. Turing Makinesi yerine alternatif bir hesaplama biçimi olarak görüyorum. İşlevleri / azaltmaları olan şeyleri yapmanın ilginç bir yoludur (kabaca konuşma). Bazı sorular olsa da beni rahatsız ediyor:

  • Lambda analizinin amacı nedir? Neden tüm bu işlevlerden / azaltmalardan geçtiniz? Amaç ne?
  • Sonuç olarak merak ettim: Lambda matematiği, CS teorisini ilerletmek için tam olarak ne yaptı? Varlığının gerekliliğini anlayabilmem için “aha” anına sahip olmamı sağlayacak katkıları nelerdi?
  • Neden lambda hesabı, otomat teorisi metinlerinde yer almıyor? Ortak yol çeşitli otomatalardan, gramerlerden, Turing Makinalarından ve karmaşıklık sınıflarından geçmektir. Lambda hesabı, yalnızca SICP tarzı kurslar için müfredata dahil edilir (belki de değil?). Ancak bunun nadiren CS'nin çekirdek müfredatının bir parçası olduğunu gördüm. Bu, o kadar da değerli olmadığı anlamına mı geliyor? Belki değil ve ben belki burada bir şey eksik?

Fonksiyonel programlama dillerinin lambda matematiğine dayandığını biliyorum ama bunu programlama dillerinden çok önce yaratıldığından geçerli bir katkı olarak düşünmüyorum. Öyleyse, gerçekten de lambda hesabını tanıma / anlama, uygulamaları / teoriye katkıları nedir?


6
İlgili bir cevap seti, -calculus ve TM'ler arasındaki güç farkını açıklamaktadır : cstheory.stackexchange.com/questions/1117/…λ
Suresh Venkat


5
Bir anlamda, katkısı alanı oluşturmaktı . Kilisenin ilk önce lambda matematiği ile geldiğini unutmayın, fakat ilk önce evrensel bir hesaplama modeli olarak görülmedi.
Dan Hulme

Çekirdek çalışmalarımda Functional ProgrammingHaskell ve biraz Lisp hakkında konuştum. Bunun halefi Principles of Programming Languages, ML kullanılan ve lambda matemisini tanıtan idi. Bazı cevapların gösterdiği gibi, gerçekten de lambda matematiğinin ait olduğu yer: programlama dilleri, yazma vb.
İle

Bu soru benzer TM'lerin & Lambda hesabı arasındaki ilişki ve ayrıca Lambda hesabı tarihsel öncelik anlatılır
vzn

Yanıtlar:


96

λ -calculus'un iki anahtar rolü vardır.

  • Sıralı, işlevsel, üst düzey hesaplama davranışının basit bir matematiksel temelini oluşturur.

  • Yapıcı mantıktaki ispatların bir temsilidir.

Bu, Curry-Howard yazışmaları olarak da bilinir . Ortak olarak, calculus'un turb makineleriyle paylaşılmayan calculus'un cebirsel hissi ile kuvvetlendirilen, "sıralı, işlevsel, daha yüksek dereceli" bir programlama dili olarak çift ​​görünümü masifliğe yol açtı mantık, matematiğin temelleri ve programlama arasındaki teknoloji transferi. Bu transfer, örneğin homotopi tip teorisinde hala devam etmektedir . Özellikle genel olarak programlama dillerinin geliştirilmesi ve özel olarak disiplinlerin yazılması olmadan düşünülemez. λ λ λ λλλλ-calculus. Programlama dillerinin çoğu, calculus'un doğrudan soyundan olan Lisp ve ML'ye (örneğin, Lisp için çöp toplama icat edilmiştir) bir miktar borçludur. calculus'tan şiddetle etkilenen ikinci bir çalışma teli etkileşimli kanıt asistanlarıdır .λλ

Kişi calculus'u yetkin bir programcı veya hatta bir bilgisayar bilimi teorisyeni olarak bilmek zorunda mıdır? Hayır. Üst düzey özelliklere sahip türler, doğrulama ve programlama dilleri ile ilgilenmiyorsanız, muhtemelen sizin için son derece yararlı olmayan bir hesaplama modelidir. Özellikle, karmaşıklık teorisi ile ilgileniyorsanız, o zaman -calculus muhtemelen ideal bir model değildir, çünkü temel indirgeme adımı güçlüdür: üzerinde istediğiniz sayıda kopya , bu nedenle λ ( λ x . M ) N β M [ N / x ] N β λ λ M N M Nλλ

(λx.M)NβM[N/x]
NβMikroskobik hesaplama maliyetinin muhasebeleştirilmesinde gerçekçi olmayan temel bir kavramdır. Bunun Teori A'nın ' calculus'a bu kadar aşık olmamanın ana nedeni olduğunu düşünüyorum . Tersine, Turing makineleri programlama dili geliştirme için çok ilham verici değildir, çünkü makine kompozisyonunun doğal bir fikri yoktur, oysa ve programlar ise calculus ile . Bu cebirsel hesap görünümü doğal olarak pratikte kullanılan programlama dilleri ile ilgilidir ve birçok dil gelişimi yeni program kompozisyon operatörlerinin araştırılması ve araştırılması olarak anlaşılabilir.λλMNMN

Lambda-calculus tarihinin ansiklopedik bir incelemesi için bkz . Cardone ve Hindley'nin Lambda-calculus ve Combinatory Logic Tarihi .λ


8
Bu çok güzel bir cevap.
Suresh Venkat

9
Ve "unrealism" ile ilgili olarak Düşürülmesi: Beniamino Accattoli ve Ugo Dal Lago yakın bir ispat şaşırtıcı bir sonuç sayısının belirten p herhangi bir standart azaltma stratejisi normal formu (örneğin, en soldaki-en dış) için -steps değişmez bir karmaşıklık ölçüsüdür. Bu demektir ki, olsa bile, uygulama β Düşürülmesi başına , indirimleri sayısının sayılması gerçekçi olmayan bir karmaşıklık ölçüsü (örneğin, bu sınıf tanımını etkilemeyeceği pahalı değildir P ). βββP
Damiano Mazza

5
@DamianoMazza Yeni bir sonuç olduğu için, Teori A tarihinde etkili olamayabilirdi. Ayrıca, bunun sadece bazı indirgeme kavramları için geçerli olacağını düşünüyorum. IIRC Asperti'nin makalesi P = NP, paylaşılana kadar , J.-J.'de bir 'optimal' azaltma stratejiniz varsa, P ve NP'nin çöktüğünü gösterir. Levy.
Martin Berger

6
@ MartinBerger: elbette evet. Benim yorumum, "indirgemenin karmaşıklığı hakkında bilgi eklemek , hiç bir şekilde cevabımda tekrar ettiğim) Teori A'daki etkinin eksikliği hakkındaki ifadenizi" düzeltmek "değildi. Bu arada, Accattoli ve Dal Lago'nun sonuçları her zamanki gibi en soldaki β azaltma için geçerli ( cf. s.2, c.2, l.11). Bu yüzden çok ilginç (ve bahsetmeye değer). Asperti en Sonuç kaygıları, bir değil, Lévy-optimum azalma, dediğiniz gibi β (özellikle, en soldaki-dıştaki içinde Lévy-optimal değildir) Düşürülmesi stratejisi. βββ
Damiano Mazza

27

Ben calculus'un bu alana birçok yönden katkıda bulunduğunu ve buna hala katkıda bulunduğunu düşünüyorum. Üç örnek izliyor ve bu ayrıntılı değil. Ben bir uzman değilim beri λ -calculus, kesinlikle bazı önemli noktalar özledim.λλ

  • Birincisi, fonksiyonların tam aynı kümesini temsil çıkması hesaplama farklı modellerini sahip düşünüyorum kökeni idi Church-Turing tezi ve -calculus büyük rol oynayan, yanında Turing makineleriyle ve u -Recursive fonksiyonları.λμ

  • λ

  • μλ


20

λ

Lambda matematiği, CS teorisini ilerletmek için tam olarak ne yaptı?

λλλ

λ

λ


2
λλππ

5
Kendimi klonlayabilseydim, BLL ve gerçekleştirilebilirliği kullanarak P / NP'ye bakmak için bir çoğaltma yapardım. Mantıksal ilişkiler "doğal deliller" gibi görünmüyor, doğrusal tip disiplini görebilmenizi sağlıyor ve BLL'nin çok zamanlı eksiksizlik teoremleri, kaçırdığınız algoritma sınıfları olup olmadığı konusunda endişelenmenize izin vermiyor gibi görünüyor. Doğrusallık ve temsil teorisi arasındaki ilişki de GCT'ye bağlantılar olduğunu göstermektedir. Sanırım bütün bunlar, neden titiz ve hayal kırıklığına uğradığınıza bağlı. :)
Neel Krishnaswami

1
Hey @NeelKrishnaswami, lütfen BLL (sınırlı lineer mantık) ve doğal deliller ile ilgili materyal okumaya yönlendirebilir misiniz?
Martin Berger

Re B - A: lambda-calculus sadece aynı hesaplamaları daha iyi yapılandırmakla ilgilidir, örneğin daha iyi algoritmalar üretemez. Kesim azaltma ve sonuçtaki alt formül özelliği ile birinci sınıf tipteki herhangi bir program birinci sınıf fonksiyonlar olmadan yazılabilir. Ancak kesinti ortadan kaldırılması, yinelenen koda karşılık gelir: bu nedenle, yeterince kopya yapıştırma yapmak istiyorsanız, üst düzey işlevlere ihtiyacınız olmadığını tekrar görüyoruz. (Reynolds'un işlevsizleştirmesi, kopyala yapıştırmadan bile kaçınmanıza izin verir, ancak küresel bir dönüşümdür, bu nedenle bir derleyiciye bırakılması daha iyidir).
Blaisorblade

Tek kelimeyle konuşursak, yorumum bir algoritma ile programlama yaparak motive olur - harikadır, ancak arzu ettiğimden çok daha az soyut gibi görünüyor. Bunun genel olduğunu iddia etmiyorum, ancak algoritmalar yazarken koddaki soyutlamanın sıklıkla gerekli olmadığını / vurgulanmadığını iddia ediyorum. (Kaç tane quicksort uygulamasının bölümleme işlevinde olduğunu düşünün - Bunu kabul edilemez buluyorum).
Blaisorblade

13

Sorularınız birçok yönden ele alınabilir. Tarihsel ve felsefi yönleri yanda bırakmak ve şu şekilde aldığım ana sorunuza değinmek istiyorum:

Lambda analizinin amacı nedir? Neden tüm bu işlevlerden / azaltmalardan geçtiniz?

Boole Cebri, ya da İlişkisel Cebir, ya da Birinci Mertebeden Mantık ya da Tip Teorisi ya da diğer bazı matematiksel formalizm / teorinin amacı nedir? Cevap, tasarımcıları bir amaç için başka bir amaç için yaratmış olsalar bile , onlar için doğal bir amaçlarının bulunmamasıdır . Leibniz, Boole Cebirinin temellerini kurarken akılda belli bir felsefi projeye sahipti ; Boole bunu kendi nedenleriyle araştırdı. de Morgan'ın İlişkisel Cebir konusundaki çalışması da, çeşitli projeleri tarafından motive edildi; Peirce ve Frege'ın modern mantık yaratma konusunda kendi motivasyonları vardı.

Mesele şudur: Church'ün lambda matematiği oluştururken sahip olabileceği herhangi bir sebepten, lambda matematiği bir uygulayıcıdan diğerine değişir.

  • Birisi için hesaplamalar hakkında konuşmak için uygun bir gösterimdir ; Turing Makinelerine bir alternatif, vb.

  • Bir diğerine daha sofistike bir programlama dili (örneğin, McCarthy, Stanley) inşa etmek için sağlam bir matematiksel temel .

  • Üçüncü bir kişi için, doğal ve programlama dilleri (örneğin Montague, Fitch, Kratzer) anlamını vermek için titiz bir araçtır .

Bence Lambda matematiği kendi iyiliği için çalışmaya değer olan resmi bir dildir. Yazılmamış lambda hesabında, 'Y-birleştiricileri' adı verilen bu küçük canavarlara sahip olduğumuzu ve özyinelemeli işlevleri tanımlamamıza ve kararsızlığın kanıtını bu kadar zarif ve basit hale getirmemize nasıl yardımcı olduklarını öğrenebilirsiniz. Basitçe yazılan lambda matematiği ile bir tür sezgisel mantık arasında yakın bir yazışma olduğu şaşırtıcı gerçeğini öğrenebilirsiniz . Keşfetmek için birçok başka ilginç konu var (örneğin biz vermelidir nasıl anlambilimini lambda hesabının? Nasıl FOL gibi tümdengelim sistemi içine lambda kalkülüs açabilirsiniz?)


Giriş için Hindley & Seldin'in Kombinatorlere Giriş ve Cal – Matematik bölümüne göz atın . Barendreg, The Lambda Calculus'un incilidir, yani Hindley ve Seldin'e bağlıysanız, keşfedilecek hem anlamsal hem de sözdizimsel nitelikte birçok konu var.


6
Ben "kendi iyiliği için" argümanı satın almıyorum. Matematiksel bir formalizmin amacı, bazı kavram anlayışımızı aydınlatmaktır. Açıklığa kavuşturulan şey zamanla gelişebilir, ancak bir formalizm bazı fikirler hakkında daha net düşünmemize yardımcı olmadığı sürece, genellikle biter. Bu anlamda, lambda matematiği, hesaplama kavramını TM tarafından kabul edilmeyen bir şekilde nasıl aydınlatacağını aks etmek için geçerlidir.
Sasho Nikolov

1
Bir düşünmek olabilir şimdiye hesaplama olarak azaltım ve değişim düşünmeden lambda taşı incelemek. Eğer haklıysam ve bu aslında mümkün ise, o zaman hesaplama yapmak istemesek bile lambda hesabına ilgi duyabiliriz. Ancak yorumunuz için teşekkürler; Bir şans alır almaz cevabımı buna göre düzenlemeye çalışacağım.
Hunan Rostomyan

@SashoNikolov - "TM'ler tarafından onaylanmayan bir şekilde." Tanım olarak, bu mümkün değildir, çünkü LC ve TM eşdeğerdir. Biriyle ifade edebileceğiniz veya ispatlayabileceğiniz her şey, diğeriyle yapabilirsiniz (veya tersi). Böylece birbirlerini gereksiz kılıyorlar (her ikisinin de genel özyinelemeli teorisi, bir başka TM eşdeğeri formalizmi ile yaptığı gibi). Bu, tüm TM-denk sistemlerini atmamız gerektiği anlamına mı geliyor? Bunu söyleyemem, çünkü bazen LC'de bazı şeyleri ifade etmek TM veya tersi durumdan daha kolaydır . Hesaplanabilirlik hakkında konuşmanın başka bir yolu.
Gabriel L.

1
@GabrielL. Cümlenin tamamını okursanız, "lambda matematiği hesaplama kavramını TM tarafından kabul edilmeyen bir şekilde nasıl aydınlatır " der . Resmen eşdeğer olan iki matematiksel tanım hala aynı temel kavramı farklı ve tamamlayıcı yollarla aydınlatabilir. Benim yorumum, TM açısından değil, hesaplanabilirliği lambda hesabı cinsinden ifade ederek ne kadar netlik kazanıldığını sormanın makul olacağı anlamına geliyordu. Bu hiçbir şekilde resmi denklik hakkında değil.
Sasho Nikolov

Anladım - bir şekilde anahtar kelimeyi kaçırmayı başardı. Cevap için teşekkürler.
Gabriel L.

12

Turing, Matematiğin sonlu bir kümeden seçilen ve sınırlı sayıda zihinsel “durum” arasında geçiş yaparak okuma / yazma sembollerinin bir kombinasyonuna indirgenebileceğini savundu. Bunu sembollerin bir kaset üzerindeki hücrelere kaydedildiği ve bir otomatın durumu takip ettiği Turing Machines'te yeniden düzenledi.

Bununla birlikte, Turing'in makineleri bu azalmanın yapıcı bir kanıtı değildir. Herhangi bir "etkili prosedürün" bazı Turing Makinesi tarafından uygulanabileceğini savundu ve Evrensel Turing Makinesi'nin diğer tüm makineleri de uygulayabileceğini gösterdi, ancak gerçekte Matematiği uygulayan bir dizi sembol, durum ve güncelleme kuralları vermedi tartıştığı gibi. Başka bir deyişle, Matematiğimizi yazmak için kullanabileceğimiz standart bir sembol kümesi olan bir 'standart Turing Makinesi' önermedi.

Lambda Calculus ise tam da budur. Kilise, özellikle Matematiğimizi yazmak için kullanılan gösterimleri birleştirmeye çalışıyordu. LC ve TM'lerin eşdeğer olduğu gösterildiğinde, LC'yi 'standart Turing Machine'imiz olarak kullanabilirdik ve herkes programlarımızı okuyabilirdi (peki, teoride;)).

Şimdi, neden LC'yi bir TM lehçesi olarak değil, ilkel olarak ele aldığını sorabiliriz? Cevap, LC'nin semantiğinin şüphe uyandırıcı olduğudur : LC terimlerinin 'içsel' anlamı vardır. Kilise rakamları vardır, toplama, çarpma, özyineleme vb. İçin fonksiyonlar vardır. Bu, LC'yi (biçimsel) Matematiğin nasıl uygulandığı ile çok iyi hizaya getirir, bu yüzden birçok (fonksiyonel) algoritma hala doğrudan LC'de sunulur.

Öte yandan, TM programlarının anlambilimi işlevseldir : anlam, makinenin davranışı olarak tanımlanır. Bu anlamda, bantın bir kısmını kesip "bu ekleme" diyemeyiz, çünkü bağlama bağımlıdır. Makinenin davranışı, bandın bu bölümüne çarptığında, makinenin durumuna, uzunluklara / ofsetlere / vb. Bağlıdır. Argümanlar arasında, sonuç için ne kadar bant kullanılacağı, önceki herhangi bir işlemin o bant bölümünü vs. bozup bozmadığı vs. Bu, çok korkunç bir çalışma şeklidir ("Kimse bir Turing Makinesi programlamak istemez"), bu yüzden bu yüzden birçok (zorunlu) algoritma sahte kod olarak sunulur.


5

diğer cevaplar iyidir, işte başkalarıyla örülmüş, ancak daha kesin olabilen bir başka bakış açısı / nedeni, eski kökenler zamanın kumlarında biraz kaybedildiği için akılda tutulması zor olabilir:

tarihsel öncelik!

Lambda matematiği , en azından 1932 gibi erken bir zamanda aşağıdaki referanslarda tanıtıldı :

  • A. Kilise, "Mantığın temeli için bir dizi varsayım", Matematik Annals, Series 2, 33: 346-366 (1932).

Turing makinesi tanıtıldı 1936 ~ Lambda Calculus yıllarca TM görünümünü eskidir yüzden!

  • Turing, AM (1936). "Hesaplanabilir Numaralarda, Entscheidungs ​​problemine başvuruda bulundu". Londra Matematik Kurumu'nun Bildirileri. 2 (1937) 42: 230-265. doi: 10,1112 / PLMS / s2-42.1.230

Diğer bir deyişle, temel bir cevap Lambda Calculus'un birçok yönden TCS'nin eski miras sistemi olduğudur. hala, Cobol'un dilindeki yeni gelişme olmasa da , aynı şekilde hareket ediyor! piyasaya sürülen en eski Turing Complete hesaplama sistemi gibi görünüyor ve hatta Turing Completeness'ın temel fikrini bile ön görüyor. Lambda Calculus, Turing makineleri ve Yazışma Sonrası Probleminin eşdeğer olduğunu ve Turing denkliği ve Kilise-Turing tezi kavramını ortaya koyduğunu gösteren daha sonra geriye dönük bir analiz yapıldı .

Lambda matematiği, mantık-merkezli bir pov'dan hesaplamayı matematik teoremleri ve mantıksal formül türevleri vb. aynı zamanda hesaplama ve özyineleme arasındaki derin ilişkiyi ve matematiksel indüksiyonla daha sıkı birleşme olduğunu gösterir .

bu biraz kayda değer bir faktottur, çünkü pek çok yönden (en azından teorik olarak ) hesaplamanın kökenlerinin temelde mantık / matematikte , Davis tarafından detaylı olarak geliştirilmiş / genişletilen bir tezini , Mantık / Matematik Mühendisleri ve Kökenleri kitabında olduğunu öne sürmektedir . bilgisayar . (elbette Boolean cebirinin kökenleri ve temel rolü de bu kavramsal tarihsel çerçeveyi daha da güçlendirir.)

Bu nedenle, dramatik bir şekilde, bir kişi bile Lambda hesabının, hesaplamanın kökenlerini araştırmak için bir pedagojik zaman makinesi gibi olduğunu söyleyebilir !


1
Zeyilname, Lambda matematiği de aynı zamanda Godels thm için büyük bir ilham kaynağı olan Whitehead / Russell tarafından Principia matematiğinden oldukça etkilenmiş görünüyor . Bu araştırmanın bir kısmı, "algoritma" tam olarak (matematiksel olarak) tanımlanmadan önce algoritmik bir çözüm isteyen ve aslında arayışın büyük ölçüde kesin teknik tanımlamaya yol açan şey olduğu için, yüzyılın başındaki 10. probleminden ilham almıştır .
vzn 1

btw / clarification / iiuc aslında öyleydi Post Post tarafından incelenen kanonik sistemler Post ve görünüşe göre daha basit Post Yazışma Sorunu özel bir durumdur. aynı zamanda Turing eksiksizliği (bu isim altında değil) kavramını geliştirmede etkili olan Kleene idi.
15

ayrıca bkz . Kilise-Turing tezi tarihi, birçok tarihsel ayrıntıyı / ilişkiyi izleyen wikipedia
vzn

4
Cobol karşılaştırmasında kırılmamakta zorlanıyorum.
Neil Toronto

-2

Ben sadece bu yazıyla karşılaştım ve yazımın oldukça geç kalmasına rağmen (yıl!), Belki de "peni değerimin" biraz faydalı olabileceğini düşündüm.

Konuyu üniversitede okurken bu konuda da benzer düşüncelerim vardı; bu yüzden, öğretim görevlisine "neden" sorusunu sordum ve cevabım: "derleyiciler" oldu. Bahsettiği andan itibaren, azaltmanın arkasındaki güç ve onu en iyi şekilde nasıl kullanabileceğini değerlendirme sanatı, neden ve neden potansiyel olarak yararlı bir araç olduğunun tüm amacını yaptı.

Eh, tabiri caizse benim "aha" anımdı.

Bence sık sık üst düzey dilleri, kalıpları, otomatları, algoritma karmaşıklığını vb. Faydalı buluyoruz çünkü bunları elimizdeki 'görevle' ilişkilendirebiliriz; Oysa lamdba matematiği biraz fazla soyut görünüyor. Bununla birlikte, hala orada dilleri düşük seviyede çalışanlar var - ve lambda matematiği, nesne matematiği ve diğer ilgili formalizasyonların, ortalama programcının fayda sağlayabileceği yeni teorileri ve teknolojileri anlamalarına ve belki de geliştirmelerine yardımcı olduklarını hayal ediyorum. Aslında, bu sebeple muhtemelen çekirdek bir modül değildir, ancak (belirttiğim nedenlerden dolayı), bilgisayar seçimlerinde seçtikleri kariyer yoluna ayrılmaz olarak bulabilecekleri tuhaf birkaç kişi olacaktır.


Derleyicilerdeki "aha" neydi?
Doktora

Son paragrafınız tamamen spekülatif görünüyor ve aslında "derleyiciler" kelimesinin neden soruyu cevapladığını açıklamıyorsunuz.
David Richerby

@PhD: Beta azaltma ve değiştirme programları çalıştırırken kullanılmaz, ancak derleyicileri optimize etmek için kullanılır. Bu değil lambda-analizin ana önemi, ama çok somut bir uygulamadır.
Blaisorblade
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.