Các hàm đã gõ lambda tính toán không thể tính toán


12

Tôi chỉ muốn biết một số ví dụ về các hàm có thể được tính toán bằng phép tính lambda chưa được gõ nhưng không phải bằng phép tính lambda gõ.

Khi tôi là người mới bắt đầu, một số thông tin cơ bản sẽ được đánh giá cao.

Cảm ơn.

Chỉnh sửa: bằng cách gõ lambda tính toán, tôi dự định biết về Hệ thống F và phép tính lambda được gõ đơn giản. Theo chức năng, tôi có nghĩa là bất kỳ chức năng tính toán Turing.


Nhiều ngành gõ tồn tại cho -calculi, và câu trả lời cho yêu cầu của bạn phụ thuộc một phần vào đó lựa chọn kỷ luật gõ bạn có trong tâm trí. Nó cũng phụ thuộc vào những gì bạn có nghĩa là chức năng. Một ví dụ về sự khác biệt sẽ là môn học đánh máy như hệ thống F chỉ có thể gõ các chương trình bình thường hóa, trong khi untyped λ -calculus chứa từ ngữ không bình thường. λλ
Martin Berger

Tôi đã suy nghĩ về Hệ thống F và phép tính lambda gõ đơn giản. Theo chức năng, tôi có nghĩa là chức năng turing-tính toán.
Timothy Zacchari

Câu trả lời:


15

Một ví dụ hay được đưa ra bởi Godelization: trong phép tính lambda, điều duy nhất bạn có thể làm với một hàm là áp dụng nó. Kết quả là, không có cách nào để viết một hàm đóng loại , lấy một đối số hàm và trả về mã Godel cho nó.(NN)N

Thêm điều này như một tiên đề cho số học Heyting thường được gọi là "luận điểm của Giáo hội mang tính xây dựng", và là một tiên đề chống cổ điển mạnh mẽ. Cụ thể, việc thêm nó vào HA, nhưng không phải là số học Peano! (Về cơ bản, có một thực tế cổ điển là mọi máy Turing đều dừng lại hoặc không, và không có chức năng tính toán nào có thể chứng kiến ​​thực tế này.)


Tôi không hiểu làm thế nào điều này phù hợp với một lý thuyết mở rộng: lấy f và g mở rộng bằng nhau, nhưng với các cách triển khai khác nhau và do đó các mã thần khác nhau. Hàm của bạn có trả về cùng một số cho f và g không?
cody

3
Nó không phù hợp với tính mở rộng! Tuy nhiên, trong HA là từ nối logic, không chức năng / hồ sơ. Vì vậy, họ phải thực hiện được nhưng người thực hiện của họ không cần phải gia hạn. Andrej Bauer là một chuyên gia về công cụ này, vì vậy nếu bạn đặt câu hỏi, bạn chắc chắn sẽ nhận được câu trả lời tốt.
Neel Krishnaswami

11

Câu trả lời đơn giản nhất được đưa ra bởi thực tế là tính toán lambda gõ tương ứng với logic (đơn giản là gõ lambda tính toán -> logic vị ngữ; hệ thống f -> logic bậc hai) và logic nhất quán không thể chứng minh tính nhất quán của chúng.

Vì vậy, hãy nói rằng bạn có số tự nhiên (hoặc mã hóa số tự nhiên của Giáo hội) trong phép tính lambda đã nhập của bạn. Có thể thực hiện đánh số Gôdel gán mọi thuật ngữ trong Hệ thống F thành một số tự nhiên duy nhất. Sau đó, có một hàm lấy bất kỳ số tự nhiên nào (tương ứng với một thuật ngữ được gõ tốt trong Hệ thống F) với một số tự nhiên khác (tương ứng với dạng thông thường của thuật ngữ Hệ thống F được gõ tốt) và thực hiện một số thứ khác cho bất kỳ số tự nhiên nào không tương ứng với một thuật ngữ được gõ tốt trong Hệ thống F (giả sử, nó trả về 0). Hàm f có thể tính toán được, do đó, nó có thể được tính toán bằng phép tính lambda chưa được gõ nhưng không phải là phép tính lambda được gõ (bởi vì hàm sau sẽ có giá trị bằng chứng về tính nhất quán của logic bậc hai trongff logic bậc hai, nghĩa là logic bậc hai không nhất quán).

