| ⊦ rk ∈ st → ( onlyModified(r, st[rk, val], st1) ↔ onlyModified(r, st, st1[rk, st[rk]]) ∧ rk ∈ st1 ∧ (r ≠ rk .ref ∨ rk = r -- _length ∨ rk = r -- _type → st1[rk] = val)) |
⊦ 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 ∈ st → ( (∀ rk0. rk0 ∈ st[rk, val] ↔ rk0 ∈ st1) ∧ (∀ r0, sk. r0 ≠ r → (st[rk, val][r0 -- sk]) = st1[r0 -- sk]) ∧ (r -- _type ∈ st[rk, val] → (st[rk, val][r -- _type]) = st1[r -- _type]) ∧ (r -- _length ∈ st[rk, val] → (st[rk, val][r -- _length]) = st1[r -- _length]) ↔ onlyModified(r, st, st1[rk, st[rk]]) ∧ rk ∈ st1 ∧ (r ≠ rk .ref ∨ rk = r -- _length ∨ rk = r -- _type → st1[rk] = val))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st1, st[rk, val], r)]]