Một quy tắc khung , giống như quy tắc được đưa ra dưới đây, nắm bắt ý tưởng rằng, đưa ra một chương trình cvới điều kiện tiên quyết pgiữ trước khi nó chạy và hậu điều kiện qgiữ sau đó, một số điều kiện rời rạc rnên giữ cả trước và sau khi cchạy. (Liên *kết yêu cầu các đối số của nó tách rời nhau.) Thông thường, các điều kiện trước và sau là trạng thái của một đống, và clà một chương trình hiệu quả để sửa đổi heap theo một cách nào đó.
{p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}
Các cuộc thảo luận về quy tắc khung mà tôi thấy dường như luôn tập trung vào cách phần rời rạc của heap r, được bảo tồn. Điều này cho phép "lý luận cục bộ": khi suy luận về hiệu ứng ccó, chúng ta có thể bỏ qua rphần heap và chỉ quan tâm đến phần thực sự thay đổi. Nhưng một cách khác để xem xét nó là sự thay đổi từ pđếnq được bảo tồn, mặc dù rbây giờ đang ngồi ở đó. Nói cách khác, điều quan trọng là chúng ta kết thúc với hậu điều kiện {q * r}, hơn là {q' * r}đối với một số người khác q'.
Vì vậy, câu hỏi của tôi là liệu có bất kỳ điều trị các nguyên tắc khung mà thảo luận hoặc làm cho việc sử dụng bảo quản-of-change-từ- p-to- qđiều.