Lambda Calculus tamamen sözdizimsel midir?


29

Birkaç haftadan beri Lambda Calculus hakkında okudum, ancak henüz mevcut matematiksel işlevlerden maddi olarak farklı olan bir şey görmedim ve bunun sadece bir gösterim meselesi olup olmadığını veya herhangi bir yeni olup olmadığını bilmek istiyorum. Her matematiksel fonksiyon için geçerli olmayan lamda matematiği aksiyomları tarafından yaratılan özellikler veya kurallar. Örneğin, şunu okudum:

"İsimsiz işlevler olabilir" : Lambda işlevleri isimsiz değildir, hepsine sadece lambda denir. Matematiksel gösterimde, isim önemli değilse, farklı fonksiyonlar için aynı değişkenin kullanılması mümkündür. Örneğin, bir Galois Bağlantısındaki iki işlev genellikle * olarak adlandırılır.

"Fonksiyonlar fonksiyonları giriş olarak kabul edebilir" : Yeni değil, bunu sıradan fonksiyonlarla yapabilirsiniz.

"İşlevler kara kutulardır" : Sadece girdiler ve çıktılar matematiksel işlevlerin de geçerli açıklamalarıdır ...

Bu bir tartışma veya görüşülen soru gibi görünebilir ancak bu sorunun "doğru" bir cevabı olması gerektiğine inanıyorum. Lambda matematiğinin matematiksel fonksiyonlarla çalışmak için sadece noter mi, yoksa sözdizimsel mi olduğunu yoksa lambdalar ve sıradan fonksiyonlar arasında anlamlı veya anlamsal bir fark olup olmadığını bilmek istiyorum.


2
Bundan tam bir cevap almak istemiyorum, ancak fonksiyonlar fonksiyonları giriş olarak kabul edemez. F (g (0)) yazabilirim, ancak f (g, 0) yazamam. İkincisi "işlevsel" olarak adlandırılır ve farklı kurallar çağırır.
Cort Ammon - Monica

@CortAmmon fonksiyonları, fonksiyonlardır. Bir fonksiyon, sadece bir çiftler kümesidir (her ne kadar kesin olarak konuşursak, bu üçlü (D, R, G) olsa da, D, R alanı ve G ise grafiktir (çiftler kümesi) kabul edilen cevapla, ama bu ne burada ne de orada). Eğer D bir fonksiyonlar dizisiyse ve ilk elemanın D de bir fonksiyon olduğu çiftleri alırsanız, o zaman bir fonksiyonunuz olur. Vikipedi'yi kontrol edin: "İşlevsel bir eşleme [işlev] ..."
Neil

Diğer bir deyişle, tüm işlevler işlevdir, tüm işlevler işlev değildir. Fakat fonksiyonlar için geçerli olan tüm kurallar fonksiyoneller için geçerlidir
Neil

Yanıtlar:


63

İronik olarak, başlık noktasında, ancak "lambda matematiği sadece bir gösterimsel kongre" olduğu anlamına gelmiyor gibi görünüyor.

Lambda terimleri işlev değildir 1 . Sözdizimi parçalarıdır, yani bir sayfadaki sembollerin koleksiyonlarıdır. Bu sembol koleksiyonlarını değiştirmek için kurallarımız var, en önemlisi beta azaltma. Birden olabilir farklı lamda terimleri karşılık aynı işleve. 2

Puanlarınızı doğrudan ele alacağım.

İlk önce, lambda yeniden kullanılan bir isim değildir. Sadece bu son derece kafa karıştırıcı olurdu, ama biz yazmayın (ya da ) eğer biz ne yaparım ki bir işlev için bir isim olduğunu biz yazmak gibi, . Olarak , biz yerine olabilir gibi bir üretim lambda terimi ile (bir lambda terimi ile tanımlandı ise) anlamı , bir işlev olmayan temsil edebilen bir ifade olan işlev bildiren bir bildirim ( adlıλ(x)(λ x)λf(x)f(x)f(λy.y)(x)(λy.y)λveya başka bir şey). Her halükarda, terminolojiyi / gösterimi aşırı yüklediğimizde, bağlam yoluyla netleştirilebilecek bir şekilde yapılır (bir umut), kesinlikle lambda terimleri için geçerli olamaz.

