Tải bản đầy đủ (.pdf) (66 trang)

đặc tả và chứng minh tính đúng đắn của thiết kế cho các hệ đa tác tử

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (982.65 KB, 66 trang )

Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

i





















ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN



NGUYỄN QUỲNH CHI


ĐẶC TẢ VÀ CHỨNG MINH TÍNH ĐÚNG ĐẮN
CỦA THIẾT KẾ CHO CÁC HỆ ĐA TÁC TỬ


Chuyên ngành : BẢO ĐẢM TOÁN HỌC CHO MÁY TÍNH VÀ HỆ
THỐNG TÍNH TOÁN

Mã số : 60 46 35

LUẬN VĂN THẠC SĨ


HƢỚNG DẪN KHOA HỌC: TS. Phạm Ngọc Hùng



Hà Nội - 2010


Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

ii

LỜI CẢM ƠN

Trước tiên tôi xin bày tỏ lòng biết ơn sâu sắc tới TS. Phạm Ngọc Hùng, giảng
viên Bộ môn Công nghệ phần mềm - Khoa Công nghệ thông tin - Trường Đại học
Công nghệ - ĐHQGHN. Trong thời gian học và làm luận văn tốt nghiệp, thầy đã
dành nhiều thời gian quý báu và tận tình chỉ bảo, hướng dẫn tôi trong việc nghiên
cứu, thực hiện luận văn.

Xin cảm ơn bạn bè, đồng nghiệp và nhất là các thành viên trong gia đình đã
tạo mọi điều kiện tốt nhất, động viên, cổ vũ tôi trong suốt quá trình học tập và
nghiên cứu để hoàn thành tốt bản luận văn tốt nghiệp này.
Nam định, Ngày 20 tháng 06 năm 2013
Học viên thực hiện

Nguyễn Quỳnh Chi







Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

iii


LỜI CAM ĐOAN

Tôi xin cam đoan rằng, đây là kết quả nghiên cứu của tôi trong đó có sự giúp
đỡ rất lớn của thầy hướng dẫn và gia đình. Các nội dung nghiên cứu và kết quả
trong đề tài này hoàn toàn trung thực.
Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả đã
được liệt kê tại phần tài liệu tham khảo ở cuối luận văn.
Nam Định, Ngày 20 tháng 06 năm 2013
Học viên thực hiện



Nguyễn Quỳnh Chi








Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

iv



BẢNG CÁC CHỮ VIẾT TẮT


















Viết tắt
Tên đầy đủ
MAS
Multi-Agent System
OTS
Observation Transition System
QLOCK
Locking with queue
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

v


Phụ lục

Giới thiệu 1
1.1 Đặt vấn đề 1
1.2 Nêu bài toán 3
1.3 Kết quả 3
1.4 Cấu trúc luận văn 4
Chương 2 5
Tổng quan về CafeOBJ 5
2.1 Giới thiệu 5
2.2 Đặc tả và kiểm chứng trong CafeOBJ 10
2.2.1 Ví dụ 10
2.2.2 Đặc tả số tự nhiên 11
2.2.3 Đặc tả thuộc tính 12

2.2.4 Kiểm chứng thuộc tính 12
Chương 3 17
Đặc tả hệ thống đa tác tử 17
3.1. OTS (Observation transition system) 17
3.2 Mô tả bài toán QLOCK 18
3.4 Đặc tả bài toán QLOCK bằng ngôn ngữ cafeOBJ 22
Chương 4 29
Kiểm chứng hệ thống đa tác tử 29
4.1 Thuộc tính INV1 được mô tả 29
4.1.1 Kiểm chứng bằng phương pháp quy nạp trong ngôn ngữ tự nhiên 29
4.1.2. Kiểm chứng bằng phương pháp quy nạp trong ngôn ngữ CafeOBJ 30
4.2- Thuộc tính INV2 được mô tả 46
Chương 5 Error! Bookmark not defined.
Kết luận 55
Tài liệu tham khảo 57
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

i


DANH MỤC HÌNH VẼ

Hình 2.1- Cú pháp của mô đun 6
Hình 2.2- Đặc tả 2 mô đun BASIC-NAT trong CafeOBJ 8
Hình 2.3. Đọc file nat+ps.mod trong CafeOBJ 9
Hình 2.4: Đọc chi tiết file cần chứng minh trong CafeOBJ 9
Hình 2.5. Mô tả eof trong CafeOBJ 10
Hình 2.6. Mô đun BASIC-NAT trong CafeOBJ 11
Hình 2.7 Đặc tả thuộc tính cho điều kiện (*) và điều kiện (**) 12
Hình 2.8 Chứng minh tính chất kết hợp của phép cộng các số tự nhiên 13

