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