Bir sonraki noktan iyi, ama biraz alakasız. Bu, Takım Lambda Şartları ve Takım Fonksiyonlarının bulunduğu bir yarışma değildir ve sadece bir tanesinin kazanabileceği bir alandır. Lambda terimlerinin önemli bir uygulaması, belirli fonksiyonları araştırmak ve anlamaktır. Polinom bir fonksiyon değildir, ancak bunları sıklıkla özdeş bir şekilde tanımlarız. Polinomları incelemek, tüm fonksiyonların polinomlar olması gerektiği anlamına gelmez; polinomların da çalışmaya değer olması için "yeni" bir şey yapmaları gerektiği anlamına gelmez.

Küme teorik işlevleri kara kutu değildir, ancak bunlar tamamen girdi-çıktı ilişkileri ile tanımlanır. (Bu anlamıyla olan , girdi-çıktı ilişkisi.) Lambda terimler ayrıca olmayan kara kutular olup edilir değil , girdi-çıktı ilişki tarafından tanımlandığı gibidir. Daha önce de bahsettiğim gibi, aynı girdi-çıktı ilişkisini üreten farklı lambda terimlerine sahip olabilirsiniz. Bu aynı zamanda, lambda terimlerinin , fonksiyonlara yol açsalar da, fonksiyon olamayacağının altını çizer . 2

