| ⊦ 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 -- st.min)[a, d], st[a, d] -- 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]) ⊦ |
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.