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