| ⊦ a ≠ (st[a := d]).min → (st[a := d]).butmin = st.butmin[a := d] |
(st[a := d]).butmin ≠ st.butmin[a := d], a ≠ (st[a := d]).min ⊦
| (st[a := d]).butmin ≠ st.butmin[a := d], a ≠ (st[a := d]).min ⊦ |
st[a := d] -- (st[a := d]).min ≠ (st -- st.min)[a := d], a ≠ (st[a := d]).min ⊦
Used simplifier rules: Butmin: ⊦ st.butmin = st -- st.min;
| st[a := d] -- (st[a := d]).min ≠ (st -- st.min)[a := d], a ≠ (st[a := d]).min ⊦ |
⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a])
a ≠ (st[a := d]).min, ∃ a0. ¬((a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ (st -- st.min)[a := d]) ∧ (st[a := d] -- (st[a := d]).min)[a0] = ((st -- st.min)[a := d])[a0]) ⊦
Used terms: st[a := d] -- (st[a := d]).min, (st -- st.min)[a := d]
| ⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a]) |
| a ≠ (st[a := d]).min, ∃ a0. ¬((a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ (st -- st.min)[a := d]) ∧ (st[a := d] -- (st[a := d]).min)[a0] = ((st -- st.min)[a := d])[a0]) ⊦ |
a ≠ (st[a := d]).min ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ (st -- st.min)[a := d]) ∧ (st[a := d] -- (st[a := d]).min)[a0] = ((st -- st.min)[a := d])[a0]
| a ≠ (st[a := d]).min ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ (st -- st.min)[a := d]) ∧ (st[a := d] -- (st[a := d]).min)[a0] = ((st -- st.min)[a := d])[a0] |
a ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ (st -- st.min)[a := d]) ∧ (st[a := d] -- (st[a := d]).min)[a0] = ((st -- st.min)[a := d])[a0]
Used simplifier rules: ⊦ a ∈ st -- b ↔ a ≠ b ∧ a ∈ st; (ws) ⊦ a ∈ st[a := d]; (s) ⊦ a ≠ b → (st -- b)[a] = st[a]; (s) ⊦ (st[a := d])[a] = d; (s) Used formulas: a0 = a
| a ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ (st -- st.min)[a := d]) ∧ (st[a := d] -- (st[a := d]).min)[a0] = ((st -- st.min)[a := d])[a0] |
a ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ st -- st.min) ∧ (st[a := d] -- (st[a := d]).min)[a0] = (st -- st.min)[a0]
Used simplifier rules: ⊦ a ≠ b → (st[b := d])[a] = st[a]; (s) ⊦ a ≠ b → (a ∈ st[b := d] ↔ a ∈ st); (s)
| a ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ st -- st.min) ∧ (st[a := d] -- (st[a := d]).min)[a0] = (st -- st.min)[a0] |
⊦ a ≠ b → (st -- b)[a] = st[a]
a0 = (st[a := d]).min, a ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ st -- st.min) ∧ (st[a := d] -- (st[a := d]).min)[a0] = (st -- st.min)[a0]
a ≠ (st[a := d]).min, a0 ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ st -- st.min) ∧ (st[a := d])[a0] = (st -- st.min)[a0]
Used terms: a0, (st[a := d]).min, st[a := d]
| ⊦ a ≠ b → (st -- b)[a] = st[a] |
| a0 = (st[a := d]).min, a ≠ (st[a := d]).min, a0 ≠ a ⊦ (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.min, (st[a := d]).min ≠ a, st.min < (st[a := d]).min, (st[a := d]).min ∈ st ⊦
Used simplifier rules: Min-min: ⊦ a ∈ st → ¬ a < st.min; inf: ⊦ a ∈ st → a ∈ st.keys; Keys: ⊦ a ∈ st.keys ↔ a ∈ st; ⊦ a ≠ b → (a < b ↔ ¬ b < a); (ss) ⊦ a ∈ st -- b ↔ a ≠ b ∧ a ∈ st; (ws) ⊦ ¬ a ∈ st → st[a] = ∅[a]; (s) ⊦ (st -- a)[a] = ∅[a]; (s) ⊦ ¬ a ∈ st -- a; (s)
| (st[a := d]).min ≠ st.min, (st[a := d]).min ≠ a, st.min < (st[a := d]).min, (st[a := d]).min ∈ st ⊦ |
(st[a := d]).min ≠ st.min, (st[a := d]).min ≠ a, st ≠ ∅, st.min < (st[a := d]).min, (st[a := d]).min ∈ st ⊦
Used simplifier rules: min: ⊦ (∅[a := d]).min = a; Used formulas: st = ∅
| (st[a := d]).min ≠ st.min, (st[a := d]).min ≠ a, st ≠ ∅, st.min < (st[a := d]).min, (st[a := d]).min ∈ st ⊦ |
(st[a := d]).min ≠ a, (st[a := d]).min ≠ st.keys.min, st ≠ ∅, st.keys.min < (st[a := d]).min, (st[a := d]).min ∈ st, st.keys.min ∈ st ⊦
Used simplifier rules: Min-in: ⊦ st ≠ ∅ → st.min ∈ st; Min-min: ⊦ a ∈ st → ¬ a < st.min; inf: ⊦ a ∈ st → a ∈ st.keys; Keys: ⊦ a ∈ st.keys ↔ a ∈ st; min-def: ⊦ st ≠ ∅ → st.min = st.keys.min; ⊦ ¬ a < a; (s)
| (st[a := d]).min ≠ a, (st[a := d]).min ≠ st.keys.min, st ≠ ∅, st.keys.min < (st[a := d]).min, (st[a := d]).min ∈ st, st.keys.min ∈ st ⊦ |
⊦ a ≠ (st[a := d]).min → (st[a := d]).min = st.min
Used simplifier rules: min-def: ⊦ st ≠ ∅ → st.min = st.keys.min; Used terms: d, a, st
| ⊦ a ≠ (st[a := d]).min → (st[a := d]).min = st.min |
| a ≠ (st[a := d]).min, a0 ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st[a := d] -- (st[a := d]).min ↔ a0 ∈ st -- st.min) ∧ (st[a := d])[a0] = (st -- st.min)[a0] |
a ≠ (st[a := d]).min, a0 ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st ↔ a0 ∈ st -- st.min) ∧ st[a0] = (st -- st.min)[a0]
Used simplifier rules: ⊦ a ≠ b → (st[b := d])[a] = st[a]; (s) ⊦ a ≠ b → (a ∈ st[b := d] ↔ a ∈ st); (s) ⊦ a ∈ st -- b ↔ a ≠ b ∧ a ∈ st; (ws)
| a ≠ (st[a := d]).min, a0 ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st ↔ a0 ∈ st -- st.min) ∧ st[a0] = (st -- st.min)[a0] |
⊦ a ≠ b → (st -- b)[a] = st[a]
a0 = st.min, a ≠ (st[a := d]).min, a0 ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st ↔ a0 ∈ st -- st.min) ∧ st[a0] = (st -- st.min)[a0]
Used simplifier rules: ⊦ a ∈ st -- b ↔ a ≠ b ∧ a ∈ st; (ws) Used terms: a0, st.min, st
| ⊦ a ≠ b → (st -- b)[a] = st[a] |
| a0 = st.min, a ≠ (st[a := d]).min, a0 ≠ (st[a := d]).min, a0 ≠ a ⊦ (a0 ∈ st ↔ a0 ∈ st -- st.min) ∧ st[a0] = (st -- st.min)[a0] |
st.min ≠ a, st.min ≠ (st[a := d]).min, a ≠ (st[a := d]).min, st.min ∈ st ⊦
Used simplifier rules: Min-min: ⊦ a ∈ st → ¬ a < st.min; inf: ⊦ a ∈ st → a ∈ st.keys; Keys: ⊦ a ∈ st.keys ↔ a ∈ st; ⊦ ¬ a < a; (s) ⊦ ¬ a ∈ st → st[a] = ∅[a]; (s) ⊦ ¬ a ∈ st → st -- a = st; (s) ⊦ a ∈ st -- b ↔ a ≠ b ∧ a ∈ st; (ws)
| st.min ≠ a, st.min ≠ (st[a := d]).min, a ≠ (st[a := d]).min, st.min ∈ st ⊦ |
st.min ≠ a, st.min ≠ (st[a := d]).min, a ≠ (st[a := d]).min, st ≠ ∅, st.min ∈ st ⊦
Used simplifier rules: min: ⊦ (∅[a := d]).min = a; Used formulas: st = ∅
| st.min ≠ a, st.min ≠ (st[a := d]).min, a ≠ (st[a := d]).min, st ≠ ∅, st.min ∈ st ⊦ |
st.keys.min ≠ (st[a := d]).min, st.keys.min ≠ a, a ≠ (st[a := d]).min, st ≠ ∅, st.keys.min ∈ st ⊦
Used simplifier rules: Min-min: ⊦ a ∈ st → ¬ a < st.min; inf: ⊦ a ∈ st → a ∈ st.keys; Min-in: ⊦ st ≠ ∅ → st.min ∈ st; Keys: ⊦ a ∈ st.keys ↔ a ∈ st; min-def: ⊦ st ≠ ∅ → st.min = st.keys.min; ⊦ ¬ a < a; (s)
| st.keys.min ≠ (st[a := d]).min, st.keys.min ≠ a, a ≠ (st[a := d]).min, st ≠ ∅, st.keys.min ∈ st ⊦ |
⊦ a ≠ (st[a := d]).min → (st[a := d]).min = st.min
Used simplifier rules: min-def: ⊦ st ≠ ∅ → st.min = st.keys.min; Used terms: d, a, st
| ⊦ a ≠ (st[a := d]).min → (st[a := d]).min = st.min |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.