Mỗi lần tôi nghĩ rằng tôi hiểu định lý của Rice nghĩa là gì, tôi lại tìm thấy một ví dụ để làm tôi bối rối. Có lẽ ai đó có thể cho tôi biết tôi đang nghĩ sai ở đâu.
Hãy lấy một số thuộc tính không tầm thường của tập hợp các hàm tính toán, ví dụ: hãy để . Rõ ràng, là đếm được vô hạn và cũng có một số đếm được vô hạn của các chức năng tính toán không trong L .
Bây giờ, hãy xem xét một ngôn ngữ lập trình hoàn chỉnh đầy đủ qua một tập lệnh hữu hạn và tập hợp các chương trình đúng về mặt cú pháp , với . Nếu tôi có thể chọn ngữ nghĩa của ngôn ngữ của mình theo ý muốn, tôi cũng có thể đánh số các chương trình theo ý muốn và do đó có thể thiết kế một ngôn ngữ lập trình trong đó một số tập hợp con của chương trình tính toán chính xác một số tập hợp con tùy ý của các hàm tính toán, như miễn là phù hợp với cardinality. Ví dụ: hãy để và mỗi chương trình tính tổng một hàm. Vì , một ngôn ngữ như vậy nên tồn tại.
Tuy nhiên, rõ ràng là có thể tính toán được và vì , do đó, chúng tôi sẽ có một chương trình quyết định tính chất không tầm thường , không thể thực hiện được theo định lý của Rice.
Đâu là lỗi trong suy luận của tôi? Điều này có nghĩa là không có ngôn ngữ lập trình trong đó mỗi chương trình palindromic (hay đúng hơn là bất kỳ cấu trúc tính toán nào ) sẽ tính toán chính xác tổng số hàm (hay đúng hơn là bất kỳ tập hợp các hàm tính toán nào)? Điều này thực sự làm tôi bối rối.