Une règle de trame , comme celle donnée ci-dessous, capture l'idée que, étant donné un programme cavec une précondition pqui tient avant qu'il s'exécute et une postcondition qqui tient après, une condition disjointe rdevrait tenir à la fois avant et après les cexécutions. (Le *connectif nécessite que ses arguments soient disjoints.) Souvent, les pré- et post-conditions sont des états d'un tas, et cest un programme efficace qui modifie le tas d'une manière ou d'une autre.
    {p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}
Les discussions sur la règle de trame que j'ai vues semblent toujours se concentrer sur la façon dont la partie disjointe du tas rest préservée. Cela permet un «raisonnement local»: lorsque nous raisonnons sur l'effet qui en crésulte, nous pouvons ignorer la rpartie du tas et ne nous préoccuper que de la partie qui change réellement. Mais une autre façon de voir les choses est que le changement de pàq est conservé, même s'il rest maintenant là. En d'autres termes, il est important que nous nous retrouvions avec la postcondition {q * r}, plutôt que {q' * r}pour une autre q'.
Donc, ma question est de savoir s'il y a un traitement de la règle de cadre qui traite ou fait usage de la conservation-de-changement From- p-à- qchose.