Điềukiện trước yếu nhất và điềukiện sau mạnh nhấtcủa một dãy lệnh

Một phần của tài liệu x. giáo trình công nghệ phần mềm - phan huy khánh (Trang 82 - 83)

• − Các kiểu tiên đề gán khác nhau.

• − Các tiên đề và quy tắc suy diễn cho một số cấu trúc ngơn ngữ lập trình

(khối, thủ tục).

• − Phân tích chương trình.

IV.1. Điều kiện trước yếu nhất và điều kiện sau mạnh nhất của một dãy lệnh dãy lệnh

Trong mục trước, ta đã ký hiệu :

− WE tập hợp các giá trị các biến của một chương trình thoả mãn điều kiện E,

− fP là hàm tính được bởi dãy các lệnh P của một chương trình.

Nếu fP được định nghĩa cho mọi giá trị của WE , P khơng quẩn và khơng thực hiện các phép tính vơ định (ví dụ chia cho 0) nếu điều kiện trước E thoả mãn. Tính chất này được ký hiệu là termEP.

Bây giờ ta xét phát biểu E {P} S. Ta cĩ các tính chất sau đây : (i) E {P} S là true nếu và chỉ nếu fP (WE) ⊆ WS

(ii) Nếu termEP thì :

E {P} S là true nếu và chỉ nếu WE ⊆ fP−1 (WS)

V

í dduủû 1155 ::

(1) Cho phát biểu (q > 0) { q := q+1 } (q > 0), trong đĩ q là biến duy nhất của chương trình. Ta cĩ :

WE = WS =N+ , fq := q+1(N+) = N+ −{1} ⊆ N+ ,

(2) Cho phát biểu (q ≥ 0) ∧ (y ≥ 0) { q := q div y } (q ≥ 0) ∧ (y ≥ 0), trong đĩ q và y là các biến duy nhất của chương trình. Ta cĩ :

WE = WS =N × N , fq := q div y (N × N) = N × N+ ⊂ WS ,

nhưng f−1

q: := q div y (N × N) = N × N+⊇⁄ WE

Trong trường hợp WE = fP−1 (WS), E là điều kiện trước yếu nhất (la plus faible

précondition) phải được thoả mãn trước khi thực hiện P để cho S được thoả mãn sau đĩ.

Thực tế, nếu E’ {P} S và termE ’P thì WE ’ ⊆ fP−1 (WS) = WE và như vậy E’ → E. Mặt khác, nếu fP(WE) = WS , S là điều kiện sau mạnh nhất (la plus forte

postcondition) phải được thoả mãn sau khi thực hiện P nếu E là đúng trước. Thực tế, nếu E {P} S’ thì fP(WE) = WS ⊆ WS ’ , như vậy S → S’.

Ta ký hiệu hai hàm fppre và fppost như sau :

− với một dãy lệnh và với một điều kiện sau, fppre trả về điều kiện trước yếu

nhất tương ứng

− với một điều kiện trước và một dãy lệnh, fppost trả về điều kiện sau sau mạnh

nhất tương ứng.

Chú ý rằng các hàm fppre(P, S) và fppost(E, P) được định nghĩa gần như tương đương.

Bây giờ ta sẽ trình bày các tính chất của các hàm fppre và fppost.

Một phần của tài liệu x. giáo trình công nghệ phần mềm - phan huy khánh (Trang 82 - 83)

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

(154 trang)