Thuật toán để xác định đẳng thức hàm trên phép tính lambda được gõ đơn giản?


10

Chúng tôi biết rằng sự bình đẳng beta của các thuật ngữ lambda được gõ đơn giản là có thể quyết định. Cho M, N: →, liệu có thể quyết định được cho tất cả X MX β NX không?


Đơn giản chỉ cần gõ Lambda Tính toán / STLC wikipedia. kể từ khi nó không hoàn thành Turing, có mô hình tính toán cơ bản nào khác tương đương với nó không? nó cũng có thể hữu ích để nghiên cứu thuật toán phát hiện tạm dừng, mà acc vào wikipedia có thể quyết định cho STLC ...
vzn

3
@Marzio: Thật ra, tôi nghĩ vấn đề ở đây là với cách đặt câu hỏi, điều này khá thiếu chính xác. Sau khi được xây dựng chính xác, đây là một câu hỏi cấp độ nghiên cứu. Một công thức tốt hơn sẽ là: chúng ta biết rằng sự bình đẳng beta của các thuật ngữ lambda được gõ đơn giản là có thể quyết định. Cho M,N:στ , liệu có thể quyết định được cho tất cả X:σ , MXβNX không? Câu trả lời là tiêu cực nói chung (vì vậy không có thuật toán nào như Viclib tìm kiếm tồn tại). Mặc dù có lẽ được mong đợi, đây không phải là một tiên nghiệm rõ ràng và là hậu quả của một vài bài báo từ những năm 90.
Damiano Mazza

@DamianoMazza: ok, thực sự tôi đã không bỏ phiếu để đóng nó ... Tôi sẽ xóa bình luận của tôi, để lại bình luận của bạn và chờ bình luận / chỉnh sửa của OP.
Marzio De Biasi

@DamianoMazza và Marzio, tôi không biết đủ để đưa ra một câu hỏi chính thức như vậy. Dù vậy, tôi ước mình đã làm được, nhưng đây không phải là thứ tôi học được ở trường. Trên thực tế, ngay cả việc googling cho "bình đẳng beta", đó là điều tôi thực sự đã thử trước khi đặt câu hỏi, mang lại cho tôi rất ít kết quả mà gần như thuật ngữ này thậm chí không tồn tại. Vì vậy, tôi thậm chí không có một ý tưởng nơi bạn tìm hiểu và đọc về tất cả điều đó. Các bạn có vui lòng chỉ cho tôi đến đúng nơi để bắt đầu tự nghiên cứu chủ đề không? Câu hỏi cập nhật.
MaiaVictor

1
@Viclib: tương đương beta là một khái niệm kỹ thuật, tôi tránh đề cập đến nó trong câu trả lời của tôi. Một cách thô bạo, hai thuật ngữ tương đương beta khi chúng mang lại kết quả như nhau. Vì vậy, nói cho tất cả có nghĩa là và tính cùng một hàm. Liên quan đến con trỏ để tìm hiểu về phép tính lambda (đánh máy hoặc chưa được gõ), tôi nghĩ rằng các ghi chú của Peter Selinger và Sørensen và Urzyczyn Ghi chú về Curry-Howard là nơi khởi đầu tuyệt vời. MXβNXXMN
Damiano Mazza

Câu trả lời:


13

Như tôi đã nói trong nhận xét của tôi, câu trả lời nói chung là không.

Điểm quan trọng cần hiểu (tôi nói điều này đối với Viclib, người dường như đang tìm hiểu về những điều này) là việc có một ngôn ngữ lập trình / bộ máy trong đó tất cả các chương trình / tính toán chấm dứt không có nghĩa là có chức năng bình đẳng (nghĩa là hai chương trình / máy tính cùng chức năng) là quyết định. Một ví dụ dễ hiểu: lấy bộ máy Turing có đồng hồ đa thức. Theo định nghĩa, tất cả các máy như vậy chấm dứt trên tất cả các đầu vào. Bây giờ, đưa ra bất kỳ máy Turing nào , có một máy Turing đó, được đưa ra trong đầu vào chuỗi , liệu mô phỏngcác bước tính toán của trên một đầu vào cố định (giả sử chuỗi trống) và chấp nhận nếu kết thúc tối đaMM0x|x|MM|x|các bước, hoặc từ chối khác. Nếu là một máy Turing luôn từ chối ngay lập tức, thì và đều có đồng hồ chính xác, và nếu chúng ta có thể quyết định liệu và tính cùng một hàm không (hoặc trong trường hợp này, sẽ quyết định cùng một ngôn ngữ), chúng ta sẽ có thể quyết định liệu (mà, hãy nhớ, là một máy Turing tùy ý) chấm dứt trên chuỗi trống.NM0NM0NM

