CHƯƠNG 3 MICROSOFT Z

Một phần của tài liệu PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ PHẦN MỀM DỰA TRÊN KỸ THUẬT KIỂM CHỨNG MÔ HÌNH (Trang 30 - 32)

Z3 là một công cụ tìm lời giải cho SMT đang được Microsoft phát triển. Hiện nay Z3 được đánh giá là một trong những công cụ tốt nhất và đang được sử dụng trong một số dự án của Microsoft. Trước tiên để hiểu được Z3 là gì chúng ta cần hiểu SMT và Công cụ tìm lời giải cho SMT ( SMT Solver) là gì.

3.1 SMT là gì

SMT là viết tắt của từ Satisfiability Module Theories, nghĩa là lý thuyết tính thỏa được [3]. Trong khoa học máy tính vấn đề lý thuyết tính thỏa được là một vấn đề quyết định cho các biểu thức logic (các biểu thức với lý thuyết nền tảng được diễn đạt trong logic bậc nhất với khả năng bằng nhau). Ví dụ kiểu lý thuyết được sử dụng trong khoa học máy tính là lý thuyết của số thực, lý thuyết số nguyên, lý thuyết các cấu trúc dữ liệu khác nhau như: danh sách, mảng, bit vectors.

Chúng ta nói rằng một công thức F là được thỏa mãn, nếu có một thể hiện (interpreter) để F là đúng (TRUE).

Ví dụ công thức a + b > 3 với a < 0 , b>0 là thỏa mãn trong lý thuyết số nguyên, vì tồn tại a = -1 và b= 5 để công thức trên là đúng.

Một khái niệm nữa là không thõa mãn. Một câu hợp lệ (valid) khi nó là TRUE với tất cả các cấu trúc (các giá trị của nó). Ví dụ: Với mọi x P(x)->p(a) là hợp lệ. Vì vậy câu (biểu thức) là không thỏa mãn nếu nó sai với tất cả các cấu trúc (giá tri).

Một công cụ tìm lời giải cho SMT có chức năng kiểm tra một biểu thức là thõa mãn hay không trên lý thuyết của nó. Nếu biểu thức là thỏa mãn, một mô hình cho biểu thức đó sẽ được sinh ra.

3.2 Z3 là gì

Z3 là công cụ tìm lời giải cho lý thuyết tính thỏa được (SMT- Solver) [3]. Z3 có chức năng như là một bộ kiểm tra tính thỏa mãn cho rất nhiều kiểu logic bậc nhất với lý thuyết được xây đựng trong đó. Những lý thuyết được hỗ trợ đó là:

• Uninterpreter function và các ký hiệu vị từ.

• Số thực và số nguyên( hỗ trợ giới hạn cho số học không tuyên tính) • Kiểu bit- Vector

• Kiểu mảng

• Kiểu bản nghi, kiểu liệt và kiểu dữ liệu đệ quy

Z3 kiểm tra một tập các công thức có thỏa mãn trong lý thuyết của nó hay không. Nếu tập công thức đó là thỏa mãn, khi đó tập công thức đó là tồn tại. Trong thực tế Z3 là

một thủ tục ra quyết định: Nó luôn luôn đảm bảo rằng trả về 1 câu trả lời chính xác. Khi một tập của công thức F là thỏa mãn, Z3 có thể đưa ra một mô hình cho F. Mô hình này có thể sử dụng trong kiểm chứng phần mềm, bởi vì chúng có thể dễ dàng được biên dịch vào các vết thực thi.

Z3 có thể được sử dụng bằng dòng lệnh, hoặc một thư viện, trong phiên bản hiện thời, Z3 cung cấp các giao diện lập trình ứng dụng (API ) cho C, .NET và OCaml.

3.3 Tại sao lại là Z3?

Phần này giải thích tại sao lại sử dụng Z3 để mở rộng chứ không phải là các công cụ tìm lời giải khác. Hiện nay có rất nhiều các công cụ tìm lời giải như Z3, Yices, CVC, CVC3, Choco, Iasolver, Spear, OpenSMT... Tuy nhiên Z3 nổi lên như là một công cụ mạnh nhất hiện nay, bằng chứng là hàng năm có một cuộc thi SMT-COMP. Trong cuộc thi này có sự tham ra của hầu hết các công cụ tìm lời giải và được phân chia theo từng mảng: Ví dụ thi với Số học tuyến tính nguyên, Số học tuyến tính thực hay xử lý mảng, uninterpreted functions. Và Z3 đã dành chiến thắng trong rất nhiều tiêu chí. Như năm 2007, Z3 đã dành được 4 giải nhất và 7 giải nhì. Năm 2008, Z3 dành được 9 giải nhất và 6 giải nhì.

Ngoài ra JPF hiện thời còn nhiều hạn chế (như đã chỉ ra phần 2.2.4). Và việc sử dụng Z3 sẽ giúp mở rộng khả năng của JPF trong việc sinh dữ liệu kiểm thử. Hơn nữa mặc dù Z3 được phát triến bằng ngôn ngữ C ++, tuy nhiên Z3 hỗ trợ rất nhiều định dạng cũng như nhiều API, vì vậy việc tích hợp cũng sẽ trở lên dễ dàng hơn.

3.4 Kiến trúc của Z3

Hình 3-1 mô tả kiến trúc tổng quan của Z3 [6].

Simplifier – Bộ giản hóa : Biểu thức đầu vào trước tiên được xử lý thông qua bộ giản hóa. Bộ giản hóa này sẽ áp dụng một số quy tắc giảm bớt đại số chuẩn như: P true -> P.

Compiler – Bộ biên dịch: Cấu trúc dạng cây đơn giản khi qua bộ giản hóa được chuyển về một cấu trúc khác bao gồm các mệnh đề và các nút (node).

Congruence Closure core – Lõi kết thúc tương đẳng: Sẽ nhận các lệnh thực sự từ công cụ tìm lời giải SAT đến các nguyên tử (atoms). Các nguyên tử sẽ được phân loại trên các đẳng thức và các biểu thức nguyên tử, như bất đẳng thức số học. Các đẳng thức được xác nhận bởi SAT sẽ được mở rộng bằng lõi kết thúc tương đẳng, và sử dụng một cấu trúc dữ liệu gọi là lược đồ E ( E-graph)[3]. Mỗi một nút trong lược đồ này sẽ trỏ vào một công cụ tìm lời giải lý thuyết ( Theory Solver).

Một phần của tài liệu PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ PHẦN MỀM DỰA TRÊN KỸ THUẬT KIỂM CHỨNG MÔ HÌNH (Trang 30 - 32)