| st1[r0 -- sk0] = (update(r0, fis, st0 -- (r0 -- sk))[r0 -- sk0]), r0 -- sk0 ∈ st1 ↔ r0 -- sk0 ∈ update(r0, fis, st0 -- (r0 -- sk)), # st0 = m + 1, r0 -- sk ∈ st1, r0 -- sk ∈ st0, onlyModified(r0, st0, st1), r0 ∈ st1, r0 ∈ st0, validFields(r0, fis, st0 -- (r0 -- sk)), ∀ rk. (rk ∈ st1 -- (r0 -- sk) ↔ rk ∈ update(r0, fis, st0 -- (r0 -- sk))) ∧ (st1 -- (r0 -- sk))[rk] = (update(r0, fis, st0 -- (r0 -- sk))[rk]) ⊦ sk0 = sk, st1[r0 -- sk0] = (update(r0, fis, st0)[r0 -- sk0]), st0[r0 -- sk] = st1[r0 -- sk], st0 = ∅ |
⊦ ¬ sk ∈ fis → (update(r, fis, st)[r0 -- sk]) = st[r0 -- sk]
⊦ sk ∈ fis → (update(r, fis, st)[r -- sk]) = fis[sk]
¬ sk0 ∈ fis, st1[r0 -- sk0] = (update(r0, fis, st0 -- (r0 -- sk))[r0 -- sk0]), r0 -- sk0 ∈ st1 ↔ r0 -- sk0 ∈ update(r0, fis, st0 -- (r0 -- sk)), # st0 = m + 1, r0 -- sk ∈ st1, r0 -- sk ∈ st0, onlyModified(r0, st0, st1), r0 ∈ st1, r0 ∈ st0, validFields(r0, fis, st0 -- (r0 -- sk)), ∀ rk. (rk ∈ st1 -- (r0 -- sk) ↔ rk ∈ update(r0, fis, st0 -- (r0 -- sk))) ∧ (st1 -- (r0 -- sk))[rk] = (update(r0, fis, st0 -- (r0 -- sk))[rk]) ⊦ sk0 = sk, st1[r0 -- sk0] = st0[r0 -- sk0], st0[r0 -- sk] = st1[r0 -- sk], st0 = ∅
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ rk ∈ st → st[rk] = ∅[rk]], [CSIMPSEQ : ⊦ ∅[rk] = noval])], [EXTRATERMS : (sk0, r0, st0, fis, r0)]]