Mô tả đầu vào, đầu ra SMT-Solver

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java (Trang 41 - 42)

Hiện nay, nhiều công cụ SMT-Solver không những giải được lý thuyết tuyến tính mà còn giải được lý thuyết phi tuyến tính. Ví dụ, tìm nghiệm của 𝑠𝑖𝑛(𝑥) = 2𝑥 + 4 ∧ ( 𝑥/𝑦 > 1) với x , y ∈ R. Đa phần các công cụ SMT-Solver hiện nay đều đưa SAT- Solver vào bộ giải của mình. Cụ thể, trong pha tiền xử lí, biểu thức đầu vào cho công cụ SMT-Solver được chuyển về dạng biểu thức luận lý tương đương mà có thể giải được bằng các công cụ SAT-Solver. Mặt khác, vì pha tiền xử lí này có một hạn chế là làm mất tầng ngữ nghĩa mức cao mà biểu thức gốc chứa, nên SAT-Solver sẽ phải làm việc tốn kém hơn trong trường hợp biểu thức gốc chứa những sự thật hiển nhiên. Ví dụ, biểu thức x+y = y+x với x, y∈ Z. Cho đến nay, hạn chế nêu trên được giải quyết trong T-Solver.

Ba chuẩn đầu vào các công cụ SMT-Solver phổ biến gồm SMT-Lib, CVC3 và DIMACS4. Trong đó, chuẩn SMT-Lib là chuẩn sử dụng rộng rãi nhất. Hình 3.15 trình bày một hệ ràng buộc tuân theo chuẩn SMT-Lib. Cụ thể, theo sau từ khóa set-logic là ký hiệu lý thuyết cơ bản sẽ sử dụng trong SMT-Solver. Bốn lý thuyết cơ bản sử dụng gồm:

3http://cvc4.cs.nyu.edu/

4http://www.satcompetition.org/2009/format-benchmarks2009.html

30

 QF_LRA : toán học số thực tuyến tính định lượng tự do (quantifier-free linear real arithmetic)

 QF_LIA : toán học số nguyên tuyến tính định lượng tự do (quantifier-free linear integer arithmetic

 QF_RDL : lôgic hiệu số số thực định lượng tự do (quantifier-free real difference logic)

 QF_IDL : lôgic hiệu số số nguyên định lượng tự do (quantifier-free integer difference logic)

Trong đó, luận vănnghiên cứu sử dụng hai lý thuyết QF_LRA và QF_LIA để giải hệ ràng buộc số nguyên và số thực. Các biến được khai báo với từ khóa declare-fun và theo sau là kiểu biến (Int hoặc Real). Theo sau assert(! chính là các biểu thức trong hệ ràng buộc đã được biến đổi về chuẩn biểu thức trong SMT-Lib. Ví dụ hình 3.15 nêu đầu vào chuẩn SMT-Lib tương ứng với ví dụ nêu ở hình 3.11. Trong đó biểu thức

not(= a 0) tương ứng với biểu thức !(a == 0), biểu thức or (= (- b 2 ) b ) (and (= c d ) (= (- b 2 ) 0) tương ứng với biểu thức (b-2==b) or (c==d and b-2==0). Tên của mỗi biểu thức được đặt ngay sau biểu thức với từ khóa named (IP0, IP1, v.v). Quá trình giải hệ bắt đầu với từ khóa check-sat. Từ khóa print-success được gán giá trị false ám chỉ thông báo thành công sẽ không được hiển thị sau khi lệnh hoàn thành.

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java (Trang 41 - 42)

Tải bản đầy đủ (PDF)

(62 trang)