2012-07-17 42 views
26

Tôi tự hỏi nếu ai đó có thể cho tôi biết sự khác biệt giữa Z3 và coq? Dường như với tôi rằng coq là một trợ lý bằng chứng trong đó nó đòi hỏi người dùng phải điền vào các bước chứng minh, trong khi Z3 không có yêu cầu đó. Nhưng có vẻ như coq cũng có chiến thuật tự động tương tự như những gì Z3 làm? Hoặc có thể khả năng tìm kiếm bằng chứng trong coq không mạnh bằng Z3?Sự khác biệt giữa Z3 và coq

Trả lời

49

Coq là một định lý tương tác prover (aka trợ lý bằng chứng). Nó cung cấp một ngôn ngữ để viết các định nghĩa toán học, các thuật toán và định lý. Nó cũng cung cấp một môi trường để sản xuất bằng chứng kiểm tra máy. Coq đã được sử dụng để chính thức hóa các định lý toán học, và cung cấp ngữ nghĩa của các ngôn ngữ lập trình. Hôm nay, chúng tôi có thể tìm thấy nhiều giấy tờ tại POPL đã sử dụng Coq. Một số người cho rằng trong tương lai, các hệ thống như Coq sẽ được sử dụng rộng rãi bởi các nhà toán học. Các article có một đối số hấp dẫn cho bằng chứng chính thức trong toán học. Gần đây, Georges Gonthier sử dụng Coq để tạo bằng chứng khảo sát về định lý bốn màu. Coq có một lõi nhỏ đáng tin cậy, và cung cấp đảm bảo cao.

Z3 là một trình giải thích lý thuyết modulo có khả năng đáp ứng được yêu cầu (SMT). Ngôn ngữ của nó được nhiều sắp xếp theo thứ tự logic + lý thuyết như số học, bit-vectơ, dữ liệu-loại, mảng, vv Ngôn ngữ này không phải là biểu cảm như là một trong những sử dụng trong Coq. Z3 cũng không hỗ trợ quản lý bằng chứng như Coq. Z3 chủ yếu được sử dụng trong kiểm thử và kiểm tra phần mềm. Nó cũng có thể được sử dụng để giải quyết các ràng buộc, các vấn đề lập kế hoạch, các câu đố, v.v. Có một sự nhấn mạnh rất lớn trong việc tìm kiếm các mô hình (tức là các giải pháp) cho các công thức thỏa đáng. article mô tả nhiều ứng dụng Z3 trong Microsoft và các nơi khác. Z3 về cơ bản là một định lý tự động. Trong Z3, chiến thuật được sử dụng để chỉ định domain specific strategies. Đó là, giải quyết tùy chỉnh cho các vấn đề trong một miền ứng dụng cụ thể. Z3 có thể sản xuất chứng minh/chứng chỉ có thể được kiểm tra độc lập. Tuy nhiên, việc tạo bằng chứng không phải là trọng tâm chính của dự án Z3. Hơn nữa, nhiều mô-đun không hỗ trợ sản xuất bằng chứng và phải được vô hiệu hóa khi tạo bằng chứng được yêu cầu bởi người dùng. Z3 cũng đã được tích hợp trong các trình hỗ trợ bằng chứng như Isabelle và một số hoạt động tích hợp Z3 vào Coq. Ý tưởng là để có được tốt nhất của cả hai thế giới: ngôn ngữ rất biểu cảm và tự động hóa rất tốt. Z3 cũng có thể được xem như một công cụ lý luận logic có thể được nhúng trong các ứng dụng lớn hơn. Trên thực tế, đó là trường hợp cho mọi ứng dụng Z3 cho đến nay. Người dùng cuối không sử dụng trực tiếp Z3. Nó được ẩn bên trong các công cụ như Isabelle, Pex, VCC, v.v. new Python front-end cho Z3 cố gắng thay đổi điều đó.

Các vấn đề liên quan