Hình 2.9 Chứng minh 0+j=j+0 16
Hình 2.10 Chứng minh lemma2: i + s(j) = s(i+j) 16
Hình 2.11 Chứng minh i+j = j + i 17
Hình 3.1 Mô tả bài toán Qlock 20
Hình 3.2. View of QLOCK 21
Hình 3.3 Mô hình QLOCK với OTS 22
Hình 3.4 Đặc tả (signature) cho hệ thống QLOCK 24
Hình 3.5 Đặc tả mô đun LABEL 25
Hình 3.6 Đặc tả mô đun PID 25
Hình 3.7 Kiểu biến tổng quát cho hàng đợi QUEUE 26
Hình 3.8 Hàng đợi QUEUE cho bài toán QLOCK. 27
Hình 3.9 Hành động want trong hệ thống QLOCK 28
Hình 3.10 Hành động try trong hệ thống QLOCK 28
Hình 3.11 Hành động exit trong hệ thống QLOCK 29
Hình 4.1 Kiểm tra giá trị của INV1 tại trạng thái init 31
Hình 4.2 Kiểm tra giá trị của INV1 với hành động want tại trạng thái s 32
Hình 4.3 Kiểm chứng INV1 với hành động want cho trường hợp ~(c-want) 32
Hình 4.4 Kiểm chứng INV1 với hành động want cho trường hợp (c-want) 33
Hình 4.5 Kiểm chứng INV1 với hành động want cho trường hợp (2) 34
Hình 4.6 Kiểm chứng INV1 với hành động want cho trường hợp (3) 35
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

ii

Hình 4.7 Kiểm chứng INV1 với hành động want cho trường hợp (4) 36
Hình 4.8 Kiểm chứng INV1 với hành động want cho trường hợp (5) 36
Hình 4.9 Kiểm chứng istep1 với hành động want cho trường hợp (5) 37
Hình 4.10 Kiểm chứng istep 1 với hành động try cho trường hợp c-try (s,k) 38
Hình 4.11 Kiểm chứng istep 1 với hành động try cho trường hợp ~(c-try (s,k)) 38
Hình 4.12 Kiểm chứng istep 1 với hành động try cho trường hợp (2) 39

