| ¬ a0 ≠ st[a, d].min ⊦ a0 = a, a = st[a, d].min, (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st -- st.min) ∧ (st[a, d] -- st[a, d].min)[a0] = (st -- st.min)[a0] |
st[a, d].min ∈ st, st.min < st[a, d].min ⊦ st[a, d].min = st.min, a = st[a, d].min
Used simplifier rules: Min-min: ⊦ a ∈ st → ¬ a < st.min;%inf: ⊦ a ∈ st → a ∈ st.keys;%Keys: ⊦ a ∈ st.keys ↔ a ∈ st;%sls: ⊦ a ≠ b → (¬ a < b ↔ b < a); from specification oelem%Del-in: ⊦ a ∈ st -- b ↔ a ≠ b ∧ a ∈ st; from specification store%notmemlookup: ⊦ ¬ a ∈ st → st[a] = (∅)[a]; from specification store%lookupisempty: ⊦ (st -- a)[a] = (∅)[a]; from specification store%Del-notin: ⊦ ¬ a ∈ st -- a; from specification store