Chúng ta có thể phân biệt các phương pháp cú pháp và ngữ nghĩa nghiêm ngặt trong ngôn ngữ lập trình không?


14

Trong khi thảo luận về bằng chứng chuẩn hóa mạnh mẽ, nhận xét này đối chiếu "mô hình biểu mẫu bình thường" với "phương pháp cú pháp thuần túy".

Điều này đưa tôi trở lại một câu hỏi cơ bản hơn: chúng ta vẫn có thể phân biệt các cấu trúc cú pháp và ngữ nghĩa một cách nghiêm ngặt, khi đối mặt với các mô hình dựa trên cú pháp? Còn các mô hình thuật ngữ cho đại số, mô hình Henkin cho logic thứ nhất thì sao? Những gì về ngữ nghĩa hoạt động cấu trúc? Vì các mô hình thuật ngữ có thể là đẳng cấu với cú pháp, có vẻ khó tạo ra sự khác biệt vững chắc.

Cho đến khi tôi nghiên cứu sự khác biệt giữa lý thuyết bằng chứng và lý thuyết mô hình trong logic, tôi thậm chí còn bị bối rối bởi ý tưởng rằng "hệ thống kiểu tĩnh là một phương pháp cú pháp". Xét cho cùng, một hệ thống loại lý do về các loại, đó là sự trừu tượng hóa hành vi chương trình (và với các loại phụ thuộc, một loại chính xác tùy ý).

Câu trả lời:


14

Không, bạn không thể phân biệt cú pháp với các phương thức ngữ nghĩa, nhưng sự khác biệt cuối cùng vẫn có ý nghĩa.

  • Ngữ nghĩa hoạt động cấu trúc không phải là biểu thị, bởi vì nó không phải là một phương pháp cấu thành của việc đưa ra ngữ nghĩa cho một ngôn ngữ lập trình.

  • Tuy nhiên, bạn có thể xây dựng các mô hình biểu thị từ ngữ nghĩa hoạt động cấu trúc bằng cách sử dụng phương pháp quan hệ thực tế hoặc quan hệ logic. Ví dụ, xem Hệ thống loại xây dựng của Robert Harper về ngữ nghĩa hoạt động .

  • Các mô hình thuật ngữ là biểu thị, nhưng nói chung các nhà ngữ nghĩa học không hài lòng với chúng. Những gì họ thường muốn là một loại mô hình trong đó mô hình thuật ngữ là ban đầu, có thể được sử dụng để chứng minh kết quả đúng đắn và đầy đủ. (Các tính đúng đắn và đầy đủ của giải tích lambda gõ cho loại khép kín Descartes là ví dụ mẫu mực, xem Alex Simpson Categorical Đầy đủ kết quả cho Simply-Typed -calculusλ . Đối với một số chi tiết)

  • Theo hướng khác, nếu bạn có một ngữ nghĩa học biểu thị, bạn có thể muốn tìm ra cú pháp cho nó là gì. Sau đó, bạn muốn đi và tìm một cú pháp và máy trừu tượng có mô hình thuật ngữ có thể đóng vai trò là một đối tượng quan trọng trong một danh mục mô hình phù hợp.

    Ví dụ, ngữ nghĩa trò chơi bắt đầu cuộc sống của nó như là một cấu trúc ngữ nghĩa thuần túy, và cuối cùng đã dẫn đến việc nghiên cứu ngữ nghĩa trò chơi vận hành --- một ví dụ gần đây là phép tính lambda lambda của Alexis Goyet : Một phép tính kép cho các chiến lược không bị ràng buộc .

  • Nhìn chung, bạn có thể nghĩ về ngữ nghĩa hoạt động cấu trúc như một cách chỉ định các máy trừu tượng, mà chúng tôi hy vọng dễ thực hiện. Một ngữ nghĩa học biểu thị cho một mô hình cấu thành của một ngôn ngữ, mà chúng tôi hy vọng là dễ dàng để lý luận về. Nếu chúng ta có cả hai, thì chúng ta có thể vừa thực hiện vừa lý do về ngôn ngữ.

  • Định lý chuẩn hóa là một trường hợp mơ hồ thú vị. Thông thường, để chứng minh chuẩn hóa, bạn cần một mô hình ngữ nghĩa (thường là quan hệ logic). Tuy nhiên, một khi bạn biết rằng chuẩn hóa giữ, nhiều thuộc tính có thể được chứng minh bằng cảm ứng trên các dạng thông thường, đó là một đối số hoàn toàn cú pháp.

    Đối với logic yếu (bất cứ điều gì lên đến logic thứ nhất mà không có cảm ứng, đại khái), bạn có thể chứng minh bình thường hóa bằng cú pháp, sử dụng kỹ thuật thay thế di truyền . Trong các logic này, thuộc tính biểu mẫu con giữ và do đó bạn có thể chứng minh chuẩn hóa bằng cách cảm ứng trên các loại. Xem bài viết Loại bỏ cấu trúc cắt giấy của Frank Pfenning để được giải thích về cách thức hoạt động của nó.


Wow, cảm ơn vì câu trả lời nhanh chóng và kỹ lưỡng!
Blaisorblade

Tôi không đồng ý về lý do bạn đưa ra cho ngữ nghĩa hoạt động không phải là biểu thị. Ngữ nghĩa hoạt động không phải là biểu thị vì không có ký hiệu nào được gán cho các chương trình. Có tồn tại công việc làm cho ngữ nghĩa hoạt động thành phần.
ngày
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.