| r0 -- sk ∈ st1, r0 -- sk ∈ st0, onlyModified(r0, st0, st1), r0 ∈ st1, r0 ∈ st0, ¬ # st0 ≤ # (st0 -- (r0 -- sk)) → ( onlyModified(r0, st0 -- (r0 -- sk), st1 -- (r0 -- sk)) → (∃ fis. st1 -- (r0 -- sk) = update(r0, fis, st0 -- (r0 -- sk)) ∧ validFields(r0, fis, st0 -- (r0 -- sk)))) ⊦ st0[r0 -- sk] = st1[r0 -- sk], ∃ fis. st1 = update(r0, fis, st0) ∧ validFields(r0, fis, st0) |
r0 -- sk ∈ st1, r0 -- sk ∈ st0, onlyModified(r0, st0, st1), r0 ∈ st1, r0 ∈ st0, ¬ # st0 ≤ # st0 - 1 → st1 -- (r0 -- sk) = update(r0, fis, st0 -- (r0 -- sk)) ∧ validFields(r0, fis, st0 -- (r0 -- sk)) ⊦ st0[r0 -- sk] = st1[r0 -- sk], ∃ fis. st1 = update(r0, fis, st0) ∧ validFields(r0, fis, st0)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ onlyModified(r, st, st0) ∧ rk ∈ st → onlyModified (r, st -- rk, st0 -- rk)], [CSIMPSEQ : ⊦ n -1 = n - 1], [CSIMPSEQ : ⊦ rk ∈ st → # (st -- rk) = (# st) -1])]]