Tại sao công việc của Schönfinkel trong việc loại bỏ các biến bị ràng buộc của Wikipedia trong logic rất quan trọng?


15

AFAIK, Bằng chứng đầu tiên về việc sử dụng các hàm bậc cao hơn quay trở lại bài báo năm 1924 của Schönfinkel: "Trên khối xây dựng của logic toán học" - nơi ông cho phép một người chuyển các hàm làm đối số cho các hàm khác.

Điều đó có vẻ thú vị. Tuy nhiên, mọi thứ tôi đã đọc về tác phẩm của anh ấy (và phần mở rộng của Curry) dường như đều ám chỉ một điều ở dạng này hay dạng khác: [hàm bậc cao hơn] ... điều này giúp loại bỏ sự cần thiết của các biến bị ràng buộc ...

Điều tôi chưa thể quấn lấy đầu là - chuyện lớn là gì? Tại sao các nhà logic học và toán học thời đó quan tâm đến điều này? Và chúng ta có phải là nhà lý thuyết, quan tâm đến điều này ngày hôm nay? Tại sao nó lại "đột phá" để loại bỏ các biến bị ràng buộc và tác động của nó (hoặc không) đối với điện toán (về mặt lý thuyết) như chúng ta biết?

Tái bút : Tôi biết cách công việc của anh ấy mở đường cho -calculus và tác động của "nó" đối với máy tính và lập trình chức năng nói chung. Câu hỏi của tôi chủ yếu hướng đến thời gian "trước khi" đến việc tạo ra λ -calculus và "sau" giấy Schönfinkel của. Việc Curry độc lập chọn công việc đó, mà sau này được gọi là "logic kết hợp" quá ám chỉ tầm quan trọng của công việc của Schönfinkel.λλ


2
Giấy của Schönfinkel có thể được tìm thấy ở đây .
Martin Berger

Câu trả lời:


17

TL; DR. Siêu dữ liệu của ràng buộc là tinh tế : chúng có vẻ tầm thường nhưng không - cho dù bạn xử lý các logic (bậc cao hơn) hay phép tính. Chúng tinh tế đến mức các đại diện ràng buộc tạo thành một lĩnh vực nghiên cứu mở, với một cuộc cạnh tranh ( thách thức POPLmark ) vài năm trước. Thậm chí có những câu chuyện cười của những người trong lĩnh vực về sự phức tạp của các phương pháp để ràng buộc.

Vì vậy, nếu bạn quan tâm đến siêu dữ liệu (và hầu hết các nhà toán học thì không), bạn cần phải đối phó với sự ràng buộc. Nhưng nhiều nhà toán học có thể xử lý một cách an toàn việc chính thức hóa ràng buộc như thể đó là một vấn đề "nền tảng".

Một điểm khác là ràng buộc là vấn đề "mới" duy nhất trong các ngôn ngữ có hàm bậc cao hơn, bởi vì lý thuyết về ngôn ngữ có ràng buộc chỉ là đại số (đối với hằng số) + ràng buộc. "Cơ sở của ngôn ngữ lập trình" của Mitchell thực sự trình bày mọi thứ theo thứ tự này và khá là khai sáng.

Tôi nhận thức được cách công việc của anh ấy mở đường cho tính toán và tác động của "nó" đối với máy tính và lập trình chức năng nói chung. Câu hỏi của tôi chủ yếu hướng đến thời điểm "trước" để tạo ra calcul-tính toán và "sau" bài báo của Schönfinkel.

Tôi phải thiếu một cái gì đó, nhưng nhận xét này dường như không có sự khác biệt. Liên kết trong các logic thứ tự cao hơn và ràng buộc trong-compus có vẻ khó, vì vậy miễn là mọi người quan tâm đến logic logic bậc cao hơn, họ phải xử lý ràng buộc. Tôi thiên vị bằng cách sử dụng các định lý dựa trên định lý dựa trên Curry-Howard-isomorphism thực hiện logic bằng cách đơn giản thực hiện một lý thuyết loại (trong đó các loại là công thức và chương trình là thuật ngữ chứng minh), do đó tôi chỉ xử lý ràng buộc một lần.

Mặt khác, IIRC, vào thời điểm đó thực sự rất ít quan tâm đến công việc của Schönfinkel - một phần là do cách ông (không) xuất bản nó - các bài báo hầu hết được viết bởi các đồng nghiệp dựa trên nghiên cứu mà ông đã làm (xem tại đây , trang 4) ; Curry sau đó khám phá lại lý thuyết một cách độc lập.

Hãy cẩn thận: Tôi không phải là nhà sử học, mà là nghiên cứu sinh tiến sĩ về PL, vì vậy tôi là một quan điểm hiện đại (và hy vọng chính xác) về chủ đề này.

BIÊN TẬP:

Tại sao ràng buộc tinh tế, cụ thể hơn một chút

Có hai khía cạnh của nó - đầu tiên, thực hiện nó là khó khăn. Thứ hai, siêu dữ liệu là toán học của thao tác chứng minh: thao tác này thường là tự động, nghĩa là nó là một thuật toán - vì vậy về cơ bản, bạn phải đối mặt với tất cả những khó khăn của việc thực hiện, cộng với làm bằng chứng về họ. Dưới đây tôi đưa ra ví dụ. Các ví dụ có một quan điểm hiện đại - chúng là về bằng chứng thực sự chính thức. Tuy nhiên, một số khó khăn sẽ mở rộng đến bằng chứng thủ công chính xác - miễn là bạn không gian lận về chi tiết.

