Quy tắc Forward Verification

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 49 - 52)

Trong ngôn ngữ đặc tả trình bày ở phần trước, sử dụng P để chú thích cho chương trình đang được kiểm định, với mỗi thủ tục trong P khai báo một tiền điều

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

kiện/hậu điều kiện (pre/post conditions), sau đó áp dụng quy tắc kiểm định của bộ ba Hoare Logic:

Đây chính là quy tắc forward verification mà luôn luôn tuân thủ mà được

thực hiện trước khi tính toán . Lưu ý rằng, trong luận văn đề cập tới những trạng

thái trừu tượng mà chứa cả những biến không đổi (Primed) và những biến thay đổi (Unprimed), trong đó những biến đóng vai trò khởi tạo thuộc dạng Unprimed và những biến thể hiện cho giá trị mới nhất của những biến khởi tạo trong quá trình biến đổi trạng thái thuộc dạng Primed.Để nắm bắt được tìm hiểu chứng minh, công thức trên được viết lại dạng:

Trong đó S là một tập các trạng thái Heap được tạo bởi một thủ tục kiểm định dựa trên tìm kiếm; nếu S là rỗng thì quy tắc forward verification kết luận có lỗi

với tiền trạng thái (Prestate).

Để thuận tiện hơn, luận văn đề cập tới một phương thức để tạo ra các tập Prestates, kiểm định trong trường hợp này thành công nếu kiểm định bất kỳ Prestate

là thành công, có nghĩa là có ít nhất một là khác rỗng.Quy tắc này khá hữu hiệu

khi nó có thể đưa ra các trạng thái dư thừa:

Các quy tắc biến đổi Forward Verification thông thường được định nghĩa như sau:

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

Kiểm định một thủ tục bắt đầu ở mỗi tiền điều kiện và phải chứng tỏ rằng hậu điều kiện được đảm bảo khi kết thúc thủ tục, quy tắc với thủ tục như sau:

Ví dụ về quy tắc Forward Verification:

Quay trở lại thủ tục chèn (insert) của sắp xếp chèn đã được trình bày ở phần trước, sau đây sẽ trình bày việc áp dụng các quy tắc Forward Verification nhằm đặc tả lại thủ tục chèn trong dạng thức đặc tả mới áp dụng trong kiểm định chương trình. Lưu ý rằng những biến xuất hiện trong các công thức của chương trình là những giá trị mới nhất (Prime), trong khi những biến cục bộ được thể hiện dạng không đổi (Unprime). Quá trình kiểm định khá đơn giản,ngoại trừ bước cuối cùng thao tác Fold được gọi sau khi thực hiện xong thủ tục kiểm tra hậu điều kiện.

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

Áp dụng các quy tắc Forward Verification ta có các biến đổi sau:

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 49 - 52)

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

(94 trang)