Các nhà logic học nổi tiếng đã có những lỗi đáng xấu hổ ở đây, một dòng từ SICP. Điều này đề cập đến là gì?


13

Đây là bối cảnh ( Cấu trúc và diễn giải các chương trình máy tính , phần 1.1.8, dưới tiêu đề "Tên địa phương"):

Một tham số chính thức của một thủ tục có một vai trò rất đặc biệt trong định nghĩa thủ tục, ở chỗ nó không quan trọng tên của tham số chính thức đó là gì. Một tên như vậy được gọi là một biến ràng buộc và chúng tôi nói rằng định nghĩa thủ tục liên kết các tham số chính thức của nó. Ý nghĩa của định nghĩa thủ tục là không thay đổi nếu một biến ràng buộc được đổi tên liên tục trong suốt định nghĩa.

Ở cuối dòng cuối cùng, có một chú thích (26), cho biết:

Khái niệm đổi tên nhất quán thực sự tinh tế và khó xác định chính thức. Các nhà logic học nổi tiếng đã mắc lỗi đáng xấu hổ ở đây.

Những gì hoặc ai là văn bản đề cập đến? Tại sao việc xác định "đổi tên nhất quán" trở nên khó khăn, những nhà logic nào đã mắc lỗi khi cố gắng xác định điều này và những lỗi đó là gì?


3
Tôi nói với các sinh viên của mình rằng cách duy nhất để hiểu "liên tục đổi tên các biến bị ràng buộc" là thực hiện chính xác điều chết tiệt đó. Nhiều sách logic tránh vấn đề này, đưa ra các quy trình đổi tên không đầy đủ hoặc ít nhất là bằng chứng bỏ qua rằng các quy trình đổi tên đã cho là đúng. Nhưng tôi không biết những tin đồn cụ thể mà cuốn sách đề cập đến.
Andrej Bauer

5
Xử lý chính xác việc đổi tên, tên mới, thay thế tránh bắt và tương tự, là một trong những điều tầm thường nhất nhanh chóng trở nên thực sự cồng kềnh trong định nghĩa và bằng chứng. Đối với một vấn đề tầm thường như vậy, người ta không muốn chi tiêu nhiều hơn một lượng chu kỳ tinh thần tầm thường, nhưng cần nhiều hơn thế để tránh nhiều vụ bắt giữ / va chạm khó khăn / v.v. định nghĩa, nhưng sau đó gọi "quy ước Barendregt" và bỏ qua vấn đề, hơi lạm dụng "tươi" ở đây và ở đó, khi cần thiết.
chi

1
Tôi sẽ đánh giá cao câu trả lời cụ thể hơn, bên dưới trong hộp câu trả lời, nếu có thể. Những bình luận này vẫn khiến vấn đề nghe có vẻ bí ẩn khi bạn đã viết chúng để được đọc bởi một người đã quen thuộc với vấn đề này, trong khi tôi thì không
ubadub

@chi nói riêng tôi đánh giá cao việc đọc các đề xuất liên quan đến chủ đề này, nếu bạn có bất kỳ đề xuất nào. Cảm ơn trước
ubadub

Câu trả lời:


11

Đây là một câu trả lời một phần: Tôi không biết về lỗi hay người mà SICP đang đề cập đến. Tôi chỉ có thể cung cấp một số gợi ý về việc đổi tên biến "tại sao" có thể gây khó khăn để xử lý chính xác.

Trước hết, nó có vẻ tầm thường để xác định. Chẳng hạn, chúng ta có thể đổi tên các biến bị ràng buộc trong các khoản tiền được lập chỉ mục

xe=y(e{y/x})

trong đó là bất kỳ biểu thức nào và biểu thị sự thay thế cú pháp của từng bằng . Tầm thường, phải không?ee{y/x}xy

Chà, nếu chúng ta áp dụng một cách mù quáng quy tắc trên, chúng ta sẽ nhận được

x(x+y)=y(y+y)

Điều đó không tốt. Chúng ta cần thêm yêu cầu " không xảy ra trong " hoặc chúng ta có một cuộc đụng độ tên.ye

Bây giờ, hãy xem xét việc đổi tên chính xác này

xy(x+y)=xz(x+z)

Nếu chúng ta muốn đổi tên thành , theo quy tắc trên, chúng ta có thể làm điều đó ở phía bên tay phải, nhưng không phải ở phía bên tay trái. Điều đó thật bất tiện, vì cả hai chỉ khác nhau khi đổi tên, nên chúng nên được xử lý theo cùng một cách.xy