Aslında, polinomlar ve lambda terimleri arasındaki analoji çok yakın ve bir polinom ile temsil ettiği fonksiyon arasındaki farkı takdir edemeyeceğinizi sanıyorum, bu yüzden biraz daha ayrıntılı olacağım. 3 Genellikle polinomlar dahil edildiğinde, genellikle gerçek katsayılarla, belirli bir tipteki gerçek fonksiyonlar olarak kabul edilirler. Şimdi doğrusal geri besleme kayma kayıtlarının teorisini düşünün (LFSR'ler). Büyük ölçüde üzerindeki (tek değişkenli) polinomların , ancak bunu işlevi olarak düşünürsek, bu durumda en fazla işlev vardır. Bununla birlikte, üzerinde sonsuz sayıda polinom . 4F2 F2F24F2Bunu görmenin bir yolu, bu polinomları fonksiyonlarından başka bir şey olarak yorumlayabilmemizdir , aslında herhangi bir yapacaktır. LFSR'ler için, genellikle polinomları bit akışlarındaki işlemler olarak yorumlarız; bu, eğer istenirse işlevleri olarak gösterilebilir . bu tür işlevlerin büyük çoğunluğu bir LFSR'nin yorumlanması görüntüsünde olmazdı.F2F2F22N2N

Bu lambda terimleri için de geçerlidir, ikisini de fonksiyonlar dışındaki şeyler olarak yorumlayabiliriz. Ayrıca, normal olarak sınırsız sayıda işlev kümesinden daha çok çalışılabilir nesnelerdir. Her ikisi de keyfi işlevlerden çok daha fazla hesaplamalıdır. Polinomları (en azından hesaplanabilir şekilde temsil edilebilecek katsayılarla) ve lambda terimlerini manipüle etmek için bir program yazabilirim. Gerçekten de, yazılmamış lambda terimleri, hesaplanabilir fonksiyonların orijinal modellerinden biridir. Bu daha sembolik / sözdizimsel, hesaplama / hesaplama perspektifi genellikle yazılmamış lambda matematiği için lambda matematiğinin daha semantik yorumlarından daha fazla vurgulanır . Yazılanlambda terimleri çok daha kolay yönetilebilir şeylerdir ve genellikle (ancak her zaman değil) belirlenmiş teorik fonksiyonlar olarak kolayca yorumlanabilir, ancak genellikle yazılmamış lambda hesabından çok fonksiyonlar dışında daha geniş şeyler sınıfına da yorumlanabilir. Ayrıca kendilerine ait zengin bir sözdizimsel teorisi ve mantıkla çok derin bir bağları var .

1 Sorunun başka yoldan gitmesi olası. Belki bir işlevin ne olduğu konusunda bir yanlış anlaşılma vardır.

2 Bu aslında çok kolay değil. İçin Türlenmemiş lambda matematik, gerçekten saf saf olarak keyfi lamda şartlarını yorumlayamaz mantıklı değil set-teorik fonksiyonlar . Bunu, yorumlamanın etki alanının ne olması gerektiğini ifade etmeye çalıştığınızda görmeye başlayabilirsiniz. Bir lambda terimini set bir elemanı olarak yorumlarsam, uygulamayı fonksiyon uygulaması olarak yorumlamak istediğim için ve bir fonksiyon olarak yorumlayabilmek istiyorum. Sen ile bitirmek (ya da bunun bir zayıflaması) sadece tekil kümesinin doğrudur. Yazılmamış lambda matematiği için ihtiyacımız olan şey, dönüşlü bir nesnedir.DDDDDDve kümeler kategorisi için önemsiz olmayan dönüşlü nesneler yoktur. Hikaye, yazılan lambda terimleri için biraz farklı , ancak yine de önemsiz olabilir.

3 Bu ayrım konusunda net iseniz, analoji oldukça bilgilendirici olmalıdır.

4 Bu sayı, karmaşık sayılar, gerçekler, gerekçeler veya tam sayılar gibi karakteristik 0 alanlarıyla ortaya çıkmaz, bu nedenle ayrım hala var olmasına rağmen keskin değildir.


8
Bu söylemem gereken inanılmaz bir cevap. Gerçekten benim için bazı uzun yanlış anlaşılmaları temizler. Teşekkürler!
saat

4
Keşke buna ayrıntılı olarak cevap verebilseydim! Takip etmek istediğim birçok şey var. Genel olarak, bu benim için ve görünüşe göre diğer birkaç kişiye de çok faydalı oldu, bu yüzden titiz ve saygılı bir cevap için teşekkür ederim.
Neil,

1
Burada ele alacağım tek bir nokta var; polinomların çalışmaya değer olmak için "yeni" bir şey "yapmak zorunda olmadıkları iddiası. Tabii ki yaparlar! Tabii ki, kendi alanınıza bağlı olarak, "yeni" farklı anlamlara sahip olabilir (Bu nedenle, örneğin saf bir matematikçi sütun vektörleri ile satır vektörleri arasında ayrım yapmaz çünkü izomorfiktir, ancak bir istatistikçi bu farkı hesaplama amaçları için yararlı olarak kabul edebilir). Herhangi bir yeni formalizm kendisini haklı göstermelidir.
Neil,

2
@Neil: Özellikle # 2 no'lu dipnot lambda hesabının "normal" fonksiyonların "yapamayacağı" yeni bir şey yaptığı "konusunda çok net kanıtlar sunar. Temelsiz bir lambda ifadesinin daha somut bir örneği için, bkz. Sabit nokta birleştiriciler . Kilise rakamları da büyüleyici okuma, özellikle selefi fonksiyonu için yapmak.
Kevin,

1
Fonksiyonları yararlı bir şey yapmaz gibi lambda eklerdim. Bir lambda ile yapabileceğiniz tek şey bir lambayı geçmek ve bir lambda döndürmektir. Elde edilen lambda'nın ne yaptığını test edemezsiniz Buna karşılık başka bir lambda almak için sadece başka bir lambayı geçebilirsiniz. İşlevler olarak, "lambda işlevleri" kümesi tam olarak sadece kimlik işlevini içeren bir tekil küme gibi davranır. Bu sadece bir lambranın giriş ve çıkışını, lambdaları farklılaştırabileceğiniz ifadeler olarak düşünerek olur.
Florian F

0

Değişkenler kavramını düşünün. Basic gibi eski dillerde, dinamik bir tahsisatınız yoktu ve her değişken için bir isme ihtiyacınız vardı. (Bu tam olarak doğru değildir, çünkü dizileriniz vardı, ancak fikir şudur ki ...) birçok problemde, programınızın tanımladığı adlarla sınırlandırılmadan istediğiniz kadar değişken atamanız gerekir.

Lambda işlevleri, işlev adlarıyla ilgili aynı sınırlamadan kurtulmanızı sağlar, programınızın ihtiyaç duyduğu kadar işlevi tanımlamasına ve bunları diğer değişkenler gibi karmaşık veri yapılarında "saklamasına" izin verir. Bu, geleneksel adlandırılmış işlevlerle yapabileceğiniz bir şey değildir.


Bunu neden geleneksel adlandırılmış işlevlerle yapamıyorum? Eğer yazarsam f(x)=let g(y)=x+y in g, her matematikçi ne anlama geldiğini anında bilir ve bunun mantıklı bir matematiksel nesne olduğunu kabul eder (belki de etki alanı hakkında netleşmek konusunda bazı endişelere kadar f). {f(n) | n ∈ ℕ}Sonsuz sayıda fonksiyon içeren ve özellikle de sınırlı sayıda ismin kullanımıyla sınırlı olmayan seti set edersem, onlar da tamamen mutlu olacaklar .
Daniel Wagner

Soru lambda matematiği ile ilgili. Bununla birlikte , programlama dillerinde lambda işlevleriyle aynı şey değildir .
Andy Dent
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.