Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 64 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
64
Dung lượng
0,92 MB
Nội dung
- 1 -
TRƯỜNG ………………….
KHOA……………………….
Báo cáo tốt nghiệp
Đề tài:
Phương phápkiểmchứngtínhđúngđắncủamộtchương
trình JavađaluồngthôngquasửdụnglogicHoare
- 2 -
TÓM TẮT KHÓA LUẬN
Có rất nhiều phươngpháp để kiểmchứngtínhđúngđắncủamộtchươngtrìnhJavađa
luồng. Một trong các phươngpháp đó là sửdụnglogic Hoare. Kiểmchứngtínhđúng
đắn củamộtchươngtrìnhJavađaluồngsửdụnglogicHoare yêu cầu ta cần phải
chứng minh mộtchươngtrình được bổ sung và chú thích dưới sự thi hành của các lệnh
phải thỏa mãn: Nếu bước tính toán thi hành một phép gán, thì ta sửdụng các điều kiện
tính đúngđắn cục bộ để chứng minh tính quy nạp củasự thi hành các thuộc tínhcủa
cấu hình cục bộ, và kiểm tra tính không có can thiệp đối với tất cả các cấu hình cục bộ
khác và các bất biến lớp khác. Đối với giao tiếp, tính bất biến đối với thi hành các đối
tác và bất biến toàn cục được chứng tỏ thôngquakiểm tra sự hợp tác đối với giao tiếp.
Giao tiếp với chính nó không ảnh hưởng trạng thái toàn cục; tính bất biến của các
thuộc tính còn lại dưới các quan sát tương ứng được chứng tỏ thôngquakiểm tra tính
không có can thiệp. Cuối cùng, đối với tạo đối tượng, tính bất biến đối với bất biến
toàn cục, tạo cấu hình cục bộ, bất biến lớp của đối tượng được tạo được đảm bảo các
điều kiện củakiểm tra hợp tác đối với tạo đối tượng; tất cả các thuộc tính khác được
chứng tỏ là bất biến thôngquasửdụngkiểm tra tính không có can thiệp.
- 3 -
MỤC LỤC
TÓM TẮT KHÓA LUẬN 1 -
MỞ ĐẦU 4 -
CHƯƠNG 1. LOGICHOARE 6 -
1.1. Logic vị từ 6 -
1.2. Các tiên đề củaLogicHoare 9 -
1.2.1. Các công thức đúng cú pháp cho chứng minh chươngtrình 9 -
1.2.2. Tiên đề của phép gán 10 -
1.2.3. Các quy tắc bổ sung 10 -
CHƯƠNG 2. NGÔN NGỮ TUẦN TỰ 12 -
2.1. Cú pháp 13 -
2.2. Ngữ nghĩa 16 -
2.2.1. Trạng thái và các cấu hình 16 -
2.2.2. Các ngữ nghĩa toán tử 18 -
2.3. Ngôn ngữ khẳng định 20 -
2.3.1. Cú pháp 20 -
2.3.2. Ngữ nghĩa 21 -
2.4. Hệ chứng minh 25 -
2.4.1. Phác thảo chứng minh 26 -
2.4.2. Kiểmchứng các điều kiện 31 -
CHƯƠNG 3. NGÔN NGỮ TƯƠNG TRANH Error! Bookmark not defined.
3.1. Cú pháp 42 -
3.2. Ngữ nghĩa 42 -
3.3. Hệ chứng minh 43 -
3.3.1. Phác thảo chứng minh 43 -
3.3.2. Kiểmchứng các điều kiện 43 -
CHƯƠNG 4. BỘ ĐIỀU PHỐI LẶP LẠI Error! Bookmark not defined.
4.1. Cú pháp 47 -
4.2. Ngữ nghĩa 47 -
4.3. Hệ chứng minh……………………………………………………………………… 48-
4.3.1. Phác thảo chứng minh 49 -
4.3.2. Kiểmchứng các điều kiện 51 -
CHƯƠNG 5. PHÉP TOÁN ĐIỀU KIỆN TRƯỚC YẾU NHẤT 53 -
5.1. Các phép toán thay thế 54 -
5.2. Kiểmchứng các điều kiện………………………………………………………… 54-
CHƯƠNG 6. TÍNHĐÚNGĐẮN Error! Bookmark not defined.
6.1. Tínhđúngđắn 59 -
KẾT LUẬN……………………………………………………………………………… 62-
TÀI LIỆU THAM KHẢO……………………………………………………………… 63-
- 4 -
MỞ ĐẦU
Yêu cầu của người dùng đối với một phần mềm ngày nay là không những nó phải có
giao diện đẹp, tốc độ xử lý dữ liệu nhanh, tốc độ phản ứng củachươngtrình với người
dùng cũng là một yêu cầu không thể bỏ qua. Mộtchươngtrình yêu cầu vừa có giao
diện đẹp, vừa xử lý nhanh chạy trên một máy cấu hình bình thường thì cần có một cơ
chế để quản lý cấp phát tài nguyên của máy một cách phù hợp. Và cơ chế quản lý đa
luồng chính là một giải pháp cho các yêu cầu trên. Ngôn ngữ lập trìnhJava là một
ngôn ngữ lập trình bậc cao hỗ trợ rất mạnh cho lập trìnhđa luồng, được sửdụng nhiều
trong các hệ thống lớn cũng như trong các phần mềm có quy mô vừa và nhỏ.
Trong các hệ thống lớn, chỉ một lỗi rất nhỏ cũng có thể dẫn tới những kết quả tai
hại, hoặc thậm chí là phá hủy hệ thống. Do đó ta thấy được tính quan trọng đối với
việc kiểmchứngtínhđúngđắncủamộtchương trình. Việc kiểmchứngtínhđúngđắn
của mộtchươngtrìnhJavađaluồng là không thể thiếu được trong việc phát triển hệ
thống. Ta cần có mộtphươngphápkiểmchứngtínhđúngđắncủamộtchươngtrình
Java đa luồng. Đó chính là phươngphápthôngquasửdụnglogic Hoare.
Logic Hoare là một hệ thống hình thức được phát triển bởi các nhà khoa học máy
tính Anh C.A.R.Hoare, và về sau được cải tiến bởi Hoare và các nhà nghiên cứu khác.
Mục đích của hệ thống này là cung cấp một tập các quy tắc logic để lý luận về tính
đúng đắncủa các chươngtrình máy tính với tính chính xác của các logic toán học.
Logic Hoare là cơ sở để định nghĩa tínhđúngđắncủa hệ thống.
Trong khóa luận tốt nghiệp này em sẽ trình bày về phươngphápkiểmchứngtính
đúng đắncủamộtchươngtrìnhJavađaluồngthôngquasửdụnglogic Hoare.
Khóa luận sẽ có sáu chương với nội dung chính như sau:
Chương 1: LogicHoare
Chương 2: Ngôn ngữ tuần tự
- 5 -
Chương 3: Ngôn ngữ tương tranh
Chương 4: Bộ điều phối lặp lại
Chương 5: Phép toán trước yếu nhất
Chương 6: Tínhđúngđắn
Tuy nhiên do còn nhiều hạn chế về thời gian cũng như kiến thức của bản thân,
khóa luận này không thể tránh khỏi những thiếu sót. Em rất mong nhận được sự quan
tâm góp ý của các thầy, cô giáo cũng như các anh, chị và các bạn, những người quan
tâm đến vấn đề này.
Em xin chân thành cảm ơn thầy giáo, tiến sỹ Đặng Văn Hưng, người đã hướng
dẫn trực tiếp, động viên và giúp đỡ em rất nhiều để hoàn thành khóa luận này.
Cuối cùng, em xin bày tỏ lòng biết ơn sâu sắc tới gia đình, bạn bè, các thầy cô
giáo, những người đã quan tâm, giúp đỡ em rất nhiều trong suốt những năm ngồi trên
ghế nhà trường.
Hà Nội, tháng 5 năm 2009
Sinh viên
LÊ VĂN VIỄN
- 6 -
CHƯƠNG 1. LOGICHOARE
1.1. Logic vị từ
Định nghĩa: Vị từ là một hàm nhận một giá trị Bool.
Một vị từ thực sự là một giá trị logic được biểu hiện bằng tham số. Nó có thể đúng với
một số đối số, và sai với một số đối số khác. Chẳng hạn x > 0 là một vị từ với một đối
số, ta có thể đặt tên nó là gt0(x). Do vậy mà gt0(5) là đúng và gt0(0) là sai.
Định nghĩa: Các thành phần củalogic vị từ wffs gồm có các thành phần sau:
• Các định danh biến – một tập (thường là vô hạn) của các tên biến, thường
là
,,, ,,,,
2121
yyyxxx
• Các định danh hằng – một tập (hữu hạn, vô hạn, hoặc rỗng) của các tên hằng,
thường là
,, ,,,,
2121
bbbaaa
• Các định danh vị từ – một tập (không rỗng) của các tên vị từ, thường
là
,, ,,,,
2121
qqqppp
• Các định danh hàm – một tập các tên hàm, thường
là
,,, ,,,,
2121
gggfff
Mỗi định danh hàm và định vị từ có một số cố định của các đối số mà nó chấp nhận là
arity.
Định nghĩa: Các toán hạng củalogic vị từ được định nghĩa một cách đệ quy như sau:
(i) các tên biến và các tên hằng là toán hạng, và
(ii) nếu
k
tt , ,
1
là các toán hạng và f là một tên hàm có số các đối số cố định là k,
thì
k
tttf ,,,
21
là một toán hạng
- 7 -
Một toán hạng không chứa các biến được gọi là toán hạng cơ sở.
Định nghĩa: nếu
k
tt , ,
1
là các toán hạng và vị từ p có số của các đối số cố định là k,
thì
k
tttp ,,,
21
là một công thức nguyên tử củalogic vị từ.
Các phép toán logic thêm vào trong logic vị từ là lượng hóa phổ biến
x đọc là
với mọi x, và lượng hóa tồn tại,
x đọc là tồn tại x. Trong sơ đồ ưu tiên để tránh các
dấu ngoặc trong các công thức,
có độ ưu tiên thấp nhất trong các liên kết.
Định nghĩa: Các công thức đúng ngữ pháp (wffs) củalogic vị từ được định nghĩa đệ
quy như sau:
(i) mỗi công thức nguyên tử là một công thức đúng ngữ pháp wff, và
(ii) nếu
và
là wffs và x là một tên biến, thì mỗi công thức sau đây cũng là
một công thức đúng ngữ pháp:
• (
)
•
• (
.x
)
•
•
.x
•
•
Hai phép toán lượng hóa cung cấp một ngữ nghĩa không thể thiếu được để biểu
diễn các khẳng định về các kết quả chân lý của các vị từ. Sự thể hiện của mỗi phép
toán trong các phép toán logic phụ thuộc vào hiểu biết về không gian từ đó các giá trị
của các biến có thể được đưa ra. Nếu không gian này là hữu hạn, nói rằng
k
ccc ,,,
21
,
thì những phép toán logic mới này có thể được biểu thị bằng cách sửdụng các quan hệ
logic mệnh đề. Một công thức
.x thì tương đương với sự kết hợp của các công
thức đúng ngữ pháp đạt được bằng sự thay thế x bởi mỗi phần tử của các phần tử trong
không gian (ví dụ,
ycpycpycpyxpx
k
, ,,,.
21
). Tương tự như vậy một
công thức
.
x
tương đương với sự tách rời của các công thức wffs đạt được bởi thay
thế x bằng mỗi phần tử của các phần tử của không gian (ví dụ
ycpycpycpyxpx
k
, ,,,.
21
).
Các phép toán lượng hóa này yêu cầu ta phân biệt cách sửdụngcủa các biến.
Chẳng hạn, công thức p(x) có một tham biến x, và nó có thể đúng với một số giá trị và
sai với một số giá trị khác. Tuy nhiên, công thức )(. xpx
thực sự không có tham biến
- 8 -
và thể hiện một giá trị duy nhất – giá trị x được gọi là biên trong trường hợp trước và
tự do trong trường hợp sau. Nó minh họa hai vai trò khác nhau đối với các biến trong
biểu thức đúng khuôn dạng logic mệnh đề do đó phải phân biệt cẩn thận.
Định nghĩa: Các xuất hiện bị chặn của các biến trong
.x
là các xuất hiện bị chặn
của các biến trong
, cộng thêm tất các xuất hiện của x trong
,
được gọi là phạm
vi củalượng hóa. Tất cả các xuất hiện của biến mà không bị chặn là các biến tự do.
Tương tự định nghĩa áp dụng cho
.x . Một công thức đúng ngữ pháp wff được gọi
là đóng nếu nó không có các xuất hiện của biến tự do.
Định nghĩa: Một thể hiện i gồm có
(i) Một tập D không rỗng – miền (hoặc không gian của các giá trị)
(ii) Một phép gán
của
• mỗi tên vị từ n đối số thành một quan hệ n vị trí trong D,
• mỗi tên hàm n đối số thành một hàm n vị trí trong D,
• mỗi định danh hằng thành một phần tử của D.
Ta viết i =
,D
Một thể hiện là một toán hạng thể hiện nếu D là tất cả các toán hạng, và các
phép gán đối với mỗi tên hàm là toán hạng khởi tạo tương ứng,
kk
ttfttf , ,, ,
11
.
Định nghĩa: Một thể hiện được cho i =
,D , một biến gán (hoặc trạng thái)
là
hàm trong tập các biến V,
: V
D. Phép gán được mở rộng một cách đệ quy để
mang một giá trị cho tất cả các toán hạng và các công thức,
(i) đối với các toán hạng
• với biến x,
xxval
)(
, và đối với hằng c,
ccval
)(
,
• với một toán hạng phức hợp
))(), ,()(()), ,((
1
1
kk
tvaltvalfttfval
(ii) đối với các công thức
• đối với một công thức nguyên tử ))(), ,()((), ,((
11 kk
tvaltvalpttpval
• đối với các công thức phức hợp
)()(
valval
- 9 -
)()()(
valvalval
)()()(
valvalval
)()()(
valvalval
)()()(
valvalval
.xval true nếu
trueval
'
đối với mỗi
'
trong đó
yy
' đối với
x
y
, false nếu ngược lại.
.xval true nếu
trueval
'
đối với mỗi
'
trong đó
yy
' đối với
x
y
, = false nếu ngược lại.
Hai định nghĩa cuối cùng này biểu thị rằng, cho một thể hiện và một trạng thái,
chỉ có một giá trị duy nhất được quyết định cho mỗi toán hạng và mỗi công thức bởi
việc ước lượng mỗi phép toán logic. Điều này cung cấp các giá trị đúng ta sửdụng
phân loại các công thức.
Định nghĩa: Cho
là một biểu thức hợp khuân dạng wff, i là một thể hiện, và
là
một trạng thái. Thì
thỏa mãn
dưới i, i
| nếu )(
val = true. Biểu thức hợp
khuân dạng
là đúng trên i,
|i , nếu mọi trạng thái thỏa mãn
dưới i, và i được
gọi là mô hình của
,
là sai trên i nếu không có trạng thái nào thỏa mãn
dưới i.
Một thể hiện được gọi là mô hình củamột tập các biểu thức hợp khuân dạng nếu nó là
mô hình của từng biểu thức hợp khuân dạng wff trong tập, và nếu nó là một thể hiện
toán hạng, thì nó được gọi là một mô hình toán hạng.
Định nghĩa: Một công thức đúng ngữ pháp wff là đúnglogic (công thức hằng đúng)
nếu nó đúng trên mọi thể hiện, có thể thỏa mãn nếu tồn tại một thể hiện và trạng thái
thỏa mãn nó, và ngược lại nếu nó là không thể thỏa mãn.
Định nghĩa: Một công thức đúng ngữ pháp wff là một hệ quảlogiccủamột tập các
công thức đúng ngữ pháp
,
| , nếu mọi thể hiện và trạng thái thỏa mãn mỗi
,
và
là tương đương logic,
nếu với mọi thể hiện và trạng thái
,
)()(
valval
1.2. Các tiên đề củaLogicHoare
1.2.1. Các công thức đúng cú pháp cho chứng minh chươngtrình
- 10 -
Các công thức ta viết sẽ xác nhận các thuộc tínhcủa các chươngtrình (các đoạn
chương trình thực sự). Do vậy, các công thức phải bao gồm các xác nhận và chương
trình tới công thức mà nó gắn liền. Các xác nhận chươngtrình (wffs) có dạng
P
gồm 3 thành phần:
• P là một đoạn chươngtrình - một lệnh (có thể phức hợp), và
•
và
là các công thức logic vị từ sửdụng các tên biến và hàm/thao tác của
chương trình, các ký hiệu {, } là các siêu ký hiệu được sửdụng để biểu thị bắt đầu và
kết thúc của các công thức logic vị từ, và không nên hiểu như là các ký hiệu trong
ngôn ngữ lập trình. Công thức logic
được gọi là điều kiện trước, và
được gọi là
điều kiện sau.
1.2.2. Tiên đề của phép gán
Ta giả thiết rằng
:X biểu thị một lệnh gán, trong đó X là một biến và
là một
biểu thức thích hợp. Tiên đề của phép gán nằm dưới hệ thốnglogic để chứng minh các
chương trình không điều kiện.
Tiên đề của phép gán:
PXXP
:|
trong đó P là một công thức logic vị từ, X là một biến,
là một biểu thức, và
XP
là công thức P với mỗi lần xuất hiện của X được thay thế bởi
. Một
bước chứng minh được xác nhận bởi việc chứng minh cú pháp công thức tương ứng.
Tuy nhiên ta không phân biệt các công thức mà chúng tương đương logic.
Độ mạnh của các công thức đúng ngữ pháp
Nếu P và Q là các công thức đúng ngữ pháp mà QP
, thì ta nói rằng P là một xác
nhận mạnh hơn Q, và Q thì yếu hơn P. Một điều kiện mạnh hơn là một điều kiện mà
nhiều – ít hơn các giá trị thỏa mãn một điều kiện mạnh hơn.
1.2.3. Các quy tắc bổ sung
Tiên đề Skip
PskipP|
với P là một công thức logic mệnh đề bất kỳ. Bằng trực
giác, vì skip không làm gì, nên cái gì đúng sau sự thực hiện của nó thì cũng như là cái
đã đúng trước đó.
[...]... bổ sung chươngtrình với các biến phụ trợ không ảnh hưởng đến luồng điều khiển củachươngtrình gốc, và bằng sự đính kèm các vị từ cho các cấu trúc chươngtrình cú pháp Một chươngtrình được bổ sung và chú thích được gọi là một phác thảo chứng minh Thứ hai, phác thảo chứng minh phải được áp dụng đối với phác thảo chứng minh riêng biệt, có kết quả là tập kiểmchứng các điều kiện Cuối cùng, kiểm chứng. .. od; u! result return result; } Phác thảo chứng minh trên thỏa mãn các điều kiện củatínhđúngđắn cục bộ Có 7 điều kiện củatínhđúngđắn cục bộ (không có các điều kiện củatínhđúngđắn ban - 34 - đầu, tính không có can thiệp, và kiểm tra sự hợp tác cho ví dụ này) Đối với ví dụ này, tínhđúngđắn cục bộ của phép gán result := result * v định nghĩa kiểmchứng điều kiện u! result * v!u 0 v... đầu của nó Tínhđúngđắn ban đầu Một phác thảo chứng minh của mộtchươngtrình là đúngđắn ban đầu, nếu điều kiện trước của lệnh chính, bất biến lớp của đối tượng ban đầu, và bất biến toàn cục được thỏa mãn ban đầu, nghĩa là, trong cấu hình toàn cục ban đầu sau sự thi hành của quan sát được gọi ở phần bắt đầu của lệnh chính Hơn nữa điều kiện trước của quan sát nên được thỏa mãn trước sự thi hành của. .. lực của nó Các ngữ nghĩa toán tử của ngôn ngữ lập trình định nghĩa các quy tắc biến đổi của dạng AT , TransRule T , T ' , ' trong đó A là một vị từ được cho phép thôngqua các cấu hình toàn cục Tínhđúngđắncủamột hệ chứng minh có nghĩa là kiểmchứng các điều kiện đảm bảo tính quy nạp của chú thích, nghĩa là, tính bất biến của nó dưới các bước tính toán của dạng trên Nói theo cách khác,... giá trị đang tồn tại trong Hơn nữa cho p là một khẳng định cục bộ đang chứa các biến cục bộ u Nếu u u và z là một biến logic mới, thì , | G p z / this khi và chỉ khi , z , | L p 2.4 Hệ chứng minh Chứng minh tínhđúngđắncủamột thuộc tínhcủachươngtrình gồm có ba bước Đầu tiên, thuộc tính được yêu cầu phải được chỉ rõ bởi sự bổ sung và chú thích chương trình, nghĩa... diễn bằng sự tạo đối tượng với z Tínhđúngđắn cục bộ Một phác thảo chứng minh là đúngđắn cục bộ, nếu các thuộc tínhcủa các thể hiện phương thức được chỉ rõ bởi chú thích là bất biến dưới sự thi hành của các phương thức Ví dụ, điều kiện trước củamột lệnh gán phải kéo theo điều kiện sau của nó sau sự thì hành của nó Bên cạnh các điều kiện cho các phép gán, tínhđúngđắn cục bộ định nghĩa thêm các điều... thể sửdụng cùng một cú pháp cho tất cả các kiểu của quan sát Tuy nhiên, một ký hiệu như vậy sẽ bất tiện cho các bổ sung bộ phận, nghĩa là, đối với sự chỉ rõ của các bổ sung trong đó tất cả các câu lệnh không được quan sát Ví dụ, sửdụng ký hiệu được giới thiệu ở trước, sự bổ sung e0 m e stm chỉ rõ duy nhất stm là một quan sát đứngmột mình theo sau một lời gọi phương thức không được quan sát, sử dụng. .. cấu hình luồng là đúng, cũng như là các bất biến lớp và bất biến toàn cục là đúng Các điều kiện thường được nhóm lại thành các điều kiện ban đầu, và đối với bước quy nạp trong tínhđúngđắn cục bộ và các kiểm tra đối với tính không có sự can thiệp và kiểm tra sự hợp tác Các điều kiện củatínhđúngđắn ban đầu bao hàm sự thỏa mãn của các thuộc tính trong cấu hình chươngtrình ban đầu Sự thi hành của duy... trị kiểu logic, và các kiểu số nguyên, và tương ứng cho các kiểu hợp thành Ta định nghĩa biến this Var , là một tham chiếu tới chính nó không phải trong miền của Init Cấu hình của mộtchươngtrình bao gồm tập hợp của các đối tượng đang tồn tại cùng với giá trị của các biến thể hiện của chúng, và cấu hình củaluồng đang thi hành Trước khi hình thức hóa các cấu hình toàn cục củamộtchương trình, ta... tham biến, luồng bắt đầu thi hành các lệnh trong thân củaphương thức Khi trả về từ một lời gọi phương thức, phương thức được gọi ước lượng biểu thức trả về và chuyển nó cho phương thức gọi, sau đó phương thức gọi cập nhật trạng thái cục bộ của nó Thân phương thức kết thúc sự thi hành của nó và phương thức gọi có thể tiếp tục Luồng đang thi hành kết thúc vòng đời của nó thôngquasự trả về từ phương thức . có một phương pháp kiểm chứng tính đúng đắn của một chương trình
Java đa luồng. Đó chính là phương pháp thông qua sử dụng logic Hoare.
Logic Hoare là một. nhiều phương pháp để kiểm chứng tính đúng đắn của một chương trình Java đa
luồng. Một trong các phương pháp đó là sử dụng logic Hoare. Kiểm chứng tính đúng