Yalnızca Turing tam dilinin yorumlayabileceği toplam dil


16

Tamamlanmayan herhangi bir dil, kendisi için bir tercüman yazamaz. Bunu okuduğum yerde hiçbir fikrim yok ama birkaç kez kullanıldığını gördüm. Bu bir tür "nihai" Turing olmayan tam dile yol açıyor gibi görünüyor; sadece yapabilen (ler)bir Turing makinesi tarafından yorumlanabilir. Bu diller, doğallardan doğallara kadar tüm toplam fonksiyonları hesaplayamayabilir veya zorunlu olarak izomorfik olamazlar (belki A ve B'nin nihai dilleri, A'nın hesaplayabileceği, ancak B'nin yapamayacağı bir F fonksiyonu olacak şekilde mevcut olabilir). Agda, Godel'in T sistemini ve Agda'nın tamamını yorumlayabilir, böylece böyle bir nihai dil, Godel'in sistemi T'nin göründüğünden kesinlikle daha güçlü olmalıdır. Bana öyle geliyor ki, böyle bir dil en azından agda kadar güçlü olurdu (kanıtım olmasa da, sadece bir önsezi).

Bu bağlamda herhangi bir araştırma yapıldı mı? Hangi sonuçlar biliniyor (yani böyle bir "nihai" dil biliniyor)?

Bonus: Godel'in Sistemi T'nin henüz sadece bir Turing makinesi tarafından yorumlanabildiği işlevleri hesaplayamayan patolojik bir durum olduğundan endişe duyuyorum çünkü gerçekten garip bazı işlevlerin hesaplanmasına izin veriyor. Durum böyle mi yoksa böyle bir dilin Godel'in Sistem T'nin hesaplayabileceği her şeyi hesaplayabileceğini biliyor muyuz?


2
Terminolojiyi kullanma şekliniz nedeniyle ifadeleriniz kafa karıştırıcıdır. Terminolojiye güvenmek yerine, sorunuzu anlayabilmemiz için sorunuzu matematiksel olarak titiz ve açık bir şekilde belirtmeye çalışın. Hesaplanabilirlik teorisi bağlamında dili programlamakla ne demek istiyorsun? Hesaplanabilir fonksiyonların numaralandırılması mı demek istediniz?
Kaveh

1
Ne okuduğunuzu tahmin ediyorum: bir dil yeterince güçlü ise ve başka bir işlev sınıfının evrensel işlevini içeriyorsa, o sınıfın köşegen işlevini tanımlayabilir. Toplam işlevlerin bir sınıfıysa, köşegen işlev sınıfta olamaz.
Kaveh

Nerede bulduğumu gayri resmi olarak ifade etti. Burada verdiğim şeylerin tam anlamıyla bir şey. Bunu matematiksel olarak nasıl ifade edeceğimi de bilmiyorum. Biraz okuduktan sonra "bir fonksiyon sınıfının diyagonal fonksiyonunun" ne olduğundan emin değilim. Demek istediğim, "toplam fonksiyonlar sınıfı kendi evrensel fonksiyonunu içeremez" diye düşünüyorum ve bu yüzden toplam fonksiyonlar sınıfının hangi sınıf için C olduğunu soruyorum. evrensel işlev. "Evrensel işlev" in ne olduğunu anlarsam, bunun doğru olduğunu düşünüyorum.
Jake

1
Açıkçası, bu araştırma düzeyinde bir soru değildir. Ayrıca, bu neden bir topluluk wiki'si? Yoksa öyle mi?
Andrej Bauer

"Bu, bir tür" nihai "doğru olmayan tam dile yol açıyor gibi görünüyor; sadece bir Turing makinesi tarafından yorumlanabilen dil (ler)." Bu iddiayı takip etme, sıralı olmayan bir şey gibi görünüyor , ne demek istiyorsun, neden böyle görünüyor?
vzn

Yanıtlar:


42

Bu kötü bir şekilde ifade edilmiş bir soru, bu yüzden önce anlayalım. Bunu hesaplanabilirlik teorisi tarzında yapacağım. Bu yüzden dizeler yerine sayılar kullanacağım: kaynak kodun bir parçası bir sembol dizesi yerine bir sayıdır. Gerçekten önemli değil, s t r i n ile değiştirebilirsiniz.N altında boyunca.string

Let m,n bir olmak eşleştirme işlevi .

Diyelim ki bir programlama dili L=(P,ev) aşağıdaki verilerle verilmiştir:

  1. "geçerli programlar" için kararlaştırılabilir bir kümesi vePN
  2. Bir hesaplanabilir ve kısmi fonksiyon .ev:P×NN

karar verilebilir olması, v a l i d : N{ 0 , 1 } toplamı hesaplanabilir bir harita olduğu anlamına gelir , böylece v a l i d ( n ) = 1Pvalid:N{0,1} . Gayri resmi olarak, belirli bir dizenin geçerli bir kod parçası olup olmadığını anlamanın mümkün olduğunu söylüyoruz. Fonksiyon e v essentialy dilimizi için bir tercüman geçerli: e v ( m , n ) kodu çalıştırır m girişine n - sonuç tarif edilemeyebilir.valid(n)=1nPevev(m,n)mn

Şimdi bazı terminolojiler sunabiliriz:

  1. Bir dil toplam ise her bir toplam fonksiyonudur m P .nev(m,n)mP
  2. Bir dil yorumlayan ve dil L 2 = ( p 2 , e v 2 ) ortaya çıkması durumunda, u p 1 , öyle ki , e v 1 ( u , n , m, ) e v Tüm n için 2 ( n , m )L1=(P1,ev1) L2=(P2,ev2)uP1ev1(u,n,m)ev2(n,m)nPve . Burada u için simülatörü L 2 uygulanan L 1 . Ayrıca olarak bilinir evrensel programı için L 2 .mNuL2L1L2

" L 2'yi yorumlar " ın başka tanımları da mümkündür, ama şimdi buna girmeme izin verin.L1L2

Biz söylemek ve L 2 birbirlerini yorumlamak eğer eşdeğerdir.L1L2

"En güçlü" dil var içinde (eğer "Turing makinesi" olarak bakınız) Turing makineleri n N Turing makinesi ve bir kodlama cp ( n , m ) olduğu "Turing makinesini m girişinde n ilekodlanmış olarak çalıştıran" kısmi hesaplanabilir fonksiyon. Bu dil biz gerekli Açıkçası bu yana, tüm diğer dilleri yorumlamak olabilir , e v hesaplanabilir olması.T=(N,φ)nNφ(n,m)nmev

Programlama dilleri tanımımız çok rahat. Aşağıdakilerin geçmesi için üç koşul daha gerektirelim:

  • ardıl işlevi uygular: s uL , öyle ki , e v ( s u c c , m ) = m + 1 için tüm m N ,succPev(succ,m)=m+1mN
  • diyagonal işlevi uygular: d i a g L , öyle ki , e v ( d ı bir g , m ) = m , m tüm m N ,diagPev(diag,m)=m,mmN
  • bileşke fonksiyonun altında kapatılır: eğer L uygulayan f ve g o zamanda söz konusu ön g ,LLfgfg

Klasik bir sonuç şudur:

Teorem: Bir dil kendini yorumlayabilirse, o zaman tam değildir.

Kanıt. Diyelim ki toplam dildeki için evrensel bir programdır L uygulanan L tüm, örneğin, m p ve n N , e v ( u , m , n, ) e v ( m , n ) . Halefi diyagonal ve de e v ( u , - ) uygulanan L böylece kendi bileşimdir, k uLLmPnN

ev(u,m,n)ev(m,n).
ev(u,)L v ( . Orada var olan n, 0P , öyle ki , e v ( n 0 , k ) e v ( u , k , k ) + 1 , ancak daha sonra e V ( u , n 0 , n, 0) E n 0 , nkev(u,k,k)+1n0Pev(n0,k)ev(u,k,k)+1 bir sayı kendi ardıl eşit olduğu gibi, şu L toplam ya da değil, L
ev(u,n0,n0)ev(n0,n0)ev(u,n0,n0)+1
LL kendisi üzerinde yorumda bulunmamaktadır. QED.

Ardıl haritayı başka bir düzeltme noktası içermeyen harita ile değiştirebileceğimizi gözlemleyin.

İşte bir yanlış anlaşılmayı temizleyeceğini düşündüğüm küçük bir teorem.

Teorem: Her toplam dil, başka bir toplam dil tarafından yorumlanabilir.

Kanıt. Let toplam dili. Biz toplam almak L ' hangi yorumlayıp L ile bitişik tarafından L onun değerlendirici e v . Daha açık olarak, izin P ' = { 0 , n | n P } { 1 , 0 } tanımlamak ve e v ' olarak e v ' ( b , n , mLLLLevP={0,nnP}{1,0}ev Açıkçası, L ' için toplam bir L toplamıdır. Görmek için L ' taklit edebilir L sadece almak u = 1 , 0

ev(b,n,m)={ev(n,m)if b=0,ev(m0,m1)if b=1 and m=m0,m1
LLLL , O zamandan bu yana , e v ' ( u , m , n, ) e v ( m , n ) , gerektiği gibi. QED.u=1,0ev(u,m,n)ev(m,n)

Egzersiz: [2014/06/27 eklenmiştir] dil , yukarıda yapılan bileşim altında kapalı değildir. Böylece teoremin kanıtını Fix L ' eğer tatmin ekstra gereksinimleri L yapar.LLL

LLLLLL


Wiki onay kutusunu işaretlediysem kasıtsızdı.
Andrej Bauer

2
Belirli bir programın geçerli olup olmadığını söyleyemediğiniz dillerde ekstra güç var mı?
Phylliida

3
@DaniPhye: Dil sözdizimi yarı güvenilir değilse sözdiziminde hesaplama gücünü "gizleyebilirsiniz". Örneğin, dil kuralları, her bir işlevin, işlevin toplam olup olmadığını bildiren bir bitle donatılmasını gerektirebilir. Daha sonra uygulayamadık is_total, aksi takdirde uygulanamaz, ancak değerlendirme uygulayamadık (çünkü sonuçta ortaya çıkan işlevin bir kısmını da hesaplamanız gerekir). Genel olarak, bunun için bir ayrıştırıcı bile uygulayamazsanız bir programlama dili olmadığını söyleyebilirim.
Andrej Bauer

3
"Bir dil kendini yorumlayabilirse, o zaman tam değildir" jeli bu sonuçla nasıl olur: F-omega için bir Öz-Tercüman ?
Kaktüs


18

Tamamlanmayan herhangi bir dil, kendisi için bir tercüman yazamaz.

Bu ifade yanlış. Her dizenin anlambiliminin "Girişinizi yok sayın ve hemen durdurun" olduğu programlama dilini düşünün. Bu programlama dili Tamamlanıyor değil ancak her program dil için bir tercüman.


Ah! Bu iyi bir nokta. Bu nedenle, dilin neyi hesapladığına dair belirli gereksinimler olmalıdır. Bu ifadeyi doğrulamak için dilin gücüyle ilgili bir miktar minimum gereklilik olduğu anlaşılmaktadır. Temel aritmetik problemleri çözmesini talep edersek, tutabilir gibi görünüyor.
Jake

@Jake "Dil en az bir sabit olmayan işlevi tanımlar" veya "dil birden fazla işlevi tanımlar" gibi inanılmaz derecede zayıf bir şeyden kurtulabilirsiniz. Karşı örneğim, "önemsiz" ifadesinin makul bir tanımı için açıkça önemsizdir.
David Richerby

Düşünmem ilginç bir sorun gibi görünüyor. Bir şey bulursam cevap vereceğim.
Jake
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.