Trong trường hợp gõ -calculus (STLC) đơn giản , một đối số tương tự hoạt động, ngoại trừ việc đo sức mạnh biểu cảm của STLC không tầm thường như trong trường hợp trên. Khi tôi viết bình luận của mình, tôi đã nghĩ đến một vài bài báo của Hillebrand, Kanellakis và Mairson từ đầu những năm 90, cho thấy rằng, bằng cách sử dụng các loại phức tạp hơn các số nguyên Church thông thường, người ta có thể mã hóa trong STLC đủ phức tạp tính toán cho các đối số trên để làm việc. Trên thực tế, tôi thấy rằng các tài liệu cần thiết đã có trong bằng chứng đơn giản hóa của Mairson về định lý của Statman:λ

Harry G. Mairson, Một bằng chứng đơn giản về một định lý của Statman. Khoa học máy tính lý thuyết, 103 (2): 387-394, 1992. (Có sẵn trực tuyến tại đây ).

Trong bài báo đó, Mairson cho thấy, đưa ra bất kỳ máy Turing , có một kiểu đơn giản và -term mã hóa các chức năng chuyển đổi của . (Đây không phải là một tiên nghiệm rõ ràng, nếu người ta có khả năng biểu cảm cực kỳ kém của STLC trên các số nguyên của Giáo hội. Thật vậy, mã hóa của Mairson không phải là ngay lập tức). Từ đó, không khó để xây dựng một thuật ngữMσλδM:σσM

tM:nat[σ]bool

(trong đó là phần khởi tạo trên của loại số nguyên Church) sao cho giảm xuống nếu chấm dứt ở hầu hết bước khi đã cung cấp chuỗi trống hoặc giảm xuống nếu không. Như trên, nếu chúng ta có thể quyết định rằng hàm được biểu thị bởi là hàm , chúng ta sẽ quyết định chấm dứt trên chuỗi trống.nat[σ]σtMn_1_Mn0_tM0_M


Có lẽ cũng có thể sử dụng mã hóa các hàm đa thức đa biến trong STLC và sau đó thu hút định lý Matiyasevich .
cody

Vì vậy, STLC không hoàn thành, nhưng đủ mạnh để mã hóa chức năng chuyển đổi của máy Turing!? Vì vậy, một máy Turing có thể được định nghĩa là một băng cộng với một chương trình STLC hoạt động trên nó?
MaiaVictor

2
@Viclib: Hãy nghĩ về nó: mô phỏng một bước của máy Turing tùy ý không đòi hỏi nhiều sức mạnh tính toán. Về cơ bản, bạn chỉ cần các kiểu dữ liệu hữu hạn (với if-then-other), danh sách (với các thao tác cơ bản: khuyết điểm, đuôi, v.v.) và các cặp theo thứ tự. (Trên thực tế, Luận án Giáo hội mở rộng tuyên bố rằng độ phức tạp thấp như vậy là phổ biến đối với mọi mô hình máy hợp lý). Cái mà STLC còn thiếu là khả năng chạy chuyển tiếp TM "ad libitum", độc lập với đầu vào: nó chỉ có thể lặp lại chúng một số lần bằng một tháp số mũ trong kích thước đầu vào (xem bài viết của Mairson).
Damiano Mazza

1
@cody: Cảm ơn, tôi không biết bài báo đó. Tôi đoán là bạn đúng.
Damiano Mazza
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.