| # st0 = m + 1, ∀ rk. (rk ∈ st1 -- (r0 -- sk) ↔ rk ∈ update(r0, fis, st0 -- (r0 -- sk))) ∧ (st1 -- (r0 -- sk))[rk] = (update(r0, fis, st0 -- (r0 -- sk))[rk]), r0 -- sk ∈ st1, r0 -- sk ∈ st0, onlyModified(r0, st0, st1), r0 ∈ st1, r0 ∈ st0, validFields(r0, fis, st0 -- (r0 -- sk)) ⊦ st1 = (update(r0, fis, st0)[r0 -- sk, st1[r0 -- sk]]), st0[r0 -- sk] = st1[r0 -- sk], st0 = ∅ |
⊦ st1 = st2 ↔ (∀ rk. (rk ∈ st1 ↔ rk ∈ st2) ∧ st1[rk] = st2[rk])
# st0 = m + 1, ∀ rk. (rk ∈ st1 -- (r0 -- sk) ↔ rk ∈ update(r0, fis, st0 -- (r0 -- sk))) ∧ (st1 -- (r0 -- sk))[rk] = (update(r0, fis, st0 -- (r0 -- sk))[rk]), r0 -- sk ∈ st1, r0 -- sk ∈ st0, onlyModified(r0, st0, st1), r0 ∈ st1, r0 ∈ st0, validFields(r0, fis, st0 -- (r0 -- sk)) ⊦ ∀ rk. (rk ∈ st1 ↔ rk ∈ (update(r0, fis, st0)[r0 -- sk, st1[r0 -- sk]])) ∧ st1[rk] = (update(r0, fis, st0)[r0 -- sk, st1[r0 -- sk]][rk]), st0[r0 -- sk] = st1[r0 -- sk], st0 = ∅
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (update(r0, fis, st0)[r0 -- sk, st1[r0 -- sk]], st1)]]