Ngữ nghĩa chính thức của OCaml tại Coq


14

Các ngữ nghĩa của một tập hợp con lớn của OCaml, được gọi là OCamllight , đã được chính thức hóa trong HOL bởi Owens vài năm trước. Gần đây, một ngữ nghĩa lý thuyết loại của một tập hợp con nhỏ hơn của OCaml đã được triển khai trong Nuprl bởi Kreitz, Hayden và Hickey .

Có sự phát triển tương tự trong Coq?


Bạn có thể quan tâm đến CakeML: cakeml.org . Mặc dù vậy, tôi không phải là OCaml.
jmite

Câu trả lời:


12

Bạn đã xem luận án tiến sĩ, công thức đặc trưng cho xác minh chương trình cơ giới của Arthur Chargeuéraud chưa?

Thay vì xây dựng hệ thống loại và ngữ nghĩa bước nhỏ như quan hệ quy nạp, ông đưa ra một kỹ thuật để chuyển đổi các chương trình Caml thành các công thức đặc trưng. Về cơ bản, đây là một khái quát của ngữ nghĩa biến áp vị ngữ để hỗ trợ một tập hợp con rất lớn của Ocaml - đáng chú ý, bao gồm các phôi không an toàn như thế nào Obj.magic. Để trích dẫn từ luận án của mình:

Tôi đã tập trung vào một tập hợp con của ngôn ngữ lập trình OCaml, đây là ngôn ngữ lập trình cấp cao, gọi theo giá trị, tuần tự. Việc triển khai CFML hiện tại hỗ trợ tính toán core lõi, bao gồm các hàm bậc cao hơn, đệ quy, đệ quy lẫn nhau và đệ quy đa hình. Nó hỗ trợ bộ dữ liệu, hàm tạo dữ liệu, khớp mẫu, ô tham chiếu, bản ghi và mảng. Tôi cung cấp một thư viện Caml bổ sung để thêm hỗ trợ cho con trỏ null và cập nhật mạnh.

Đó là một cách tiếp cận rất hấp dẫn nếu bạn muốn chứng minh một chương trình Caml cụ thể chính xác (ít hơn nếu bạn quan tâm đến tính siêu hình của nó).


Vì vậy, nếu tôi hiểu đúng, đặc điểm kỹ thuật của ngữ nghĩa của Ocaml được nhúng trong hệ thống. Có thể diễn giải công thức đặc trưng của (một số chức năng chính của hệ thống) như một đặc điểm kỹ thuật như vậy không? Ngoài ra, tôi cho rằng hệ thống được viết bằng OCaml. Có thể chỉ định và chứng minh tính đúng đắn của nó trong chính hệ thống?
Andrea Asperti

Đối với một chương trình OCaml nhất định, công thức đặc trưng của nó có thể được nghĩ đến về ngữ nghĩa học biểu thị, một đặc tả "ít chung nhất" có thể được sử dụng để chứng minh bất kỳ tính chất mong muốn nào của chương trình. Nếu bạn nói về "tính đúng đắn" của chính CFML, câu hỏi là: đối với ngữ nghĩa chính thức thay thế nào?
gasche

Thật kỳ lạ khi có một chương trình được cho là chứng nhận phần mềm và hành vi của họ không thể được chỉ định :)
Andrea Asperti

@AndreaAsperti Ý bạn là gì khi "nhúng trong hệ thống"? Ý tưởng đằng sau các công thức đặc trưng (CF) khá đơn giản: ánh xạ các chương trình thành các công thức logic (thường là trước và sau điều kiện) như các công thức mô tả chính xác ngữ nghĩa của các chương trình. Nói cách khác, hai chương trình đáp ứng cùng một CF nếu chúng không thể phân biệt theo ngữ cảnh. Bản đồ từ chương trình đến CF được thực hiện bằng cách cảm ứng cấu trúc của chương trình và có thể nhắm mục tiêu bất kỳ logic biểu cảm nào đủ. A. Logic của mục tiêu của Chargeuéraud, nhưng đó là một lựa chọn ngẫu nhiên.
Martin Berger

1
@MartinBerger: bài báo Guéneau et al chỉ chứng minh sự đúng đắn bởi vì phần trước / bài viết xuất phát không đặc trưng cho các chương trình mà họ xuất phát. CF của họ có nguồn gốc từ ngữ nghĩa chưa được đánh dấu của CakeML, nhưng ngôn ngữ đánh máy có sự tương đương quan sát khác nhau. (Để xác minh thực tế, điều này không quan trọng lắm, và nó dễ dàng hơn.)
Neel Krishnaswami

8

Bạn có thể quan tâm đến một triển khai ML được chứng nhận của Jacques Garrigue với Kiểu đa hình cấu trúc và các kiểu đệ quy , tạo ra sự đúng đắn của ngữ nghĩa tĩnh và động tính chất của suy luận cho ngôn ngữ ML với (đa dạng đệ quy và) đa hình cấu trúc, do đó chính thức hóa một trong các đa hình cấu trúc các góc nâng cao hơn của OCaml (các biến thể đa hình và các loại đối tượng).

Điều đó nói rằng, công việc này nhằm mục đích xác minh tính đúng đắn của các bộ phận tiên tiến hơn của hệ thống loại hơn là bao trùm bộ tính năng của các chương trình OCaml hiện có. Tôi nghĩ rằng về mặt cố gắng chứng minh tính đúng đắn của chương trình OCaml hiện có, CFML sẽ là lựa chọn tốt hơn.

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.