Một cách tiếp cận điển hình ở đây là sử dụng để xác định lại là "thay thế tránh chụp" và thư giãn yêu cầu " không xảy ra trong " và sử dụng thay vì " không xảy ra miễn phí trong ".e{y/x}yeyee

Sau đó, chúng tôi xác định sự xuất hiện miễn phí:

free(x)={x}free(e+t)=free(e)free(t)free(xe)=free(e){x}

Cuối cùng, chụp tránh thay thế:

  • x{t/y} là nếu và khác.tx= =yx
  • (e+e'){t/y}= =e{t/y}+e'{t/y} (trường hợp dễ dàng)
  • (Σxe){t/y}= =??

Trường hợp cuối cùng là đau đớn. Nếu , sự thay thế là no-op, vì chúng tôi muốn nó chỉ ảnh hưởng đến các biến miễn phí và bị ràng buộc. Vì vậy, kết quả chỉ là .x= =yxΣxe

Nếu , chúng tôi muốn nói rằng . Tuy nhiên, điều này là sai, vì nếu xảy ra miễn phí trong chúng ta sẽ có được một bản chụp.yx(Σxe){t/y}= =Σx(e{t/y})xt

Thở dài. Vì vậy, chúng ta đặt là biến "đầu tiên" là 1) không phải , 2) không miễn phí trong và 3) không miễn phí trong . Ở đây, "đầu tiên" có nghĩa là chúng ta cần sắp xếp tốt tập hợp các tên biến (ví dụ: bằng cách chọn một mệnh đề giữa tên và naturals). Sau đó, cuối cùng chúng ta cũng để .zytΣxe(Σxe){t/y}= =Σz(e{z/x}{t/y})

Tôi hy vọng tôi đã làm đúng. (Nhân tiện, lần đầu tiên tôi đã sai

Một số tác giả xem xét nhiều trường hợp hơn, nhưng kết quả là cùng một "đổi tên". Lựa chọn "đầu tiên" không thực sự quan trọng ở trên: bất kỳ nào như vậy sẽ hoạt động tốt và dẫn đến kết quả tương tự (một lần nữa, cho đến khi đổi tên).zz

Bây giờ, cuối cùng, chúng ta có một định nghĩa âm thanh về đổi tên ( -conversion) và thay thế tránh bắt giữ một biến miễn phí. Ở trên, tôi đã xem xét các khoản tiền, nhưng chúng áp dụng cho tất cả các chất kết dính (ví dụ trong phép tính lambda, định nghĩa hàm trong nhiều PL, v.v.).αλx

Bây giờ, hãy tưởng tượng phải đối phó với định nghĩa phức tạp này mỗi khi chúng ta muốn chứng minh điều gì đó trong lý thuyết PL. Chúng tôi có thể, nhưng chúng tôi không muốn. Nó nhàm chán, tẻ nhạt, dễ bị lỗi, làm mờ bằng chứng và không cung cấp cái nhìn sâu sắc cho người đọc. Vì lý do này, nhiều tác giả PL chỉ cần bỏ qua các chi tiết bằng cách nói (hoặc thậm chí là được cấp!) Rằng các thuật ngữ sẽ được sử dụng để "đổi tên biến", rằng tất cả các biến bị ràng buộc được giả định khác với bất cứ điều gì chúng cần phải khác biệt với, rằng chúng tôi giả sử "quy ước Barendregt", hoặc một cái gì đó có cùng tác dụng.

Thành thật mà nói, đây là gian lận trong bằng chứng. Chúng tôi cũng có thể thêm "nháy mắt nháy mắt, nũng nịu, không nói nữa!" trong cùng một tinh thần. Về cơ bản, chúng tôi yêu cầu sự thương xót và nói với độc giả: "nhìn này, điều này thật nhàm chán, tôi không muốn làm điều đó, bạn không muốn đọc nó - cả hai chúng tôi đều biết rằng, với một nỗ lực to lớn, chúng tôi có thể viết lại bằng chứng này bao gồm tất cả các chi tiết ".

Về mặt kỹ thuật, nó có thể khai thác shortcut này để chứng minh một tuyên bố sai sự thật. Tuy nhiên, người đánh giá bằng chứng có kinh nghiệm biết điều gì là "tốt về mặt đạo đức" và có thể làm cho hoàn hảo (với nỗ lực lớn) và điều gì đáng ngờ. Cái sau có thể bao gồm một cái gì đó phụ thuộc vào sự lựa chọn thực tế của tên bị ràng buộc (vì vậy chúng tôi không thực sự làm việc "lên đến" như đã hứa!). Trong những trường hợp đó, đánh giá sẽ yêu cầu thêm chi tiết, để anh ta có thể bị thuyết phục.

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.