Nên biết trước 1: Nếu hai trật tự lôgic không phù hợp, nó có thể có thể để ghi trong hệ thống F ... và / hoặc nó có thể không thực hiện được để ghi f trong giải tích lambda untyped - bạn có thể viết một cái gì đó, nhưng nó có thể không luôn luôn chấm dứt, đó là một tiêu chí cho "tính toán."ff

Hãy cẩn thận 2: Đôi khi bằng cách "đơn giản là gõ lambda tính toán", mọi người có nghĩa là "đơn giản là gõ phép tính lambda với một toán tử điểm cố định hoặc các hàm đệ quy." Đây sẽ là PCF nhiều hơn hoặc ít hơn , có thể tính toán bất kỳ hàm tính toán nào, giống như phép tính lambda chưa được đánh dấu.


10

Các untyped -calculus posseses đệ quy chung theo hình thức của Y Combinator. Đơn giản chỉ cần gõ λ -calculus. Do đó, bất kỳ hàm nào yêu cầu đệ quy chung là một ứng cử viên, ví dụ như hàm Ackermann. (Tôi đang bỏ qua một số chi tiết về cách chúng tôi đại diện chính xác cho các số tự nhiên trong mỗi hệ thống, nhưng về cơ bản, bất kỳ phương pháp hợp lý nào cũng sẽ làm.)λYλ

Tất nhiên, bạn luôn có thể mở rộng chỉ đơn giản là đánh máy -calculus để phù hợp với sức mạnh của Y , nhưng sau đó bạn đang thay đổi các quy tắc của trò chơi.λY


Vì một số lý do, tôi đã nghĩ rằng bạn có thể làm Ackermann trong Hệ thống F ...
Rob Simmons

@Rob, theo tôi hiểu, Andrej không nói rằng đó không phải là trường hợp.
Kaveh

1
Tôi cho rằng tôi nói rằng chức năng Ackermann có thể được lập trình trong untyped -calculus (vì mỗi chức năng tính toán có thể), nhưng không chỉ đơn giản là gõ λ -calculus. Tôi không nói gì về Hệ thống F.λλ
Andrej Bauer

Ồ, đúng rồi, tôi chỉ bị câm. (Vì câu hỏi khá mơ hồ giữa việc nói về Hệ thống F và nói về STLC, tôi đã chọn hệ thống mạnh hơn và quên đi câu hỏi đơn giản hơn.)
Rob Simmons

