Правило рамки , как приведенному ниже, отражает идею , что, учитывая программу 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вещи.