Một cách tiếp cận cho các câu hỏi như vậy là thông qua mã hóa .
Giả sử bạn có ngôn ngữ L1 và ngôn ngữ L2 và bạn muốn chứng minh rằng chúng bằng cách nào đó "giống nhau", bạn có thể làm điều này bằng cách tìm mã hóa
[[⋅]]:L1→L2
và sau đó cho thấy rằng đối với tất cả các chương trình các lệnh sau: M , NL1M,N
M≅1Niff[[M1]]≅2[[M2]]
Ở đây là một khái niệm được lựa chọn về sự tương đương của chương trình cho . Để thực hiện điều này cho các ngôn ngữ đã nhập, người ta cũng thường ánh xạ -types sang bằng chức năng , được mở rộng cho các môi trường gõ, sao cho giống như sau:L i L 1 L 2≅iLiL1L2┌⋅┐
Γ⊢1M:αimplies┌Γ┐⊢2[[M]]:┌α┐
Ở đây là phán đoán đánh máy cho . Toàn bộ cách tiếp cận được gọi là
trừu tượng hóa đầy đủ .
⊢iLi
Để tránh "lời nguyền của tính phổ quát của Giáo hội", người ta thường áp đặt các điều kiện cho , ví dụ: đó là thành phần, hoặc đóng cửa dưới tên đổi tên tiêm. Càng nhiều điều kiện , kết quả trừu tượng hóa càng mạnh.[[⋅]][[⋅]]
Đây cũng là điều mà Orchard & Yoshida đang cố gắng thực hiện (Định lý 1- 5), mặc dù họ không hoàn toàn đạt được điều đó.