Chuyển dịch của lJ fU GK

Một phần của tài liệu Nghiên cứu phương pháp kiểm chứng mô hình phần mềm dựa trên SAT (Trang 41)

4 Ngôn ngữ SMV, công cụ NuSMV và thực nghiệm

3.3Chuyển dịch của lJ fU GK

Sau khi có được định nghĩa chuyển dịch cho đường dẫn với cả hai trường hợp, chỉ cần định nghĩa dịch chuyển vào trong SAT. Trước tiên, cần hai ký hiệu bổ trợ. ĐặtlLk là true khi và chỉ khi tồn tại một dịch chuyển từ sk tới sl, vàLk là true nếu tồn tại bất kỳ quay lui nào trong(s0, ...,sk).

Điều kiện lặp : Với lk, cho lLk := R(sk,sl), và cho Lk := ∨k

l=0lLk. Biểu diễn JM, fKk như sau: JM, fKk := JMKk |{z}∧ ( (¬Lk∧JfK0 k)∨ kl=0 (lLklJfK0 k))

Từ đó, lấy một công thức LTL f, tồn tại một đường dẫn π thỏa mãn f khi và chỉ khi tồn tạik sao choJM, fKk thỏa mãn. Điều này tương đương với M |= Af khi và chỉ khiJM, fKk là không thỏa mãn với mọik.

3.5. Giới thiệu về SMT

Luận văn chủ yếu tập trung vào SAT và kiểm chứng mô hình dựa trên SAT. Do vậy, trong luận văn chỉ giới thiệu về SMT, cùng với những mặt mạnh của SMT so với SAT.

Bài toán SMT[9](Satisfiability Modulo Theories) là bài toán quyết định cho các công thức logic đối với sự kết hợp của nền tảng các lý thuyết thể hiện trong logic cấp một cổ điển với tương đương. Các ví dụ của các lý thuyết cổ điển được sử dụng trong khoa học máy tính là lý thuyết về các số thực, lý thuyết về các số nguyên, và các lý thuyết về các cấu trúc dữ liệu khác nhau như danh sách, mảng, bit vector, . . . . SMT có thể được xem như bài toán thỏa mãn rằng buộc và do đó một phương pháp hình thức tới rằng buộc của chương trình.

Một thể hiện SMT là một công thức trong logic cấp một, với một số hàm và vị từ có thêminter pretations, và SMT là bài toán xác định xem liệu một công thức như vậy có thỏa mãn. Nói cách khác, SMT là một thể hiện của SAT với một số biến nhị phân được thay thế bởi các vị từ trên một tập hợp phù hợp của các biến không phải biến nhị phân. Một vị từ cơ bản là một hàm nhị phân có giá trị của các biến không phải là nhị phân. Ví dụ các vị từ bao gồm bất đẳng thức tuyến tính(ví dụ,

3x+ 2yz ≥ 4) hoặc đẳng thức gồm hàm biểu trưng (ví dụ, f(f(u,v)) = f(u,v), trong đó f là một hàm số không xác định của hai biến số không xác định).

Một thể hiện SMT là một sự tổng quát hóa của thể hiện SAT trong đó các tập hợp các biến được thay thế bởi các vị từ từ tính đa dạng dưới các lý thuyết. Một cách rõ

ràng, các công thức SMT cung cấp nhiều ngôn ngữ mô hình hơn so với khả năng của các công thức SAT. Ví dụ như, một công thức SMT cho phép mô hình hoạt động của đường dữ liệu của một bộ vi xử lý vào các con chữ chứ không phải là cấp độ bit.

