| ⊦ a = st[a, d0].min ∧ ¬ a ∈ st → st[a, d].butmin = st |
a = st[a, d0].min, st[a, d].butmin ≠ st, ¬ a ∈ st ⊦
| a = st[a, d0].min, st[a, d].butmin ≠ st, ¬ a ∈ st ⊦ |
a = st[a, d0].min, st[a, d] -- st[a, d].min ≠ st, ¬ a ∈ st ⊦
Used simplifier rules: Butmin: ⊦ st.butmin = st -- st.min;
| a = st[a, d0].min, st[a, d] -- st[a, d].min ≠ st, ¬ a ∈ st ⊦ |
⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a])
a = st[a, d0].min, ¬ a ∈ st, ∃ a0. ¬((a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ (st[a, d] -- st[a, d].min)[a0] = st[a0]) ⊦
Used terms: st, st[a, d] -- st[a, d].min
| ⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1[a] = st2[a]) |
| a = st[a, d0].min, ¬ a ∈ st, ∃ a0. ¬((a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ (st[a, d] -- st[a, d].min)[a0] = st[a0]) ⊦ |
a = st[a, d0].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ (st[a, d] -- st[a, d].min)[a0] = st[a0]
| a = st[a, d0].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ (st[a, d] -- st[a, d].min)[a0] = st[a0] |
⊦ a ≠ b → (st -- b)[a] = st[a]
a = st[a, d0].min, a0 = st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ (st[a, d] -- st[a, d].min)[a0] = st[a0]
a = st[a, d0].min, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0]
Used terms: a0, st[a, d].min, st[a, d]
| ⊦ a ≠ b → (st -- b)[a] = st[a] |
| a = st[a, d0].min, a0 = st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ (st[a, d] -- st[a, d].min)[a0] = st[a0] |
a = st[a, d0].min, ¬ a ∈ st ⊦ (st[a, d].min ∈ st[a, d] -- st[a, d].min ↔ st[a, d].min ∈ st) ∧ ∅[st[a, d].min] = st[st[a, d].min]
Used simplifier rules: ⊦ (st -- a)[a] = ∅[a]; (s)
| a = st[a, d0].min, ¬ a ∈ st ⊦ (st[a, d].min ∈ st[a, d] -- st[a, d].min ↔ st[a, d].min ∈ st) ∧ ∅[st[a, d].min] = st[st[a, d].min] |
Used simplifier rules: min-put-01: ⊦ st[a, d].min = a → st[a, d0].min = a; min-put-01: ⊦ st[a, d].min = a → st[a, d0].min = a; ⊦ ¬ a ∈ st → st[a] = ∅[a]; (s) ⊦ st[a, d] -- a = st -- a; (s) ⊦ ¬ a ∈ st → st -- a = st; (s)
| a = st[a, d0].min, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0] |
a = st[a, d0].min, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0]
| a = st[a, d0].min, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0] |
a = st[a, d0].min, a0 = a, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0]
a = st[a, d0].min, a0 ≠ a, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0]
Used formulas: a0 = a
| a = st[a, d0].min, a0 = a, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0] |
a = st[a, d0].min, a ≠ st[a, d].min, ¬ a ∈ st ⊦ ¬ a ∈ st[a, ∅[a]] -- st[a, ∅[a]].min ∧ d = ∅[a]
Used simplifier rules: ⊦ ¬ a ∈ st → st[a] = ∅[a]; (s) ⊦ st[a, d][a] = d; (s)
| a = st[a, d0].min, a ≠ st[a, d].min, ¬ a ∈ st ⊦ ¬ a ∈ st[a, ∅[a]] -- st[a, ∅[a]].min ∧ d = ∅[a] |
⊦ st ≠ ∅ → st.min = st.keys.min
a = st[a, d0].keys.min, st[a, d0] ≠ ∅, a ≠ st[a, d].min, ¬ a ∈ st ⊦ ¬ a ∈ st[a, ∅[a]] -- st[a, ∅[a]].min ∧ d = ∅[a]
Used simplifier rules: ⊦ st[a, d] ≠ ∅; (s) Used terms: st[a, d0]
| ⊦ st ≠ ∅ → st.min = st.keys.min |
| a = st[a, d0].keys.min, st[a, d0] ≠ ∅, a ≠ st[a, d].min, ¬ a ∈ st ⊦ ¬ a ∈ st[a, ∅[a]] -- st[a, ∅[a]].min ∧ d = ∅[a] |
a = (st.keys ++ a).min, a ≠ st[a, d].min, ¬ a ∈ st ⊦ ¬ a ∈ st[a, ∅[a]] -- st[a, ∅[a]].min ∧ d = ∅[a]
Used simplifier rules: insert-03: ⊦ st[a, d].keys = st.keys ++ a; ⊦ st[a, d] ≠ ∅; (s)
| a = (st.keys ++ a).min, a ≠ st[a, d].min, ¬ a ∈ st ⊦ ¬ a ∈ st[a, ∅[a]] -- st[a, ∅[a]].min ∧ d = ∅[a] |
⊦ st ≠ ∅ → st.min = st.keys.min
Used simplifier rules: insert-03: ⊦ st[a, d].keys = st.keys ++ a; ⊦ st[a, d] ≠ ∅; (s) Used terms: st[a, d]
| ⊦ st ≠ ∅ → st.min = st.keys.min |
| a = st[a, d0].min, a0 ≠ a, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ (a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st) ∧ st[a, d][a0] = st[a0] |
a = st[a, d0].min, ¬(a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st), a0 ≠ a, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦
Used simplifier rules: ⊦ a ≠ b → st[b, d][a] = st[a]; (s)
| a = st[a, d0].min, ¬(a0 ∈ st[a, d] -- st[a, d].min ↔ a0 ∈ st), a0 ≠ a, a0 ≠ st[a, d].min, ¬ a ∈ st ⊦ |
Used simplifier rules: min-put-01: ⊦ st[a, d].min = a → st[a, d0].min = a; min-put-01: ⊦ st[a, d].min = a → st[a, d0].min = a; ⊦ st[a, d] -- a = st -- a; (s) ⊦ ¬ a ∈ st → st -- a = st; (s)
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.