Tuyên bố không chính thức là không đúng sự thật, như được thể hiện bởi ngôn ngữ lập trình sau đây. Bất kỳ chuỗi ký tự ASCII nào cũng là một chương trình hợp lệ và ý nghĩa của mọi chương trình là "Xuất ra một chương trình chỉ xuất ra một bản sao của đầu vào của nó." Do đó, mọi chương trình trong ngôn ngữ này là trình biên dịch cho ngôn ngữ nhưng ngôn ngữ không hoàn chỉnh.
Tôi không chắc liệu "phiên bản lý thuyết tính toán" của bạn có tương đương hay không nhưng điều đó cũng không đúng. Theo định lý đệ quy thứ hai của Kleene , đối với bất kỳ mã hóa máy Turing nào, có một TM chấp nhận mã hóa của chính nó và từ chối tất cả các mã khác. 1 Máy này là một ví dụ cho đề xuất. Cụ thể hơn, chúng ta có thể đạt được kết quả bằng cách chọn một mã hóa. Ví dụ: hãy để mọi mã số lẻ mà máy xác định bởi "Nếu đầu vào của tôi là số lẻ, hãy chấp nhận nó; nếu không, hãy từ chối" và để mã số 2 x mà máy được mã hóa bởi x trong sơ đồ mã hóa yêu thích của bạn cho các máy Turing. ⟨ M ⟩ là bằng ngôn ngữ L được chấp nhận bởi MM2xx⟨M⟩LMnhưng vẫn chưa hoàn thành.FL
1 lý đệ quy thứ hai Kleene cho biết rằng, đối với bất kỳ liệt kê của hàm đệ quy một phần (ví dụ, đối với bất kỳ mã hóa các chương trình như số nguyên), và bất kỳ một phần đệ quy hàm Q ( x , y ) , có một số nguyên p sao cho ϕ p là hàm ánh xạ y đến Q ( p , y ) . Vì vậy, đặc biệt, hãy để Q là hàm chấp nhận nếu x = y(ϕi)i≥0Q(x,y)pϕpyQ(p,y)Qx=yvà từ chối khác. Theo định lý, có một số nguyên mã hóa chương trình ϕ p ( y ) = Q ( p , y ) . Đó là, φ p chấp nhận nó mã hóa riêng p và từ chối tất cả các đầu vào khác.pϕp(y)=Q(p,y)ϕpp