Tôi đã thấy hai biểu thức lambda khác nhau cho hàm KHÔNG logic.
Một trong số họ chỉ áp dụng tham số của nó cho các hằng số true
và false
bên trong theo thứ tự ngược lại:
và một tham số khác nắm bắt thêm hai tham số thay vì chuyển chúng sang hàm trả về bên ngoài và áp dụng cho chúng theo thứ tự ngược lại:
trong đó cái khác có vẻ đơn giản hơn một chút (và nó cũng đơn giản hơn khi được mã hóa dưới dạng nhị phân).
Vì vậy, câu hỏi của tôi là:
Có sự chuyển đổi nào có thể đưa tôi từ một trong những đại diện này sang đại diện khác không?
Tôi thấy chúng tương đương "mở rộng", nghĩa là cả hai đều cho kết quả như nhau. Nhưng tôi muốn "chứng minh" bằng cách nào đó bằng các phép biến đổi đại số, chẳng hạn như các phép biến đổi alpha, beta và eta. Thật không may, không ai trong số này có thể giúp tôi trong trường hợp này: Alpha chỉ để đổi tên. Beta chỉ hoạt động cho các lệnh gọi hàm, nhưng chúng ta không có bất kỳ lệnh gọi hàm nào ở đây có thể bị giảm, vì là miễn phí trong thân hàm (mặc dù không phải toàn bộ biểu thức) trong tất cả các biểu thức này cho đến khi chúng ta thực sự gọi một cái gì đó. Cái gần nhất có vẻ là eta, liên quan đến các tham số chuyển tiếp và tương đương mở rộng, nhưng khi các tham số bị đảo ngược, nó không phải là chuyển tiếp đơn giản nữa và eta dường như không áp dụng ở đây.NOT
Có thiếu quy tắc chuyển đổi nào nữa không?
(Chà, tôi đoán họ sẽ không bỏ qua hai chữ cái Hy Lạp mà không có lý do cụ thể, phải không?)
PS: Câu hỏi này thực sự là một mô hình, vì có nhiều định nghĩa khác cho các hàm khác có một số dạng khác nhau có vẻ tương đương nhau, nhưng hoàn toàn khác nhau về các quy tắc giảm đã biết. Tôi đã chọn ví dụ đơn giản nhất cho vấn đề này.
Chỉnh sửa:
Để làm rõ hơn những gì tôi muốn biết, đây là sơ đồ hiển thị các bước giảm cho cả hai phiên bản của not
chức năng:
http://sasq.comyr.com/Stuff/Lambda/Not.png
Như bạn có thể thấy, cả hai thực sự đều giảm đến cùng một kết quả (trái với những gì @Jonathan Gallagher đã nói bên dưới). Đây là những gì tôi đã biết: rằng chúng là hợp lưu, và vì vậy chúng tương đương với Church-Rosser. Tuy nhiên, điều tôi không biết là nếu có bất kỳ quy tắc chuyển đổi nào (tương tự như alpha, beta & eta) có thể cho phép tôi chuyển đổi một dạng này not
sang dạng khác. Điều này sẽ cho phép tôi ít nhất đảm bảo nếu một số chức năng khác (phức tạp hơn hai chức năng này ở đây), cũng tương đương, có thể khó khi chúng có thể giảm xuống nhiều hơn chỉ hai câu trả lời có thể. Tôi muốn biết nếu có một số quy tắc chuyển đổi có thể cho phép tôi chuyển đổi một định nghĩa chuyên sâu sang một định nghĩa khác khihai hàm đã tương đương về mặt mở rộng (nghĩa là chúng cho cùng kết quả cho cùng một tham số). Hoặc (sẽ tốt hơn) nếu một số chức năng có thể được chuyển đổi bằng cách nào đó sang chức năng khác ngay cả khi tôi không biết liệu chúng có tương đương với nhau không.