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