Hình 3.1: Kiến trúc của Z
3.6.1 Các chức năng chính của SMT-LIB.
SMT-LIB cung cấp các lý thuyết đặc tả, logic và các tiêu chuẩn đo lường. Với một tiêu chuẩn đo lường đã có, một biểu thức có thể được kiểm tra tính thỏa mãn với khía cạnh của lý thuyết nào đó.
Phiên bản 2.0 đã cải tiến một số chức năng để làm tăng khả năng biểu diễn cũng như linh động hơn. Phiên bản này đưa ra:
• Môt ngôn ngữ được sử dụng để chuyển các công thức dưới dạng một kiểu phiên bản của logic bậc một.
• Một ngôn ngữ cho việc đặc tả các lý thuyết nền tảng (background theories) và chỉnh sửa một số từ vựng chuẩn cho các kiểu, các phương thức, và các ký hiệu vị từ (predicate symbol).
• Một ngôn ngữ cho đặc tả logic, các lớp được giới hạn của các biểu thức được kiểm tra tính thỏa được trên lý thuyêt nền tảng.
• Một ngôn ngữ dòng lệnh (command language) cho việc tương tác với các công cụ tìm lời giải SMT theo giao diện ngữ cảnh. Nó cho phép xác nhận hoặc hủy bỏ các biểu thức, truy vấn về khả năng thỏa mãn của chúng, thực thi mô hình của chúng. Dưới đây là một ví dụ về một biểu thức được biểu diễn dưới dạng SMT – LIB: Với: x1, x2, x3, x4, x5, x6 là số nguyên, biểu thức:
((x1 – x2)>=1) && ((x1 - x2) <=3 )&&( x1 = (2*x3 + x5))&&( x3 = x5)&&(x2 = 6* x4) Khi đó có thể biểu diễn dưới dạng SMT-LIB
(benchmark example :status sat
:logic QF_LIA
:extrafuns((x1 Int)(x2 Int)(x3 Int)(x4 Int)(x5 Int)) :formula (and (>= (- x1 x2) 1) (<= (- x1 x2) 3) (= x1 (+ (* 2 x3) x5)) (= x3 x5) (= x2 (* 6 x4))) ) 3.7 Các quan hệ, phương thức, và hằng số.
Các khối cơ bản tạo nên các biểu thức SMT là các hằng số (constant), phương thức, và quan hệ. Các hằng số là các phương thức không có tham số. Các quan hệ là các phương thức nếu phương thức đó trả về một giá trị kiểu Boolean. Các phương thức có thế có tham số kiểu Boolean, vì vậy chúng ta có thể ghép các phương thức với các quan hệ một cách tùy biến. Tóm lại mọi thứ có thể coi như là một phương thức.