Các nỗ lực để giải quyết các thể hiện của SMT liên quan tới chuyển chúng tới các thể hiện SAT(ví dụ, một biến số nguyên 32 bit sẽ được mã hóa bởi các biến 32 bit với trọng số thích hợp và các phép toán như ‘cộng’ sẽ được thay thế bởi các phép toán logic bậc thấp trên các bit) và truyền công thức này tới một giải công cụ SAT. Hướng tiếp cận này được gọi là hướng tiếp cậneager, hướng tiếp cận này có lợi ở điểm sử dụng được những giải công cụ tốt nhất của SAT hiện nay. Một cách xử lý khác, khám phá rõ ràng các sự việc, dẫn đến phát triển các giải công cụ SMT tích hợp chặt chẽ lý luận logic của tìm kiếm DPLL với lý thuyết cụ thể giải quyết(Tsolver) xử lý các phép giao của các vị từ từ một lý thuyết được cho. Hướng tiếp cận này gọi là hướng tiếp cận lazy. Với các hệ thống là hữu hạn các trạng thái, mọi thứ điều có thể được mã hóa thành boolean, và do vậy chúng luôn dừng, thì sử dụng giải công cụ SAT là đủ. Nhưng với các hệ thống có vô hạn trạng thái, kết thúc nếu mọi thứ có thể mã hóa trong một sự có thể mô tả của lý thuyết SMT, sử dụng giải công cụ SMT là cần thiết.

Chương 4

Ngôn ngữ SMV, công cụ NuSMV và thực nghiệm

4.1. Ngôn ngữ SMV

Ngôn ngữ SMV[13] dùng để mô tả các hệ thống hữu hạn trạng thái. Các kiểu dữ liệu mà ngôn ngữ này cung cấp bao gồm: kiểu logic (boolean), kiểu số nguyên (bounded interger subrange) và các kiểu dữ liệu liệt kê symbolic enum. Các mô tả của một hệ thống phức tạp có thể được chia nhỏ thành các module và mỗi một module này có thể được thực thi nhiều lần.

Một chương trình viết bằng ngôn ngữ SMV có các phần như sau: MODULE tên module

VAR

Khai báo các biến. ASSIGN

Mô tả các bước chuyển trạng thái của hệ thống.

Kết thúc câu lệnh là một dấu chấm phẩy (;). Các mô tả của một hệ thống phức tạp có thể được chia nhỏ thành các module và mỗi một module này có thể được thực thi nhiều lần. Một biểu thức khai báo biến có định dạng như sau:

<tên biến> : <kiểu dữ liệu>;

4.1.1. Kiểu dữ liệu trong SMV

Các kiểu dữ liệu trong SMV được thể hiện như sau:

• Kiểu logic chỉ chứa giá trị 0 hoặc 1. Ví dụ khi khai báo một biến logic:

• Kiểu liệt kêlà một tập hợp các giá trị. Ví dụ, câu lệnhvar1 : {ready,willing,able};

khai báo một biến có thể có các giá trị là ‘ready’, ‘willing’, ‘able’.

• Một mảng trong ngôn ngữ SMV được khai báo theo dạng sau: <tên biến> : array <x> .. <y> of <kiểu giá trị>. Câu lệnh trên sẽ khai báo một mảng

các phần tử có kiểu là <kiểu giá trị>, chỉ số của phần tử chạy từ < x > đến < y >.

• Kiểu cấu trúc của SMV: Một biến có kiểu cấu trúc có thể được khai báo như sau: foo : struct c1 : kiểu 1;

c2 : kiểu 2; ... (adsbygoogle = window.adsbygoogle || []).push({});

cn : kiểu n; Trong đóc1,c2, ...,cnlà các tên biến. Khai báo trên tương đương với khai báo sau:foo.c1 : kiểu 1;

foo.c2 : kiểu 2; ...

foo.cn : kiểu n;

4.1.2. Phép toán trong SMV

Giá trị của một biến là một chuỗi các giá trị. Chuỗi này không giới hạn về độ dài và các giá trị của chuỗi phải thuộc kiểu dữ liệu của biến đó. Ví dụ, một biến kiểu logic có thể có giá trị bằng:0; 1; 0; 1;. Một phép toán tác động đến từng phần tử đó. Ví dụ, xét trường hợp phép toán NOT, ký hiệu là “∼”, áp dụng cho biến sau:

f oo = 0; 1; 0; 1;... ta được kết quả ∼ f oo = 1; 0; 1; 0;.... Một phép toán khác là phép toán AND, ký hiệu là “&”. Ví dụ: f oo = 0; 1; 0; 1;...và bar = 0; 0; 1; 1;... khi đó f oo&bar = 0; 0; 0; 1;....

Phép gán là một biểu thức có dạng:

<tên biến> := <biểu thức>;

