| a0 ∈ (st[b, d1] -- a)[c, d2] ⊦ a0 = c, (st[b, d1] -- a)[c, d2][a0] = d1, (st[b, d1] -- a)[c, d2][a0] = d2, ∃ a1. a1 ∈ st ∧ st[a1] = (st[b, d1] -- a)[c, d2][a0] |
a0 ∈ st[b, d1] ⊦ a0 = c, st[b, d1][a0] = d1, st[b, d1][a0] = d2, a0 = a, ∃ a1. a1 ∈ st ∧ st[a1] = st[b, d1][a0]
Used simplifier rules: Del-at: ⊦ a ≠ b → (st -- b)[a] = st[a]; from specification store%Del-at-strong: a ≠ b ⊦ (st -- b)[a] = st[a]; from specification store%Del-in: ⊦ a ∈ st -- b ↔ a ≠ b ∧ a ∈ st; from specification store%in-neq: ⊦ a ≠ b → (a ∈ st[b, d] ↔ a ∈ st); from specification store%lookupisempty: ⊦ (st -- a)[a] = (∅)[a]; from specification store%At-other: ⊦ a ≠ b → st[b, d][a] = st[a]; from specification store