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