Có ngôn ngữ lập trình (hoặc logic) nào có thể thực hiện (hoặc diễn đạt) một hàm khi và chỉ khi f là một hàm tính toán tính toán?
Có ngôn ngữ lập trình (hoặc logic) nào có thể thực hiện (hoặc diễn đạt) một hàm khi và chỉ khi f là một hàm tính toán tính toán?
Câu trả lời:
Không có ngôn ngữ như vậy.
Tuy nhiên, hãy xem Boomerang . Nó là một ngôn ngữ để viết các mệnh đề giữa các chuỗi. Tôi không biết một lớp bản đồ có thể biểu thị rộng đến mức nào, nhưng tôi chắc chắn bạn có thể tìm ra nếu bạn tìm kiếm một chút.
Điều hợp lý là yêu cầu một ngôn ngữ lập trình rằng tập hợp các chương trình hợp lệ có thể được nhận biết bởi một trình thông dịch hoặc trình biên dịch, nghĩa là nó là một tập hợp có thể tính toán được. Giả sử sau đó chúng tôi đã có một ngôn ngữ lập trình có tập hợp các chương trình hợp lệ là computably đếm được và đó thực hiện một cách chính xác tất cả bijections tính toán . Điều đó có nghĩa là chúng ta có thể tính toán tất cả các mệnh đề tính toán (đơn giản là liệt kê tất cả các chương trình hợp lệ trong ngôn ngữ lập trình này), nhưng điều này là không thể theo định lý tiếp theo.
Định lý: Giả sử là một chuỗi tính toán của bijections tính toán. Sau đó, có một tính toán tính toán không có trong chuỗi.
Bằng chứng. Chúng tôi xây dựng một bijection như sau. Để xác định các giá trị g ( 2 k ) và g ( 2 k + 1 ) , chúng tôi xem xét f k ( 2 k ) :