| eqex(st1, st0[r -- sk, val], r0), eqex(st0[r -- sk, val], st1, r0), eqex(st, st0, r0), eqex(st0, st, r0), ∀ rk. (rk ∈ st -- r0 ↔ rk ∈ st0 -- r0) ∧ (st -- r0)[rk] = (st0 -- r0)[rk], ∀ rk0. (rk0 ∈ st0[r -- sk, val] -- r0 ↔ rk0 ∈ st1 -- r0) ∧ (st0[r -- sk, val] -- r0)[rk0] = (st1 -- r0)[rk0] ⊦ (((r1 = r ∧ sk0 = sk) ⊃ val; st[r1 -- sk0])) = st1[r1 -- sk0], r0 = r1 |
r1 = r ∧ sk0 = sk, eqex(st1, st0[r -- sk, val], r0), eqex(st0[r -- sk, val], st1, r0), eqex(st, st0, r0), eqex(st0, st, r0), ∀ rk. (rk ∈ st -- r0 ↔ rk ∈ st0 -- r0) ∧ (st -- r0)[rk] = (st0 -- r0)[rk], ∀ rk0. (rk0 ∈ st0[r -- sk, val] -- r0 ↔ rk0 ∈ st1 -- r0) ∧ (st0[r -- sk, val] -- r0)[rk0] = (st1 -- r0)[rk0] ⊦ val = st1[r1 -- sk0], r0 = r1
r1 ≠ r ∨ sk0 ≠ sk, eqex(st1, st0[r -- sk, val], r0), eqex(st0[r -- sk, val], st1, r0), eqex(st, st0, r0), eqex(st0, st, r0), ∀ rk. (rk ∈ st -- r0 ↔ rk ∈ st0 -- r0) ∧ (st -- r0)[rk] = (st0 -- r0)[rk], ∀ rk0. (rk0 ∈ st0[r -- sk, val] -- r0 ↔ rk0 ∈ st1 -- r0) ∧ (st0[r -- sk, val] -- r0)[rk0] = (st1 -- r0)[rk0] ⊦ st[r1 -- sk0] = st1[r1 -- sk0], r0 = r1
[[CONCRETESIMPRULES : ()]]