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: