| 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) |
# st0 = m + 1 ∧ # st0 ≠ 0, r0 -- sk ∈ st1, r0 -- sk ∈ st0, onlyModified(r0, st0, st1), r0 ∈ st1, r0 ∈ st0, ¬ # st0 ≤ m → 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 : ⊦ # st = 0 ↔ st = ∅], [CSIMPSEQ : ⊦ ¬ m ≤ n ↔ n < m], [CSIMPFORWARD : ⊦ m < n → n ≠ 0], [CSIMPFORWARD : ⊦ m ≤ m - 1 → m = 0], [CSIMPSEQ : ⊦ # ∅ = 0], [CSIMPSEQ : ⊦ ∅[rk] = noval], [CSIMPSEQ : ⊦ ¬ r ∈ ∅], [CSIMPELIM : n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1])], [EXTRATERMS : (# st0, m)]]