| # s < # s0 ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s |
# ∅ < # s0 ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ ∅
#(s1 ++ elem) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 ++ elem
Used simplifier rules: gen: ⊦ ;
| # ∅ < # s0 ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ ∅ |
# s0 ≠ 0, s0 ≠ ∅ ⊦ ∃ a. a ∈ s0
Used simplifier rules: Size-empty: ⊦ # ∅ = 0; In-empty: ⊦ ¬ a ∈ ∅; size-zero: ⊦ # s ≠ 0 → s ≠ ∅; size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; ⊦ 0 < m ↔ m ≠ 0; (s)
| # s0 ≠ 0, s0 ≠ ∅ ⊦ ∃ a. a ∈ s0 |
s0 = s ++ elem, # s0 ≠ 0, s0 ≠ s, s0 ≠ ∅ ⊦ ∃ a. a ∈ s0
Used simplifier rules: gen: ⊦ ;
| s0 = s ++ elem, # s0 ≠ 0, s0 ≠ s, s0 ≠ ∅ ⊦ ∃ a. a ∈ s0 |
¬ elem ∈ s ⊦ ∃ a. a = elem ∨ a ∈ s
Used simplifier rules: eq-03: ⊦ s ++ a = s ↔ a ∈ s; ne: ⊦ ∅ ≠ s ++ a; Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; In-insert: ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s; c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| ¬ elem ∈ s ⊦ ∃ a. a = elem ∨ a ∈ s |
Used terms: elem
| #(s1 ++ elem) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 ++ elem |
#(s1 ++ elem) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
Used simplifier rules: In-insert: ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s; ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| #(s1 ++ elem) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
#(s1 ++ elem) < # s0, elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
#(s1 ++ elem) < # s0, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
Used formulas: elem ∈ s0
| #(s1 ++ elem) < # s0, elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
#(s1 ++ elem) < # s0, elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
Used simplifier rules: ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| #(s1 ++ elem) < # s0, elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
#(s1 ++ elem) < # s0, elem ∈ s0, elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
#(s1 ++ elem) < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
Used formulas: elem ∈ s1
| #(s1 ++ elem) < # s0, elem ∈ s0, elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
# s1 < # s0, elem ∈ s0, elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
Used simplifier rules: eq: ⊦ a ∈ s → s ++ a = s; ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| # s1 < # s0, elem ∈ s0, elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
Used terms: s0
| #(s1 ++ elem) < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
# s1 + 1 < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1;
| # s1 + 1 < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
s1 = ∅, # s1 + 1 < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
s1 = s ++ elem0, s1 ≠ s, # s1 + 1 < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1
Used simplifier rules: gen: ⊦ ;
| s1 = ∅, # s1 + 1 < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
# s0 ≠ 1, # s0 ≠ 0, elem ∈ s0, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem
Used simplifier rules: Size-empty: ⊦ # ∅ = 0; In-empty: ⊦ ¬ a ∈ ∅; ⊦ 0 < m ↔ m ≠ 0; (s) ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s)
| # s0 ≠ 1, # s0 ≠ 0, elem ∈ s0, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem |
⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0)
# s0 ≠ 1, # s0 ≠ 0, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s), ∃ s1. s0 = s1 ++ elem ∧ ¬ elem ∈ s1 ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem
Used terms: s0, elem
| ⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0) |
| # s0 ≠ 1, # s0 ≠ 0, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s), ∃ s1. s0 = s1 ++ elem ∧ ¬ elem ∈ s1 ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem |
# s1 ≠ 0, s1 ≠ ∅, ¬ elem ∈ s1, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s1
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; in-02: ⊦ a ≠ b → (a ∈ s ++ b ↔ a ∈ s); size-zero: ⊦ # s ≠ 0 → s ≠ ∅; size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s) ⊦ m + n = 1 ↔ m = 0 ∧ n = 1 ∨ n = 0 ∧ m = 1; (ws)
| # s1 ≠ 0, s1 ≠ ∅, ¬ elem ∈ s1, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s1 |
# s1 ≠ 0, s1 ≠ ∅, ¬ elem ∈ s1, # s1 ≠ 0 → (∃ elem0. elem0 ∈ s1), ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s1
Used terms: s1
| # s1 ≠ 0, s1 ≠ ∅, ¬ elem ∈ s1, # s1 ≠ 0 → (∃ elem0. elem0 ∈ s1), ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s1 |
# s1 ≠ 0, elem0 ∈ s1, ¬ elem ∈ s1, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s1
Used simplifier rules: ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| # s1 ≠ 0, elem0 ∈ s1, ¬ elem ∈ s1, ∀ s. # s ≠ 0 → (∃ elem0. elem0 ∈ s) ⊦ ∃ a. a ∈ s1 |
Used terms: elem0
| s1 = s ++ elem0, s1 ≠ s, # s1 + 1 < # s0, elem ∈ s0, ¬ elem ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
elem ≠ elem0, (# s + 1) + 1 < # s0, elem ∈ s0, ¬ elem0 ∈ s, ¬ elem ∈ s, ∀ s1. # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ a ≠ elem0 ∧ ¬ a ∈ s
Used simplifier rules: eq-03: ⊦ s ++ a = s ↔ a ∈ s; Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; In-insert: ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s;
| elem ≠ elem0, (# s + 1) + 1 < # s0, elem ∈ s0, ¬ elem0 ∈ s, ¬ elem ∈ s, ∀ s1. # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ a ≠ elem0 ∧ ¬ a ∈ s |
⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0)
elem ≠ elem0, (# s + 1) + 1 < # s0, ¬ elem0 ∈ s, ¬ elem ∈ s, ∀ s1. # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s), ∃ s1. s0 = s1 ++ elem ∧ ¬ elem ∈ s1 ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ a ≠ elem0 ∧ ¬ a ∈ s
Used terms: s0, elem
| ⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0) |
| elem ≠ elem0, (# s + 1) + 1 < # s0, ¬ elem0 ∈ s, ¬ elem ∈ s, ∀ s1. # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s), ∃ s1. s0 = s1 ++ elem ∧ ¬ elem ∈ s1 ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ a ≠ elem0 ∧ ¬ a ∈ s |
elem ≠ elem0, # s + 1 < # s1, ¬ elem ∈ s1, ¬ elem ∈ s, ¬ elem0 ∈ s, ∀ s1. # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s) ⊦ ∃ a. a ∈ s1 ∧ a ≠ elem0 ∧ ¬ a ∈ s
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; in-02: ⊦ a ≠ b → (a ∈ s ++ b ↔ a ∈ s); ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic n0 < n ⊦ m + (* n) < m0 + (* n0) ↔ m + (n - n0) < m0; (s)
| elem ≠ elem0, # s + 1 < # s1, ¬ elem ∈ s1, ¬ elem ∈ s, ¬ elem0 ∈ s, ∀ s1. # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s) ⊦ ∃ a. a ∈ s1 ∧ a ≠ elem0 ∧ ¬ a ∈ s |
elem ≠ elem0, # s + 1 < # s1, ¬ elem ∈ s1, ¬ elem ∈ s, ¬ elem0 ∈ s, # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s) ⊦ ∃ a. a ∈ s1 ∧ a ≠ elem0 ∧ ¬ a ∈ s
Used terms: s1
| elem ≠ elem0, # s + 1 < # s1, ¬ elem ∈ s1, ¬ elem ∈ s, ¬ elem0 ∈ s, # s + 1 < # s1 → (∃ elem1. elem1 ∈ s1 ∧ elem1 ≠ elem0 ∧ ¬ elem1 ∈ s) ⊦ ∃ a. a ∈ s1 ∧ a ≠ elem0 ∧ ¬ a ∈ s |
elem ≠ elem0, elem1 ≠ elem0, # s + 1 < # s1, elem1 ∈ s1, ¬ elem1 ∈ s, ¬ elem0 ∈ s, ¬ elem ∈ s, ¬ elem ∈ s1 ⊦ ∃ a. a ∈ s1 ∧ a ≠ elem0 ∧ ¬ a ∈ s
Used simplifier rules: ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| elem ≠ elem0, elem1 ≠ elem0, # s + 1 < # s1, elem1 ∈ s1, ¬ elem1 ∈ s, ¬ elem0 ∈ s, ¬ elem ∈ s, ¬ elem ∈ s1 ⊦ ∃ a. a ∈ s1 ∧ a ≠ elem0 ∧ ¬ a ∈ s |
Used terms: elem1
| #(s1 ++ elem) < # s0, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ a ≠ elem ∧ ¬ a ∈ s1 |
#(s1 ++ elem) < # s0, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
| #(s1 ++ elem) < # s0, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
#(s1 ++ elem) < # s0, elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
#(s1 ++ elem) < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
Used formulas: elem ∈ s1
| #(s1 ++ elem) < # s0, elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
# s1 < # s0, elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
Used simplifier rules: eq: ⊦ a ∈ s → s ++ a = s; ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| # s1 < # s0, elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
Used terms: s0
| #(s1 ++ elem) < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
#(s1 ++ elem) < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, # s1 < # s1 → (∃ a. a ∈ s1 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
Used terms: s1
| #(s1 ++ elem) < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, # s1 < # s1 → (∃ a. a ∈ s1 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
# s1 + 1 < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; ⊦ ¬ n < n; (s)
| # s1 + 1 < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
# s1 + 1 < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1
Used terms: s0
| # s1 + 1 < # s0, ¬ elem ∈ s1, ¬ elem ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s1 |
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ m < n → ¬ m + m0 < n; (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.