| rk ∈ st0, onlyModified(r, st0, st1), ∀ st1, r, st. # st < # st0 → (onlyModified(r, st, st1) → (∃ fis. st1 = update(r, fis, st) ∧ validFields(r, fis, st))) ⊦ rk ∈ st1, ∃ fis. st1 = update(r, fis, st0) ∧ validFields(r, fis, st0) |
⊦ 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])
rk ∈ st0, (∀ rk. rk ∈ st0 ↔ rk ∈ st1) ∧ (∀ r0, sk. r0 ≠ r → st0[r0 -- sk] = st1[r0 -- sk]) ∧ (r -- _type ∈ st0 → st0[r -- _type] = st1[r -- _type]) ∧ (r -- _length ∈ st0 → st0[r -- _length] = st1[r -- _length]), ∀ st1, r, st. # st < # st0 → (onlyModified(r, st, st1) → (∃ fis. st1 = update(r, fis, st) ∧ validFields(r, fis, st))) ⊦ rk ∈ st1, ∃ fis. st1 = update(r, fis, st0) ∧ validFields(r, fis, st0)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st1, st0, r)]]