Una regola di frame , come quella indicata di seguito, cattura l'idea che, dato un programma ccon precondizione pche vale prima che venga eseguito e postcondizione qche detiene in seguito, alcune condizioni disgiunte rdovrebbero contenere sia prima che dopo l' cesecuzione. (La *connettiva richiede che i suoi argomenti siano disgiunti.) Spesso, pre e postcondizioni sono stati di un heap ed cè un programma efficace che modifica l'heap in qualche modo.
{p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}
Le discussioni sulla regola del frame che ho visto sembrano sempre focalizzarsi su come rviene preservata la parte sconnessa dell'heap . Questo abilita il "ragionamento locale": quando ragioniamo sull'effetto che cha, possiamo ignorare la rparte dell'heap e preoccuparci solo della parte che effettivamente cambia. Ma un altro modo di vederlo è che il cambiamento da paq è preservato, anche se rora è seduto lì. In altre parole, è importante che finiamo con la postcondizione {q * r}, piuttosto che {q' * r}per qualcun altro q'.
Quindi, la mia domanda è se c'è qualche trattamento della regola telaio che discute o si avvale della conservazione di variazione-da- p-a- qcosa.