Правило рамки , як наведеному нижче, відображає ідею , що, з огляду на програму c
з попередньою умовою , p
що має місце , перш ніж він працює і постусловіем q
що тримає пізніше, деякі непересічні умова r
слід тримати як до , так і після того, як c
працює. ( Сполучник *
вимагає, щоб його аргументи були суперечливими.) Часто попередні та постумови є станами купи, і c
це ефективна програма, яка певним чином модифікує купу.
{p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}
Обговорення правила фрейму, яке я бачив, завжди зосереджується на тому r
, як зберігається роз'єднана частина купи . Це дає можливість "міркування на місцях": коли міркуємо про вплив, c
який ми маємо, ми можемо нехтувати r
частиною купи і стосуватися лише тієї частини, яка насправді змінюється. Але ще один спосіб поглянути на це - це те, що перехід від p
наq
зберігається, хоча r
він зараз сидить. Іншими словами, важливо, щоб ми закінчилися після умови {q * r}
, а не {q' * r}
для якоїсь іншої q'
.
Отже, моє запитання , чи є якесь - або лікування правила кадру, обговорювані або використовують збереження його зміни-from- p
-До- q
речі.