Trong đó<biểu thức>là một biểu thứckết hợp các biến và các phép toán như “∼” và “&”. Sau khi thực hiện câu lệnh trên, biến ở vế trái sẽ có giá trị bằng giá trị của biểu thức ở vế phải. Ví dụ, với phép gán:zip := f oo&bar với các giá trị của biến foo và bar ở trên ta đượczip := 0; 0; 0; 1;.... Các phép gán trong ngôn ngữ SMV được thông dịch đồng thời. Như vậy thật ra hai phép gán liên tiếp nhau trong một chương trình không có nghĩa là chúng được thực hiện tuần tự. Ví dụ với hai phép gán trong một chương trình:y := x+1;;z := y+1;chúng ta có z := x+2;.

Trong SMV còn có một phép toán đặc biệt, đó là phép toán next. Giả sử với x là một biến, khi đó next(x) sẽ là giá trị tiếp theo của x. Nói cách khác, giá trị thứ i

củanext(x)bằng giá trị thứ(i+1) của biến x. Ví dụ:

x = 0,1,2,3...thìnext(x) = 1,2,3,4....

4.2. Công cụ NuSMV

NuSMV là một công cụ kiểm chứng mô hình được trường đại học Carnegie Mellon University (CMU) và viện per la Ricerca Scientifica e Tecnolgica (IRST). NuSMV được thiết kế với kiến trúc mở, mềm dẻo và được mô tả đầy đủ để phục vụ cho việc kiểm chứng mô hình phần mềm. NuSMV có thể xử lý các tệp tin viết bằng ngôn ngữ SMV. Tệp tin này chứa hệ thống đã được mô hình hóa và các đặc tả thuộc tính mà hệ thống cần kiểm chứng. Sau khi xử lý, NuSMV sẽ đưa ra thông báo hệ thống có thỏa mãn các thuộc tính đó hay không, nếu hệ thống không thỏa mãn, NuSMV sẽ đưa ra phản ví dụ. NuSMV hỗ trợ cả đặc tả thuộc tính bằng LTL và CTL. Bắt đầu từ bản NuSMV2 được phân phối với giấy phép mã nguồn mở, cho phép bất cứ ai quan tâm đến dụng công cụ và tham gia vào sự phát triển của NuSMV2. Mục đích của dự án mã nguồn mở NuSMV là để cung cấp cho cộng đồng kiểm tra mô hình một nền tảng chung cho việc nghiên cứu, thực hiện, và so sánh các kỹ thuật kiểm tra mô hình tượng trưng mới. Từ việc phát hành NuSMV2, nhóm nghiên cứu NUSMV đã nhận được sự đóng góp mã cho các phần khác nhau của hệ thống. Một số công ty, viện nghiên cứu và thương mại đã bày tỏ quan tâm hợp tác để phát triển NuSMV. Các tính năng chính của NuSMV như sau: NuSMV cho phép các thể hiện đồng bộ hoặc bất đồng bộ các hệ thống hữu hạn, và phân tích các đặc tả thể hiện trong CTl và LTL, sử dụng kỹ thuật kiểm chứng mô hình dựa trên BDD và SAT. Sau đây là một ví dụ sử dụng NuSMV để kiểm chứng đặc tả ban đầu của hệ thống có đáp ứng được các điều kiện mà người dùng đưa ra không.

4.3. Thực nghiệm sử dụng công cụ NuSMV

Thực nghiệm thể hiện các yêu cầu người dùng của một hệ thống thư viện, có một số khái niệm trong quản lý thư viện như sau:

bỏ qua việc đặt quyển sách đó trước.

T aking một quyển sách có nghĩa là mượn quyển sách sau khi đã đặt trước. • Borrowing một quyển sách biểu thị hoặc làtalkinghoặc làlending.

Trong danh sách các yêu cầu, một member là một người đã tham gia ( và vẫn chưa rời khỏi ) vào thành viên của thư viện. Biểu đồ lớp yêu cầu tương ứng với mô hình như hình 4.1 Hệ thống thư viện có hai đối tượng chính là các book

Một phần của tài liệu Nghiên cứu phương pháp kiểm chứng mô hình phần mềm dựa trên SAT (Trang 41)