Tiên đề của Hoare Logic

Một phần của tài liệu Nghiên cứu về separation logic và ứng dụng vào hệ thống kiểm định tự động (Trang 31 - 34)

Để thực hiện chứng minh hình thức tính đúng đắn của một đoạn chương trình, cần một tiền đề mô tả tác động của các thao tác xử lý cơ bản (lệnh cơ bản) của các ngôn ngữ dùng viết chương trình. Sau đây là các quy tắc bổ sung được của các hệ luật suy diễn Hoare Logic.

Tiên đề của phép gán

Ta giả thiết rằng 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ống logic để chứng minh các chương trình không điều kiện.

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à 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.

Ví dụ tính đúng có điều kiện của các đặc tả sau được khẳng định dựa vào các tiên đề gán:

Độ 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à , 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 hơn các giá trị thỏa mãn một điều kiện ít mạnh hơn.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang32

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ó cũng như là cái đã đúng trước đó. Độ mạnh của điều kiện trước

Đó là quy tắc đầu tiên của các quy tắc suy luận trong hệ chứng minh chương trình. Ý kiến một cách trực quan là nếu một xác nhận chương trình có thể được chứng minh, thì điều kiện trước có thể được thay thế bởi bất kù công thức nào kép theo nó.

πLà một đoạn chương trình bất kỳ.

Ví dụ sau minh họa cho quy tắc trên kiểm chứng tính đúng có điều kiện:

Giả sử ta có và , áp

dụng quy tắc trên ta có được Độ yếu của điều kiện sau

Đó là quy tắc tiếp theo của các quy tắc suy luận trong hệ thống chứng minh chương trình. Ý kiến một cách trực quan là nếu một xác nhận chương trình có thể được chứng minh, thì điều kiện sau có thể được thay thế bới bất kỳ công thức nào nó kéo theo.

πLà một đoạn chương trình bất kỳ.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang33

Giả sử ta có , với x là biến nguyên dương nên có

, áp dụng quy tắc kết luận

Quy tắc tuần tự

Ví dụ sau kiểm chứng tính đúng có điều kiện của đặc tả:

Chứng minh: Có (tiên đề gán)

Hiển nhiên có

Áp dụng quy tắc độ mạnh điều kiện trước Áp dụng tiên đề gán

Áp dụng luật tuần tự ta được Quy tắc điều kiện

Để minh họa cho quy tắc này, xem xét ví dụ kiểm chứng cho đặc tả sau:

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang34

Do đúng với mọi S và Q nên

Tương tự có và nênkết luận

Quy tắc While

Luật này thể hiện rằngnếu P không bị thay đổi bởi bất cứ lần nào thực hiện lệnh Cthì nó cũng sẽ không thay đổi bởi toàn bộ lệnh lặp While, với ý nghĩa này P

được gọi là bất biến của vòng lặp.

Tính đúng đắn:Nếu có thể được chứng minh, thì điều tất nhiên là thực hiện

S từ một trạng thái thỏa mãn P thì sẽ chỉ kết thúc trong các trạng thái thỏa mãn Q.

Một phần của tài liệu Nghiên cứu về separation logic và ứng dụng vào hệ thống kiểm định tự động (Trang 31 - 34)

Tải bản đầy đủ (PDF)

(94 trang)