Chúng tôi mã hóa nội dung băng của máy Turing ở dạng cảm tính; một tập hợp đặc biệt của các thiết bị đầu cuối mã hóa trạng thái hiện tại. Chỉ có thể có một trong số chúng ở dạng gửi tại bất kỳ thời điểm nào, được đặt ở bên phải của biểu tượng mà TM hiện đang trỏ tới.
Ý tưởng quan trọng thứ hai là chúng ta phải đảo ngược quá trình: Các TM lấy từ này làm đầu vào và chuyển đổi nó thành hoặc , hoặc chúng không chấm dứt. Ngữ pháp, tuy nhiên, phải tạo ra từ. May mắn thay, ngữ pháp vốn dĩ không mang tính quyết định, vì vậy chúng ta chỉ có thể để nó "đoán" nơi chấp nhận đến từ đâu; tất cả các từ khiến TM chấp nhận có thể được tạo sau đó.0 1101
Đặt tập hợp các trạng thái không có giá trị; wlog hãy để là trạng thái bắt đầu-nonterminal và tập hợp các trạng thái chấp nhận-trạng thái-nonterminals. Đầu tiên, chúng ta cần các quy tắc bắt đầu tạo ra tất cả các cấu hình chấp nhận có thể:Q 0 Q F ⊆ QQ ={ Q0, Lọ , Qk}Q0QF⊆ Q
S→ # 1 Qf# cho tất cả .Qf∈ QF
Tương tự, chúng tôi chấm dứt khi chúng tôi "đạt" trạng thái bắt đầu ở vị trí chính xác, cụ thể là trên biểu tượng đầu tiên:
# a Q0→ # a cho tất cả .một ∈ Σ
Dịch các chuyển đổi trạng thái thực tế là đơn giản:
aQaQbabQ→cQ′ for a,c∈Σ∧(a,Q,N)∈δ(c,Q′)→acQ′ for a,b,c∈Σ∧(b,Q,L)∈δ(c,Q′)→cQ′b for a,b,c∈Σ∧(a,Q,R)∈δ(c,Q′)
Có một số kink kỹ thuật để giải quyết; chẳng hạn, bạn phải loại bỏ các dấu mốc ranh giới ở cuối. Điều đó có thể được thực hiện bằng cách sinh ra hai số nguyên tố đặc biệt thay vì chấm dứt, hoán đổi chúng đến tận cùng và sau đó xóa### cùng với chúng. Hơn nữa, nhiều phải được tạo ra theo yêu cầu; yêu cầu một số hack các quy tắc với d = # .#d=#
Ngoài ra, việc xây dựng trở nên phức tạp hơn một chút nếu TM sử dụng các ký hiệu không phải đầu vào. Trong trường hợp đó, các quy tắc chấm dứt có thể sai: nếu có các ký hiệu không nhập ở đâu đó trên băng, chúng tôi đã không tạo ra một từ thích hợp. Điều này có thể được cố định tương tự để loại bỏ : đẻ trứng đặc biệt không bị đầu cuối từ Q 0 được hoán đổi sang bên phải và chỉ gỡ bỏ nếu tất cả những biểu tượng là từ Σ .#Q0Σ