Chức năng Ackermann trong -calculus là λ m . m ( λ f n . n f ( f 1 _ ) ) s u c . Theo một loại suy luận tôi đã xây dựng học kỳ này, nó có loại đơn giản: ( ( ( ( ( f e ) f e ) h ) ( ( ( ( f e ) f λλm.m(λfn.nf(f1_)) such g ) g ) ( ( ( b c ) a b ) ( b c ) a c ) d ) d , điều này rất tàn bạo, nhưng có thể đúng . Vấn đề với STS không phải là Ackermann - ví dụ, đó là mô phỏng máy Turing. Bạn chỉ đơn giản là không thể làm điều đó mà không cótổ hợp Y. (((((fe)fe)h)((((fe)fe)h) hg)g)(((bc)ab)(bc)ac)d)dY
Francisco Mota

6

Tính toán lambda được gõ đơn giản là thực sự yếu đáng ngạc nhiên. Ví dụ, nó không thể nhận ra ngôn ngữ thông thường . Mặc dù vậy, tôi chưa bao giờ tìm thấy một đặc điểm chính xác của bộ ngôn ngữ mà STLC có thể nhận ra.a


5
Tôi nghĩ những gì có thể tính toán được phụ thuộc vào loại bạn đang xem. Khi bạn biểu diễn các giá trị tự nhiên theo loại , trong đó p là loại cơ sở và lấy đẳng thức là đẳng thức beta, các hàm có thể xác định là đa thức mở rộng (đa thức + if-then-other). IIRC, Schwichtenberg đã chứng minh điều này, mặc dù tôi chưa bao giờ đọc bài báo gốc của ông (bằng tiếng Đức). (Tôi nghĩ rằng tên giấy, được dịch, là "Các hàm có thể xác định trong Typed Lambda Compi", 1976.)(pp)ppp
Neel Krishnaswami

2
@ Neel. Một bản dịch slighly tốt hơn sẽ là chức năng loại xác định trong -calculus với các loạiλ . Bạn có thể tải nó ở đây , nó chỉ dài hai trang. Có phải nó biết những gì xảy ra ở các loại khác, với các khái niệm khác về đẳng thức, hoặc với các bảng mã khác của số tự nhiên?
Martin Berger

@ Khởi động: Cảm ơn! Hiện tôi đang sống ở Đức, vì vậy đây là một động lực bổ sung tuyệt vời để thực hành tiếng Đức của tôi. :)
Neel Krishnaswami

4

Một tầm nhìn về các giới hạn của tính toán chuẩn hóa mạnh mẽ mà tôi thích là góc tính toán. Trong một phép tính được gõ bình thường hóa mạnh mẽ, chẳng hạn như phép tính lambda được gõ đơn giản, Hệ thống F hoặc Giải tích các công trình, bạn có một bằng chứng cho thấy tất cả các điều khoản cuối cùng chấm dứt.

Nếu bằng chứng này mang tính xây dựng, bạn sẽ có được một thuật toán cố định để đánh giá tất cả các thuật ngữ với giới hạn trên được đảm bảo về thời gian tính toán. Hoặc bạn cũng có thể nghiên cứu bằng chứng (không nhất thiết phải xây dựng) và trích xuất một giới hạn trên từ nó - có khả năng là rất lớn , bởi vì những tính toán đó là biểu cảm.

Giới hạn này cung cấp cho bạn các ví dụ "tự nhiên" của hàm không thể gõ trong phép tính lambda cố định này: tất cả các hàm số học vượt trội hơn so với giới hạn này.

Nếu tôi nhớ chính xác, các thuật ngữ được gõ trong phép tính lambda được gõ đơn giản có thể được đánh giá trong các tháp theo cấp số nhân : O(2^(2^(...(2^n)..); một hàm phát triển nhanh hơn tất cả các tháp như vậy sẽ không thể biểu thị được trong phép tính này. Hệ thống F tương ứng với logic thứ hai trực giác, do đó khả năng tính toán đơn giản là rất lớn. Để nắm bắt sức mạnh tính toán của các lý thuyết thậm chí còn mạnh hơn, chúng ta thường suy luận theo lý thuyết tập hợp và lý thuyết mô hình (ví dụ: những gì có thể được xây dựng) thay vì lý thuyết tính toán.


0

Δ=λx.xxΔΔβ ΔΔΔAA=AA


λAAAA

Vâng, bạn đúng, nhưng tôi nghĩ (có thể tôi đã sai) rằng không thể có loại như vậy trong phép tính lambda được gõ đơn giản hoặc Hệ thống F, cả hai đều bình thường hóa mạnh mẽ.
Charles

ΔΔΔΔ

@Kaveh Tại sao có một loại Anhư vậy mà A \ident A \rightarrow Akhông lạ? Nghe có vẻ vô lý với tôi, tôi đang nhìn gì vậy?
Martijn

Bạn có thể đang suy nghĩ kinh điển về các bộ và không gian chức năng trên chúng. Hãy suy nghĩ ví dụ về các chuỗi nhị phân hữu hạn và các hàm tính toán trên chúng.
Kaveh
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.