Hình 4.13 Kiểm chứng istep 1 với hành động try cho trường hợp (3) 40
Hình 4.14 Kiểm chứng istep 1 với hành động try cho trường hợp (4) 41
Hình 4.15 Kiểm chứng istep 1 với hành động try cho trường hợp (5) 42
Hình 4.16 Kiểm tra giá trị của INV1 với hành động exit tại trạng thái s 43
Hình 4.17 Kiểm tra istep1 với hành động exit cho trường hợp ~c-exit(s,k) 43
Hình 4.18 Kiểm tra istep1 với hành động exit cho trường hợp c-exit(s,k) 44
Hình 4.19 Kiểm tra istep1 với hành động exit cho trường hợp (2) 44
Hình 4.20 Kiểm tra istep1 với hành động exit cho trường hợp (3) 45
Hình 4.21 Kiểm tra istep1 với hành động exit cho trường hợp (4) 45
Hình 4.22 Kiểm tra istep1 với hành động exit cho trường hợp (5) 46
Hình 4.23 Kiểm tra giá trị của INV2 tại trạng thái init 47
Hình 4.24 Kiểm tra istep2 với hành động WANT cho trạng thái s 48
Hình 4.25 Kiểm tra istep2 với hành động WANT cho trường hợp ~c-want(s,k) 48
Hình 4.26 Kiểm tra istep2 với hành động WANT cho trường hợp c-want(s,k) 49
Hình 4.27 Kiểm tra istep2 với hành động WANT cho trường hợp i=k 49
Hình 4.28 Kiểm tra istep2 với hành động WANT cho trường hợp ~(i=k) 50
Hình 4.29 Kiểm tra istep2 với hành động WANT cho trường hợp ~(i=k) queue(s) = empty 51
Hình 4.30 Kiểm tra istep2 với hành động WANT cho trường hợp ~(i=k) queue(s) = j,q 51
Hình 4.31 Kiểm chứng inv1(s,i,k) implies istep2(i) với hành động exit cho trường hợp ~(i
= k), pc(s,i) = cs, inv1 53
Hình 4.32 Kiểm chứng istep2 với hành động exit cho trường hợp ~(i = k), ~(pc(s,i) = cs 54

Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

1

Giới thiệu
1.1 Đặt vấn đề
Đặc tả và kiểm chứng hình thức là một pha quan trọng nhằm nâng cao
độ tin cậy và chất lượng của phần mềm. Có thể chia đặc tả phần mềm ra làm

hai loại: đặc tả phi hình thức (ngôn ngữ tự nhiên) và đặc tả hình thức (dựa
trên kiến trúc toán học). Đặc tả phi hình thức là đặc tả sử dụng ngôn ngữ tự
nhiên. Tuy nó không được chặt chẽ bằng đặc tả hình thức nhưng được nhiều
người biết và có thể dùng để trao đổi với nhau để làm chính xác hóa các điểm
chưa rõ, chưa thống nhất giữa các bên phát triển hệ thống. Đặc tả hình thức là
đặc tả mà ở đó các từ ngữ, cú pháp, ngữ nghĩa được định nghĩa hình thức dựa
vào toán học. Đặc tả hình thức có thể coi là một phần của hoạt động đặc tả
phần mềm. Các đặc tả yêu cầu được phân tích chi tiết. Các mô tả trừu tượng
của các chức năng chương trình có thể được tạo ra để làm rõ yêu cầu.
Đặc tả phần mềm hình thức là một đặc tả được trình bày trên một ngôn
ngữ bao gồm: từ vựng, cú pháp và ngữ nghĩa được định nghĩa. Định nghĩa
ngữ nghĩa đảm bảo ngôn ngữ đặc tả không phải là ngôn ngữ tự nhiên mà dựa
trên toán học. Các chức năng nhận các đầu vào trả lại các kết quả. Các chức
năng có thể định ra các điều kiện tiền tố và hậu tố. Điều kiện tiền tố là điều
kiện cần thỏa mãn để có dữ liệu vào, điều kiện hậu tố là điều kiện cần thỏa
mãn sau khi có kết quả.
Có hai hướng tiếp cận đặc tả hình thức để phát triển các hệ thống tương
đối phức tạp:
-Tiếp cận đại số, hệ thống được mô tả dưới dạng các toán tử và các quan hệ
-Tiếp cận mô hình, mô hình hệ thống được cấu trúc sử dụng các thực thể toán
học như là các tập hợp và các thứ tự
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

2

Kiểm thử một sản phẩm phần mềm là xây dựng một cách có chủ đích
những tập dữ liệu và dãy thao tác nhằm đánh giá một số hoặc toàn bộ các tiêu
chuẩn của sản phẩm phần mềm đó. Thử nghiệm có hai mục đích: chỉ ra hệ
thống phù hợp với đặc tả và phơi ra được các khuyết tật của hệ thống. Trong
khi việc kiểm thử phần mềm (software testing) chỉ có thể chỉ ra các lỗi phát

hiện được nhưng không thể chỉ ra được phần mềm hoàn toàn không có lỗi (
phần mềm luôn đúng), các phương pháp kiểm chứng có thể đảm bảo hệ thống
không có lỗi sau khi đã được kiểm chứng đúng đắn.
Hiện này đã có nhiểu phương pháp và công cụ hỗ trợ cho việc đặc tả và
kiểm chứng phần mềm như OBJ, Maude, CafeOBJ, SPIN, SMV, NuSMV….
Mỗi phương pháp có những ưu và nhược điểm riêng và bi hạn chế trong một
số hệ thống nhất định.
Mục đích của khóa luận là tìm hiểu về phương pháp đặc tả và kiểm
chứng hình thức phần mềm trong CafeOBJ. Từ mô tả của hệ thống cần kiểm
chứng, chúng ta cần đặc tả hệ thống một cách hình thức bằng ngôn ngữ
CafeOBJ. Các thuộc tính cần kiểm chứng của hệ thống cũng được đặc tả một
cách tương tự. Sử dụng ngữ nghĩa cú pháp trong ngôn ngữ CafeOBJ để thể
hiện các đặc tả hệ thống cũng như các đặc tả thuộc tính của hệ thống cần kiểm
chứng dưới dạng hình thức từ các phát biểu của ngôn ngữ tự nhiên. CafeOBJ
có thể kiểm chứng hệ thống đa tác tử (MAS) với không gian trạng thái là vô
hạn.




Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

3


1.2 Nêu bài toán
Bài toán thực hiện trong khóa luận là bài toán đặc tả và chứng minh tính
đúng đắn của hệ thống đa tác tử (MAS) sử dụng ngôn ngữ CafeOBJ. Quy
trình sẽ được thực hiện như sau:



Yêu cầu là phải đảm bảo thiết kế đúng trước khi lập trình, nếu không lỗi
sẽ lan sang các bước sau và mất nhiều công hơn ( có thể là cấp mũ) mới tìm
được ra lỗi. Hiện nay vẫn còn làm thủ công, xem từng thiết kế so sánh với đặc
tả yêu cầu mới có thể tìm ra lỗi nên khó đảm bảo chất lượng. Một số sản
phẩm sẽ đòi hỏi chất lượng cao ( bằng phần mềm điều khiển) Vì không biết
trước số tác tử nên không biết được số trạng thái của hệ thống, ta coi không
gian trạng thái là hộp đen, nên không thể áp dụng các phương pháp kiểm
chứng bằng mô hình yêu cầu chứng minh lý thuyết không được làm thủ công,
ngược lại sẽ không nghiệm thu thiết kế. Khóa luận của tôi sẽ tập trung vào
chứng minh các thuộc tính của hệ thống đa tác tử bằng ngôn ngữ CafeOBJ; tư
tưởng chứng minh là dùng phương pháp qui nạp, phân rã bài toán ra các
trường hợp và thêm các bổ đề vào. Tư tưởng trên đã kiểm chứng được hệ
thống đa tác tử (MAS) với không gian trạng thái là vô hạn.
1.3 Kết quả
Luận văn đã đạt được các kết quả sau:
-Tìm hiểu và nắm rõ phương pháp đặc tả phần mềm sử dụng ngôn ngữ đại số
CafeOBJ.
Thu thập
yêu cầu
Đặc tả yêu
cầu
Lập trình

Thiết kế
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

4

-Nắm vững phương pháp chứng minh tự động sử dụng tư tưởng qui nạp toán

học để kiểm chứng các thuộc tính bất biến (invariant property). Với phương
pháp này, để chứng minh một thuộc tính bất biến, chúng ta cần chứng minh
nó đúng tại trạng thái khởi tạo của hệ thống. Giả sử thuộc tính đúng tại một
trạng thái bất kỳ s, chúng ta phải chứng minh nó đúng với mọi trạng thái tiếp
theo của s.
-Áp dụng những kiến thức đã tìm hiểu để kiểm chứng 02 thuộc tính của hệ
thống đa tác tử. Trong hệ thống này, các tác tử chia sẻ một tài nguyên dùng
chung. Kết quả kiểm chứng cho thấy hệ thống đa tác tử thỏa mãn các thuộc
tính cần kiểm tra tại mọi trạng thái của hệ thống.
1.4 Cấu trúc luận văn
Các phần còn lại của luận văn có cấu trúc như sau:
Chƣơng 2 Trình bày tổng quan về ngôn ngữ CafeOBJ, kỹ thuật đặc tả và
kiểm chứng phần mềm bằng phương pháp hình thức được sử dụng trong
CafeOBJ.
Chƣơng 3 Đặc tả hệ thống đa tác tử.
Chƣơng 4 Trình bày về phương pháp kiểm chứng hệ thống đa tác tử bằng
ngôn ngữ CafeOBJ.
Kết luận Tóm tắt kết quả đã đạt được, kết luận, những hạn chế và hướng
nghiên cứu phát triển trong tương lai.




Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

5


Chƣơng 2
Tổng quan về CafeOBJ

2.1 Giới thiệu
CafeOBJ là một ngôn ngữ đặc tả đại số được phát triển ở Nhật Bản dưới
sự chỉ đạo của GS Kokichi Futatsugi trong phòng thí nghiệm Language
Design tại Viện khoa học và công nghệ tiên tiến Nhật Bản (JAIST). Chúng hỗ
trợ phương pháp kiểm chứng dựa trên kỹ thuật đặc tả đại số và phương pháp
quy nạp nhằm kiểm chứng các chương trình với miền trạng thái vô hạn.
CafeOBJ là một ngôn ngữ thực thi dựa trên nhiều cơ sở lôgic, chủ yếu dựa
trên các đại số ban đầu và đại số được suy luận.
Các lôgic cơ bản của CafeOBJ bao gồm :
- Lôgic được sắp xếp theo thứ tự (Order-sorted logic): một kiểu có thể là kiểu
con của kiểu khác. Ví dụ: số tự nhiên là thuộc số hữu tỉ, nhưng chúng đảm
bảo tính chất hợp lệ là 3 phải bằng 6/2.
-Lôgic biến đổi (Rewriting logic): Ngoài ra để bằng nhau, các biểu thức phải
hợp lệ tính đối xứng, chúng ta có thể sử dụng quan hệ bắc cầu. Đặc trưng của
quan hệ bắc cầu là rất thuận lợi để thể hiện đồng thời hoặc tính không xác
định.
-Các kiểu ẩn (Hidden sorts): Chúng ta có 2 loại trương đương. Một là tương
đương cực tiểu (minimal equivalence) chính là đồng nhất hóa 2 về và chúng
tương đương khi và chỉ khi chúng giống nhau thông qua các phương trình đã
cho. Kiểu tương đương khác dùng cho kiểu ẩn, là biến đổi 2 vế là tương
đương khi và chỉ khi chúng ứng xử đồng nhất dựa trên bộ quan sát đã cho.
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

6

Đặc tả trong CafeOBJ bao gồm các mô đul, mỗi mô đun trong cafeOBJ
được định nghĩa với cú pháp
module module_name {
imports {
module_element …

}
signature {
module_element …
}
axioms {
module_element …
}
}

Hình 2.1- Cú pháp của mô đun

Trong đó: <module name> là tên của module
<module_element> là thành phần của module
Các thành phần của module được cấu trúc trong 3 phần chính
Imports: Chỉ rõ mô đun được khai báo trong mô đun hiện thời hay là sự thừa
kế các mô đun đã triển khai được khai báo trong mô đun hiện thời có 3 dạng
của việc thừa kế các mô đun
 Protecting ( Thừa kế các mô đun nhưng không thể thừa kế chúng )
 Extending ( Thừa kế các mô đun có thể mở rộng chúng, nhưng những
mô tả ban đâu không được thay đổi)
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

7

 Using ( Thừa kế các mô đun có thể mở rộng hoặc thay đổi sự mô tả
ban đầu
Singnature: Khai báo các kiểu (sorts), các kiểu con (subsorts) và các toán tử
(operators)
Axioms: Bao gồm sự khai báo của các biến, các phương trình (equation), các
sự dịch chuyển (transitions) và các biểu thức thể hiện hành vi của mô đun

Thành phần của module có thể được khai báo import, khai báo kiểu (sort),
khai báo toán tử (operation), khai báo biến, khai báo một phương trình
(equation), khai báo sự dịch chuyển (transition)
Định nghĩa kiểu (sort) trong CafeOBJ có cú pháp như sau:

Mô tả kiểu số nguyên không âm là kiểu con của kiểu số nguyên, định
nghĩa phép toán nhân hai số nguyên, phép chia một số nguyên cho một số
nguyên không âm.


Để cung cấp sự mô tả các mô đun trong CafeOBJ, chúng ta tìm hiểu ví dụ
trong hình 2.2 với sự định nghĩa là mô đun BASIC-NAT như là mô tả số tự
nhiên, được lưu là nat+ps.mod; mô đun BASIC-NAT định nghĩa hai phép
toán 0 và s (next), định nghĩa thêm phép toán + và tính chất của phép toán 0
và s (next) bởi từ khóa eq.
[ sort-name sort-name ]

[ NzInt < Int ]
op _*_ : Int Int -> Int
op _/_ : Int NzInt -> Int

Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

8


file: nat+ps.mod

mod! BASIC-NAT {
imports {

protecting (NAT)
protecting (NZNAT)
}
Signature{
[Zero NZNAT < NAT]
op 0 : -> Zero
op s_ : NAT -> NZNAT
op _+_ : Nat Nat -> Nat
}
Axioms{
vars M N : Nat
eq 0 + M:Nat = M .
eq s (N:Nat) + M:Nat = s (N + M) .
}
}

Hình 2.2- Đặc tả 2 mô đun BASIC-NAT trong CafeOBJ
Phần import : Mô đun BASIC-NAT thừa kế các kiểu (sort) và các toán tử
(operators) đã được định nghĩa trong Nat
Phần Signature khai báo các kiểu NzNat, Nat, Zero, ký hiệu “<” nghĩa là
kiểu NzNat là kiểu con của kiểu Nat ( kiểu số tự nhiên không âm là kiểu con
của kiểu số tự nhiên và bao gồm hằng số 0, toán tử s được khai báo la op
Phần Axioms : Hành vi của toán tử “+” được thực hiện bởi 2 biểu thức và
được khai báo bởi eq.
Có 3 kiểu khai báo mô đun trong CafeOBJ là mod! (Tight modules) ,
mod* (Loose modules ), mod. Để load mô đun BASIC-NAT.mod và mô đun
NATplus ta dùng cú pháp in filename
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

9






Hình 2.3. Đọc file nat+ps.mod trong CafeOBJ
Để hiểu chi tiết hơn về cách chứng minh tính đúng đắn của đặc tả trong
CafeOBj ta dùng cú pháp:
CafeOBJ> set trace on
CafeOBJ> set trace whole on
CafeOBJ> thuộc tính cần chứng minh

Hình 2.4: Đọc chi tiết file cần chứng minh trong CafeOBJ
Với từ khóa eof trong CafeOBJ, chương trình sẽ chỉ đọc file đến dòng
trước từ eof, ở hình 2.5 chương trình sẽ chỉ đọc mod BASIC-NAT mà lờ đi
mod NATplus, và mô đun NATplus thừa kế mô đun BASIC-NAT
CafeOBJ> in nat+ps.mod
processing input : nat+ps.mod
defining module! BASIC-NAT+ _* done
CafeOBJ>

Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

10


file: nat+ps.mod

mod! BASIC-NAT {
protecting (NAT)

protecting (NZNAT)
[Zero NZNAT < NAT]
op 0 : -> Zero
op s_ : NAT -> NZNAT
}
eof
mod! NATplus{
Pr(BASIC-NAT)
op _+_ : Nat Nat -> Nat
vars M N : Nat
eq 0 + M:Nat = M .
eq s (N:Nat) + M:Nat = s (N + M) .
}
}



Hình 2.5. Mô tả eof trong CafeOBJ
2.2 Đặc tả và kiểm chứng trong CafeOBJ
2.2.1 Ví dụ
Để tìm hiểu về đặc tả và kiểm chứng trong CafeOBJ, chúng ta tìm hiểu
một ví dụ đơn giản về sự đặc tả hệ thống số tự nhiên, đặc tả thuộc tính cần
chứng minh và kiểm chứng thuộc tính đó. Trong ví dụ này chúng ta chỉ mô tả
một số đặc tả cơ bản với phép toán cộng (“+”), phép so sánh (“=”), phép toán
(“s”) tăng số tự nhiên lên một đơn vị, và đặc tả thuộc tính cần kiểm chứng
chính là
2.2.1.1: Tính chất kết hợp của phép cộng các số tự nhiên
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

11


( I+ J) + K = I + (J + K), với I, J, K là số tự nhiên bất kỳ (*).
2.2.1.2 : Tính chất giao hoán của phép cộng các số tự nhiên
I+ J = J+ I , với I, J là số tự nhiên bất kỳ (**).
file: nat+ps.mod

mod! BASIC-NAT {
[ Nat] Mô tả kiểu biến là số tự nhiên “Nat”
op 0 : -> Nat Hằng số 0
op s_ : Nat -> Nat Phép toán tăng số tự nhiên
}

mod! NATplus {
pr(BASIC-NAT) Mô đun NATplus kế thừa mô đun BASIC-
NAT
op _+_ : Nat Nat -> Nat Phép cộng số tự nhiên
op _=_ : Nat Nat -> Bool {comm} - - Phép so sánh số tự nhiên
var M,N : Nat M, N Là các biến dùng để đặc tả
eq 0 + M = M . Biểu diễn quan hệ của các phép toán
cộng
eq (s M) + N = s(M + N) .
}
}
Hình 2.6. Mô đun BASIC-NAT trong CafeOBJ
2.2.2 Đặc tả số tự nhiên
Từ mô tả về số tự nhiên với ba phép toán cơ bản và các thuộc tính của
nó, chúng ta tiến hành đặc tả bài toán bằng mô đun BASIC-NAT trong
CafeOBJ như trong (hình 2.6). Đặc tả này định nghĩa các toán tử cần thiết và
các quan hệ giữa chúng, trong đặc tả này khai báo số tự nhiên kiểu [Nat],
hằng số 0, các phép toán tăng “s”, phép toán cộng “+”, phép so sánh “=” được

khai báo sau từ khoa op, cùng với các phương trình biểu diễn quan hệ giữa
chúng được khai báo sau từ khóa eq.
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

12

2.2.3 Đặc tả thuộc tính
Với đặc tả hệ thống BASIC-NAT như trên (Hình 2.6) , chúng ta cần đặc
tả thuộc tính cần kiểm chứng ( điều kiện (*) và điều kiện (**)) Trong đó i , j,
k là các số tự nhiên bất kỳ, hàm bất biến INV nhằm kiểm chứng tính đúng đắn
của thuộc tính.
ops i j k : -> Nat .
Điều cần chứng minh
eq inv (i,j,k)=(( i + j) + k = i +(j + k))(*)
eq inv (i, j,)=(( I+ J) = (J+ I)) (**)
Hình 2.7 Đặc tả thuộc tính cho điều kiện (*) và điều kiện (**)
2.2.4 Kiểm chứng thuộc tính
Sử dụng mô đun BASIC-NAT được mô tả ở (hình 2.6) để chứng minh
cho thuộc tính (*) như hình sau, tư tưởng chứng minh là dùng phương pháp
quy nạp, đầu tiên kiểm chứng (*), với i=0, sau đó giả thiết (*) đúng với
trường hợp i bất kỳ, sau đó chứng minh (*) đúng với s(i).

opening module NATplus and EQL
open (NATplus + EQL)
> declaring constants for arbitrary values
ops i j k : -> Nat .
**> Prove associativity: (i + j) + k = i +(j + k)
**> by induction on i
> inductive base case proof for 0:
red 0 + (j + k) = (0 + j) + k .

> inductive step
**> induction hypothesis:
eq (i + j) + k= i + (j + k) .
**> conclusion of induction step proof for (s k):
red ((s i) + j) + k) = ((s i) + (j + k)) .
close
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

