| ⊦ # st0 < # st → ¬ st ⊆ st0 |
# st0 < # st, st ⊆ st0 ⊦
| # st0 < # st, st ⊆ st0 ⊦ |
# st0 < # st1(a := d), st1(a := d) ⊆ st0, ∀ st0. ¬(# st0 < # st1 ∧ st1 ⊆ st0) ⊦
Used simplifier rules: gen: ⊦ ; subset-empty: ⊦ ∅ ⊆ st; Size-empty: ⊦ # ∅ = 0; ⊦ ¬ n < 0; (s)
| # st0 < # st1(a := d), st1(a := d) ⊆ st0, ∀ st0. ¬(# st0 < # st1 ∧ st1 ⊆ st0) ⊦ |
st1(a := d) ≠ ∅, # st0 < # st1(a := d), st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used simplifier rules: empty: ⊦ # st = 0 ↔ st = ∅; f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| st1(a := d) ≠ ∅, # st0 < # st1(a := d), st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1(a := d) ≠ ∅, # st0 < # st1(a := d), a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
st1(a := d) ≠ ∅, # st0 < # st1(a := d), st1(a := d) ⊆ st0, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used formulas: a ∈ st1
| st1(a := d) ≠ ∅, # st0 < # st1(a := d), a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1(a := d) ≠ ∅, st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used simplifier rules: size-in: ⊦ a ∈ st → # st(a := d) = # st; empty: ⊦ # st = 0 ↔ st = ∅; f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| st1(a := d) ≠ ∅, st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
⊦ st(a) = d ∧ a ∈ st → st(a := d) = st
st1(a := d) ≠ ∅, st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ st1(a) = d ∧ a ∈ st1
st1(a) = d, st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1 ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used terms: d, a, st1
| ⊦ st(a) = d ∧ a ∈ st → st(a := d) = st |
| st1(a := d) ≠ ∅, st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ st1(a) = d ∧ a ∈ st1 |
st1(a := d) ≠ ∅, st1 ≠ ∅, st1(a) ≠ d, # st0 < # st1, a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
| st1(a := d) ≠ ∅, st1 ≠ ∅, st1(a) ≠ d, # st0 < # st1, a ∈ st1, st1(a := d) ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
⊦ st(a := d) ⊆ st0 ↔ st -- a ⊆ st0 -- a ∧ a ∈ st0 ∧ st0(a) = d
st0(a) = d, st1(a := d) ≠ ∅, st1 ≠ ∅, st1(a) ≠ d, # st0 < # st1, a ∈ st0, a ∈ st1, st1 -- a ⊆ st0 -- a, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used terms: st0, d, a, st1
| ⊦ st(a := d) ⊆ st0 ↔ st -- a ⊆ st0 -- a ∧ a ∈ st0 ∧ st0(a) = d |
| st0(a) = d, st1(a := d) ≠ ∅, st1 ≠ ∅, st1(a) ≠ d, # st0 < # st1, a ∈ st0, a ∈ st1, st1 -- a ⊆ st0 -- a, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1(a := st0(a)) ≠ ∅, st1 ≠ ∅, st1(a) ≠ st0(a), # st0 < # st1, a ∈ st1, a ∈ st0, st1 -- a ⊆ st0 -- a, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
| st1(a := st0(a)) ≠ ∅, st1 ≠ ∅, st1(a) ≠ st0(a), # st0 < # st1, a ∈ st1, a ∈ st0, st1 -- a ⊆ st0 -- a, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1(a := st0(a)) ≠ ∅, st1 ≠ ∅, st1(a) ≠ st0(a), # st0 < # st1, a ∈ st0, a ∈ st1, st1 -- a ⊆ st0 -- a, ¬ # st0(a := st1(a)) < # st1 ∨ ¬ st1 ⊆ st0(a := st1(a)), ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used terms: st0(a := st1(a))
| st1(a := st0(a)) ≠ ∅, st1 ≠ ∅, st1(a) ≠ st0(a), # st0 < # st1, a ∈ st0, a ∈ st1, st1 -- a ⊆ st0 -- a, ¬ # st0(a := st1(a)) < # st1 ∨ ¬ st1 ⊆ st0(a := st1(a)), ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1(a := st0(a)) ≠ ∅, st1 ≠ ∅, st1(a) ≠ st0(a), # st0 < # st1, a ∈ st1, a ∈ st0, st1 -- a ⊆ st0 -- a, ¬ st1 ⊆ st0(a := st1(a)), ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used simplifier rules: size-in: ⊦ a ∈ st → # st(a := d) = # st;
| st1(a := st0(a)) ≠ ∅, st1 ≠ ∅, st1(a) ≠ st0(a), # st0 < # st1, a ∈ st1, a ∈ st0, st1 -- a ⊆ st0 -- a, ¬ st1 ⊆ st0(a := st1(a)), ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
⊦ st ⊆ st0(a := d) ↔ st ⊆ st0 ∧ ¬ a ∈ st ∨ a ∈ st ∧ st(a) = d ∧ st -- a ⊆ st0 -- a
Used terms: st1(a), a, st0, st1
| ⊦ st ⊆ st0(a := d) ↔ st ⊆ st0 ∧ ¬ a ∈ st ∨ a ∈ st ∧ st(a) = d ∧ st -- a ⊆ st0 -- a |
| st1(a) = d, st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1 ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1 ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
| st1 ≠ ∅, # st0 < # st1, a ∈ st1, st1 ⊆ st0, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
Used terms: st0
| st1(a := d) ≠ ∅, # st0 < # st1(a := d), st1(a := d) ⊆ st0, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1(a := d) ≠ ∅, # st0 ≤ # st1, st1(a := d) ⊆ st0, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ st → # st(a := d) = # st + 1; ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| st1(a := d) ≠ ∅, # st0 ≤ # st1, st1(a := d) ⊆ st0, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
⊦ st(a := d) ⊆ st0 ↔ st -- a ⊆ st0 -- a ∧ a ∈ st0 ∧ st0(a) = d
st0(a) = d, st1(a := d) ≠ ∅, # st0 ≤ # st1, a ∈ st0, st1 -- a ⊆ st0 -- a, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used terms: st0, d, a, st1
| ⊦ st(a := d) ⊆ st0 ↔ st -- a ⊆ st0 -- a ∧ a ∈ st0 ∧ st0(a) = d |
| st0(a) = d, st1(a := d) ≠ ∅, # st0 ≤ # st1, a ∈ st0, st1 -- a ⊆ st0 -- a, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
st1(a := st0(a)) ≠ ∅, # st0 ≤ # st1, a ∈ st0, st1 ⊆ st0 -- a, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦
Used simplifier rules: notin-del-notin: ⊦ ¬ a ∈ st → st -- a = st;
| st1(a := st0(a)) ≠ ∅, # st0 ≤ # st1, a ∈ st0, st1 ⊆ st0 -- a, ¬ a ∈ st1, ∀ st. ¬ # st < # st1 ∨ ¬ st1 ⊆ st ⊦ |
Used simplifier rules: size: ⊦ a ∈ st → #(st -- a) = (# st).-1; empty: ⊦ # st = 0 ↔ st = ∅; Del-empty: ⊦ ∅ -- a = ∅; subset-empty-01: ⊦ st ⊆ ∅ ↔ st = ∅; In-empty: ⊦ ¬ a ∈ ∅; ⊦ n.-1 = n - 1; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < 1 ↔ m = 0; (s) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m ≤ n → (n < m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: st0 -- a
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.