| 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 -- sk0 ∈ st[r -- sk, val] ↔ r1 -- sk0 ∈ st1, r0 = r1 |
⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st
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 -- sk0 = r -- sk ∨ r1 -- sk0 ∈ st ↔ r1 -- sk0 ∈ st1, r0 = r1
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (val, r -- sk, st, r1 -- sk0)]]