3.5. Sinh tập dữ liệu kiểm thử dựa trên giải nghiệm hệ ràng buộc ràng buộc
Cho tới nay, vấn đề tìm nghiệm thỏa mãn hệ ràng buộc một cách hiệu quả là một bài toán khó và thách thức. Yêu cầu giải hệ tìm nghiệm trong thời gian nhanh nhất có thể ngày càng gia tăng trong các bài toán khoa học kỹ thuật . Với các công cụ sinh ca kiểm thử tự động, nhu cầu giải hệ trong thời gian thực là tất yếu và là một vấn đề mang tính cấp bách. Vì vậy, luận văn này trình bày hai cách tiếp cận để tìm nghiệm thỏa mãn hệ ràng buộc gồm: tận dụng sức mạnh các công cụ SMT-Solver hiện nay như Z3, SmtInterpol, v.v. và kỹ thuậtsinh ngẫu nhiên.
3.5.1.Giải hệ sử dụng kỹ thuậtsinh ngẫu nhiên
Kỹ thuậtsinh ngẫu nhiên là một kỹ thuậttruyền thống để giải hệ ràng buộc. Trong kỹ thuậtnày, tập giá trị các biến sẽ được sinh ngẫu nhiên trong một khoảng cho trước, trong một khoảng thời gian cho trước, với một số lần sinh xác định. Với những hệ ràng buộc có tính chất đặc biệt như nhiều biểu thức logic, biểu thức logic đặc biệt (ví dụ
a==2) hay bản thân mỗi biểu thức logic phức tạp thì kỹ thuậtsinh ngẫu nhiên dễ dàng thể hiện điểm yếu về thời gian.
3.5.2.Giải hệ sử dụng SMT-Solver
Trong toán học mệnh đề, một câu của logic vị từ là một biểu thức luận lý theo dạng chuẩn mà không có biến tự do xuất hiện trong biểu thức đó. Biến tự do là một kí hiệu xác định những vị trí cụ thể trong một biểu thức mà tại vị trí đó, xảy ra sự thay
28
thế biến với một giá trị nào đó. Biến tự do không có giá trị cụ thể và cận cụ thể. Nếu một biến tự do mang giá trị nằm trong một cận xác định, thì nó được gọi là biến biên. Ví dụ cụ thể, trong biểu thức ∑10𝑘=1𝑓(𝑘, 𝑛), biến tự do là n, biến biên là k vì k có cận [1, 10].
Lí do chính khiến câu không mang biến tự do là do câu cần một giá trị cụ thể, thay vì giá trị không xác định. Cụ thể, giá trị của câu có thể là đúng hoặc sai. Tập các câu hợp chính là một lý thuyết,khi đó bản thân mỗi câu nếu đứng độc lập chính là định lý. Để đánh giá tính đúng-sai của một câu, câu được tham chiếu đến một thể hiện của lý thuyết(interpretation of the theory). Với lý thuyết logic vị từ, các thể hiện thường được gọi là các cấu trúc. Một lý thuyết được coi là thỏa mãn khi tất cả mọi câu tạo nên lý thuyết đó đều đúng. Việc nghiên cứu các thuật toán để tìm ra các thể hiện của lý thuyết một cách tự động sao cho mọi câu trong lý thuyết đều mang giá trị đúng được gọi là vấn đề SMT.
Trong khoa học máy tính và toán học mệnh đề, vấn đề SMT (lý thuyết modul thỏa mãn) là một vấn đề NP(nondeterministic polynomial time) với các biểu thức logic được tạo thành từ sự kết hợp các nền tảng lý thuyết cơ bản. Ví dụ cụ thể, các lý thuyết điển hình sử dụng trong khoa học máy tính gồm lý thuyết về số nguyên, số thực; lý thuyết về các kiểu dữ liệu có cấu trúc như list, array, bit vectors (hay bit array),v.v. Vấn đề SMT có thể được coi là một dạng của vấn đề thỏa mãn ràng buộc (constraint satisfaction problem).
Chú ý thêm rằng, vấn đề SMT là mở rộng của vấn đề SAT (Boolean satisfiability problem). Vấn đề SAT là làm sao xác định được một thể hiện (hay nghiệm) sao cho thỏa mãn biểu thức luận lý đã cho. Trong vấn đề SAT, giá trị một biến chỉ có thể là
truehoặc false. Ví dụ, biểu thức luận lý a and not b có một thể hiện thỏa mãn là a = true, b = false vì thỏa mãn a and not b = true. Vấn đề SAT là một trong những vấn đề đầu tiên được chứng minh là vấn đề NP.
Để giải vấn đề SMT, hay nói cụ thể hơn là giải các biểu thức logic, các công cụ giải SMT-Solver được ra đời. Hình 3.14 mô tả đầu vào, đầu ra của các công cụ SMT- Solver. Đầu vào là hệ cần tìm nghiệm thỏa mãn được viết theo dạng chuẩn đầu vào của công cụ đó. Đầu ra là nghiệm thỏa mãn trong trường hợp SAT hoặc vô nghiệm trong trường hợp UNSAT.
29 Encoder Encoder Hệ ràng buộc SAT / UNSAT Bắt đầu Kết thúc