Điều này cho thấy Schönfinkel chỉ đơn giản là đưa ra giải pháp đầu tiên cho vấn đề này, nhưng điều này còn lâu mới dứt khoát.

Thực hiện nó là tinh tế vì bóng

Vấn đề cơ bản trong thực hiện là đổ bóng. Thông thường người ta không sử dụng lại cùng tên cho các biến ràng buộc khác nhau. Nhưng bạn không thể tránh nó trong phép tính lambda, ít nhất là vì chức năng (và các biến bị ràng buộc của họ) được sao: giảm tới ( λ x . X ) 1 + ( λ x . X ) 2 . Đây không phải là một vấn đề được nêu ra, nhưng bắt đầu từ ( λ f x(λf.f 1+f 2)(λx.x)(λx.x) 1+(λx.x) 2 cung cấp cho bạn ( λ g y . G y ) ( λ g y . G y ) z và sau đó ( λ y . ( Λ g y . G y ) y ) z : bây giờ bạn cần phải đối phó với bóng. Bạn có thể tránh điều này, với chi phí làm phức tạp quy tắc giảm beta.(λfx.f(fx)) (λgy.g y) z(λgy.g y) (λgy.g y) z(λy.(λgy.g y) y)  z

λxy.xyλy.yλy.y (một hàm hằng).

Điều tồi tệ hơn là các mẫu đối lập với các thuật toán ngây thơ rất khó xây dựng khi bạn đã biết vấn đề này, hãy để một mình khi bạn không. Lỗi trong các thuật toán gần như chính xác thường không bị phát hiện trong nhiều năm. Tôi nghe nói rằng ngay cả những học sinh giỏi thường không thể tự mình đưa ra định nghĩa chính xác về sự thay thế tránh bị bắt. Trên thực tế, nghiên cứu sinh (bao gồm cả tôi) và các giáo sư không được miễn trừ khỏi những vấn đề này.

Đó là một lý do tại sao một số (bao gồm một trong những cuốn sách giáo khoa tốt nhất về ngôn ngữ lập trình, Loại và Ngôn ngữ lập trình của Benjamin Pierce) đề xuất cách trình bày không tên (không phải là logic kết hợp, mặc dù nó đã được sử dụng, nhưng thay vào đó là các chỉ mục deBrujin).

Bằng chứng về nó là tinh tế

Nó chỉ ra rằng bằng chứng về ràng buộc không đơn giản hơn việc thực hiện, như đã đề cập ở trên. Tất nhiên, các thuật toán chính xác tồn tại và bằng chứng về chúng tồn tại - nhưng không có máy móc tiên tiến, đối với mỗi ngôn ngữ sử dụng ràng buộc, bạn cần lặp lại các bằng chứng, và các bằng chứng đó đơn giản là rất lớn và gây khó chịu nếu bạn sử dụng các định nghĩa để ràng buộc trên bút và giấy .

BAABB

Tiếp theo, tôi đã tra cứu ví dụ tốt nhất của tôi về "điều gì sai nếu bạn cố gắng chính thức hóa định nghĩa tiêu chuẩn". Russell O ' logic đầu tiên được mã hóa thành số). Ông đã sử dụng các định nghĩa được sử dụng trên giấy và chính thức hóa chúng trực tiếp. Tìm kiếm "thay thế" hoặc "biến" và tính tần suất chúng xuất hiện trong tham chiếu đến các vấn đề để có được một ấn tượng. http://r6.ca/Goedel/goedel1.html

Tôi không bao giờ sử dụng những định nghĩa đó trong công việc của mình, nhưng mỗi phương pháp thay thế đều có một số nhược điểm.


Tôi thiên vị khi sử dụng các định lý dựa trên định lý dựa trên Curry-Howard-isomorphism, để tôi chỉ xử lý ràng buộc một lần - Bạn có thể giải thích ý của bạn không?
Tiến sĩ

3
Bạn có nói nó tinh tế nhưng không bao giờ nói chính xác điều gì làm cho nó trở nên như vậy và tại sao lại quan tâm đến nó nếu bạn là một nhà siêu hình học? Đó là viễn cảnh tôi đang tìm kiếm.
Tiến sĩ

Trong bình luận đầu tiên của bạn: Tôi đã nói rõ mối liên hệ với Curry-Howard, nhưng tôi sẽ phải giới thiệu bạn đến Wikipedia hoặc một câu hỏi khác. Tôi đồng ý với nhận xét thứ hai của bạn; Tôi sẽ giải thích cho những người không quen thuộc với tính toán lambda.
Blaisorblade 14/2/2015

@PhD: Tôi hy vọng những gì tôi đã thêm sẽ giúp một chút, mặc dù nó không thay thế một bài giảng hay về tài liệu này (và thật không may, tài liệu tôi đã cắt ngang thường được phân phối giữa rất nhiều tài liệu liên quan đến PPL khác).
Blaisorblade

1
Cảm ơn rất nhiều! Điều đó thực sự hữu ích. Liên kết này cũng có thể khiến bạn quan tâm: home.uchicago.edu/~wwtx/Varfreelogic_Vvised.pdf - Logic thứ tự đầu tiên không có biến bị ràng buộc.
Tiến sĩ
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.