13

Hình 2.8 : Chứng minh tính chất kết hợp của phép cộng các số tự nhiên
Sử dụng chương trình kiểm chứng bằng ngôn ngữ toán học CafeOBJ kết
quả của hình 2.8 trả về true, vậy thuộc tính (*) được chứng minh cụ thể như
sau:
**> Prove associativity: (i + j) + k = i +(j + k) chứng minh tính chất kết
hợp của phép cộng các số tự nhiên
> inductive base case proof for 0: Kiểm chứng với i = 0
red 0 + (j + k) = (0 + j) + k .
((0 + (j +k)) = ((0 + j) + k)
eq 0 + N = N
eq (0 + N:Nat) = N
N:Nat >(j +k)
VT = ((0 + (j + k)) = (J +k)
Eq (0 +N: Nat) = N
N: Nat -> j
VP: ((0 +j) + k) = (j + k)
VT = VP =>TRUE
**> conclusion of induction step proof for (s k): Chứng minh nó đúng với
(sk)
red ((s i) + j) + k = (s i) + (j + k) .

(((s i) + j) + k) = ((si) + (j +k))
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

14

Theo giả thiết ((s M) +N) = (s (M+N)
M-> i ; N-> j
((s i) + j) -> (s ( i +j))
(1):(((s (i +j) +k) = ((si) + (j+k)))
eq ((s M) +N) = (s (M+N)
M-> (i +j) ; N-> k
((s(i +j)) +k) -> (s( ( i +j) +k))
(2):(( s((i+j)+k))= ((si) + (j+k)))
Theo giả thiết (i + j) + k = i + (j + k) .
j-> j ; k->k
(i + J) + k -> (i + (j +k)
(3):(( s (i + (j+k)) = ((si) + (j+k))
eq ((s M) +N) = (s (M+N)
M-> i ; N-> (j+k)
s (i ) + (j +k) -> (s( i + (j+k)))
(4)( (s (i+(j+k))) = (s (i + (J+K))))
=>TRUE
Tiếp theo ta sẽ chứng minh tính chất giao hoán của phép cộng các số tự nhiên
I+ J = J+ I , với I, J là số tự nhiên bất kỳ (**).
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

15

Sử dụng mô đun BASIC-NAT được mô tả ở (hình 2.6) để chứng minh
cho thuộc tính (**) như hình sau, cũng với tư tưởng chứng minh là dùng

phương pháp quy nạp, đầu tiên kiểm chứng (**), với i=0, và giả thiết (**)
đúng với trường hợp i bất kỳ, sau đó chứng minh (**) đúng với s(i). Nhưng
khi red 0+ j = j + 0 không trả về giá trị true mà trả về một kiểu boolean, khi
đó ta phải thêm các bổ đề vào, làm sao để tìm ra bổ đề, ta nhận thấy trong mô
đun BASIC-NAT ta đã có tính chất eq 0 + M:Nat = M . Bây giờ nếu chứng
minh được bổ đề j+0=j với mọi j thì kết quả của 0+j=j+0 sẽ trả về true.






Sử dụng bổ đề trên ta sẽ chứng minh được j+0=0+j như hình sau






Hình 2.9. Chứng minh 0+j=j+0
Tiếp theo giả thiết i + j = j+i, khi red s(i) + j = j + s(i) không trả về true mà trả
về một kiểu boolean, có nghĩa là ta phải thêm bổ đề vào, vậy tìm bổ đề như
thế nào, nhận thấy từ BASIC-NAT ta có s(i) + j = s(i+j) theo giả thiết i+j=j+i
open (NATplus + EQL)
> declaring constants for induction
ops i j : -> Nat .
**> Prove Lemma1: i + 0 = i, by induction on i
**> induction base case (i = 0) : 0 + 0 = 0
red 0 + 0 = 0 .
**> induction step

eq i + 0 = i .
red (s i) + 0 = (s i) .
**> should be true
**> QED for Lemma1
close

ops i j : -> Nat .

**> Finally prove i + j = j + i
**> "again" by induction on i
**> induction base case (i = 0) : 0 + j = j + 0
reduce 0 + j = j + 0 .
**> should be true
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

16

vậy s(i) + j = s(j+i), do vậy mục đích là chứng minh j+s(i) = s(j+i), hình 2.10
sau sẽ chứng minh bổ đề trên






Hình 2.10. Chứng minh lemma2: i + s(j) = s(i+j)

Hình 2.10 Chứng minh lemma2: i + s(j) = s(i+j)

Hình 2.11 sau sẽ chứng minh cho tính chất giao hoán của phép cộng các số tự

nhiên





Hình 2.11. Chứng minh i+j = j + i
opening module (NAT+ + EQL)
open (NATplus + EQL)
> declaring constants for induction
ops i j : -> Nat .
**> Prove Lemma2: i + (s j) = s(i + j) by induction on i
**> induction base case (i = 0) : 0 + (s j) = s(0 + j)
red 0 + (s j) = s(0 + j) .
**> induction step
eq i + (s J:Nat) = s(i + J) .
> conclusion of induction step
red (s i) + (s j) = s((s i) + j) .
**> should be true
**> QED for Lemma2
close

**> QED for Lemma2
close

**> Finally prove i + j = j + i
**> "again" by induction on i
**> induction base case (i = 0) : 0 + j = j + 0
reduce 0 + j = j + 0 .
**> induction step

eq i + J = J + i .
red (s i) + J = J + (s i) .
**> should be true

Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

17

Với tư tưởng kiểm chứng bằng phương pháp quy nạp đó, trong CafeOBJ
cũng hỗ trợ rất mạnh mẽ sẽ được đề cập ở phần sau. Được xem như là một tư
tưởng nổi bật của việc kiểm chứng phần mềm và kiểm thử phần mềm. Nhờ
phương pháp quy nạp này mà việc kiểm chứng các thuộc tính của hệ thống
với không gian trạng thái vô hạn được thực hiện một cách rõ ràng, trong hình
2.11 chúng ta thấy được sự kiểm chứng bằng phương pháp quy nạp với việc
thêm vào các bổ đề . Sau Khi thực hiện chương trình như hình 2.11 trong
CafeOBJ, hệ thống CafeOBJ trả về kết quả “true”, nghĩa là hệ thống đã được
kiểm chứng thỏa mãn với điều kiện (**).




Chƣơng 3
Đặc tả hệ thống đa tác tử

3.1. OTS (Observation transition system)
Chúng ta sử dụng OTS/ CafeOBJ để mô hình hóa hệ thống với kỹ thuật đại số
cho việc đặc tả và kiểm chứng của các hệ thống một cách rõ nét hơn.
Ưu điểm của phương pháp này:
- Trình bày một mô hình hình thức để mô tả hệ thống, trong đó
chú trọng đến các quan sát (observers) cũng như các hành động

trong OTS
- Phương thức OTS/CafeOBJ cung cấp một mô hình ngữ nghĩa và
framework chúng cho một hệ thống phức tạp.
Đặc tả và chứng minh tính đúng đắn hệ thống đa tác tử Nguyễn Quỳnh Chi

18

- Đối với việc kiểm chứng hình thức với một hệ thống bởi bộ
chúng được cung cấp bởi phương thức OTS/CafeOBJ.
Trong chương 2 trình bày về đặc tả và kiểm chứng trong CafeOBJ với hệ
thống đơn giản, trong khi thực tế có nhiều hệ thống phức tạp với sự chuyển
đổi trạng thái của hệ thống khi có một hoạt động nào đó tác động vào hệ
thống đó. Vì vậy với hệ thống biến đổi trạng thái trực quan (OTS) là một mô
hình hóa toán học sẽ giúp chúng ta dễ biểu diễn các đặc tả và kiểm chứng hệ
thống một cách chính xác và rõ ràng hơn.
3.2 Mô tả bài toán QLOCK
Ta thấy rằng nhiều tiến trình (agents or processes) tranh quyền sử dụng
một tài nguyên, nhưng tại một thời điểm chỉ có duy nhất một tiến trình có thể
sử dụng tài nguyên, vì thế mà tất cả các tiến trình phải tuân theo giao thức độc
quyền truy xuất (mutual exclusion protocol) trong việc sử dụng tài nguyên.
Trong đó QLOCK là một hệ thống sử dụng giao thức độc quyền truy xuất
với một hàng đợi (Queue) dùng chung cho tất cả các tiến trình (processes)
thỏa mãn các yêu cầu sau:
-Độc quyền truy xuất: Nếu tiến trình Pi đang sử dụng tài nguyên thì không
tiến trình nào được sử dụng , mà phải chờ cho tới khi tiến trình hiện thời kết
thúc.
-Tiến trình: Nếu không có tiến trình nào sử dụng tài nguyên và có một số
tiến trình muốn dùng thì một tiến trình nào đó phải được dùng.
-Trạng thái ban đầu: Mọi tiến trình không có nhu cầu sử dụng tài nguyên và
hàng đợi là rỗng.

×