Una regla de trama , como la que se muestra a continuación, captura la idea de que, dado un programa ccon una condición previa pque se cumple antes de que se ejecute y quna condición posterior que se cumple después, alguna condición disjunta rdebe mantenerse antes y después de las cejecuciones. (El *conectivo requiere que sus argumentos sean disjuntos). A menudo, las condiciones previas y posteriores son estados de un montón, y ces un programa eficaz que modifica el montón de alguna manera.
{p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}
Las discusiones sobre la regla del marco que he visto siempre parecen centrarse en cómo rse preserva la parte disjunta del montón . Esto permite el "razonamiento local": cuando razonamos sobre el efecto que ctiene, podemos ignorar la rparte del montón y solo preocuparnos por la parte que realmente cambia. Pero otra forma de verlo es que el cambio de paq se conserva, a pesar de rque ahora está sentado allí. En otras palabras, es importante que terminemos con la condición posterior {q * r}, en lugar de {q' * r}por alguna otra q'.
Entonces, mi pregunta es si hay algún tratamiento de la regla del marco que discuta o haga uso de la preservación del cambio de puna qcosa a otra.