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