Một hệ thống loại có thể phục vụ như một trợ lý bằng chứng cho các chức năng nước ngoài?


9

Cho rằng:

  1. Một ngôn ngữ có hệ thống loại rất biểu cảm (ví dụ Idris ) cũng có thể có các cơ chế thoát như giao diện chức năng nước ngoài / unsafePerformIO.
  2. Có những trợ lý chứng minh có thể được sử dụng để chứng minh một số thuộc tính của chương trình được viết bằng ngôn ngữ không có hệ thống loại có khả năng thể hiện các thuộc tính đó.
  3. Sự tương ứng của CurryTHER Howard cho thấy rằng việc thực hiện kiểm tra thành công một chức năng với một loại nhất định là bằng chứng về những gì được thể hiện bởi loại đó.

Người ta có thể thể hiện bằng chứng không tầm thường về một số thuộc tính của mã ngoại ngữ trong hệ thống loại của ngôn ngữ bản địa không?

Ví dụ: giả sử tôi có một hàm C được gọi là ổn định Hàm C. Tôi có thể chứng minh rằng hàm không sắp xếp lại các phần tử bằng nhau, cho tất cả các đầu vào, trong mã Idris của tôi thay vì sử dụng trợ lý chứng minh riêng biệt không?

Câu trả lời:


10

Câu chuyện dài: không bạn không thể. Hàm ngoại lai giống như một hộp đen và loại bạn gán cho nó là một lời hứa bạn thực hiện: trong thư từ Curry-Howard tương ứng với việc thêm một tiên đề vào lý thuyết của bạn.

Điều đó đang được nói, có nhiều cách. Ví dụ, trong Coq, có nhiều hình thức khác nhau của tiêu chuẩn C (ví dụ: công việc của Robbert Krebbers ). Vì bạn có một đại diện rõ ràng về các chương trình C và ngữ nghĩa của chúng, bạn có thể viết mã trực tiếp trong trợ lý chứng minh và sau đó có thể chứng minh một số thuộc tính của 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.