| # s < # s0 ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ s |
# ∅ < # s0 ⊦ ∃ a. a ∈ s0 ∧ ¬ a ∈ ∅
#(s1 ++ a) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 ++ a
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 ++ a0, # s0 ≠ 0, s0 ≠ s, s0 ≠ ∅ ⊦ ∃ a. a ∈ s0
Used simplifier rules: gen: ⊦ ;
| s0 = s ++ a0, # s0 ≠ 0, s0 ≠ s, s0 ≠ ∅ ⊦ ∃ a. a ∈ s0 |
¬ a0 ∈ s ⊦ ∃ a. a = a0 ∨ 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)
| ¬ a0 ∈ s ⊦ ∃ a. a = a0 ∨ a ∈ s |
Used terms: a0
| #(s1 ++ a) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 ++ a |
#(s1 ++ a) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ 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 ++ a) < # s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
#(s1 ++ a) < # s0, a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
#(s1 ++ a) < # s0, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
Used formulas: a ∈ s0
| #(s1 ++ a) < # s0, a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
#(s1 ++ a) < # s0, a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
Used simplifier rules: ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| #(s1 ++ a) < # s0, a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
#(s1 ++ a) < # s0, a ∈ s0, a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
#(s1 ++ a) < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
Used formulas: a ∈ s1
| #(s1 ++ a) < # s0, a ∈ s0, a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
# s1 < # s0, a ∈ s0, a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used simplifier rules: eq: ⊦ a ∈ s → s ++ a = s; ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| # s1 < # s0, a ∈ s0, a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
# s1 < # s0, a ∈ s1, a ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used terms: s0
| # s1 < # s0, a ∈ s1, a ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
# s1 < # s0, a ∈ s0, a ∈ s1, a0 ∈ s0, ¬ a0 ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
| # s1 < # s0, a ∈ s0, a ∈ s1, a0 ∈ s0, ¬ a0 ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
Used terms: a0
| #(s1 ++ a) < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
# s1 + 1 < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1;
| # s1 + 1 < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
s1 = ∅, # s1 + 1 < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
s1 = s ++ a1, s1 ≠ s, # s1 + 1 < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1
Used simplifier rules: gen: ⊦ ;
| s1 = ∅, # s1 + 1 < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
# s0 ≠ 1, # s0 ≠ 0, a ∈ s0, ∀ s. # s ≠ 0 → (∃ a0. a0 ∈ s) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a
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, a ∈ s0, ∀ s. # s ≠ 0 → (∃ a0. a0 ∈ s) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a |
⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0)
# s0 ≠ 1, # s0 ≠ 0, ∀ s. # s ≠ 0 → (∃ a0. a0 ∈ s), ∃ s1. s0 = s1 ++ a ∧ ¬ a ∈ s1 ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a
Used terms: s0, a
| ⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0) |
| # s0 ≠ 1, # s0 ≠ 0, ∀ s. # s ≠ 0 → (∃ a0. a0 ∈ s), ∃ s1. s0 = s1 ++ a ∧ ¬ a ∈ s1 ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a |
# s1 ≠ 0, s1 ≠ ∅, ¬ a ∈ s1, ∀ s. # s ≠ 0 → (∃ a0. a0 ∈ s) ⊦ ∃ a0. a0 ∈ 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 ≠ ∅, ¬ a ∈ s1, ∀ s. # s ≠ 0 → (∃ a0. a0 ∈ s) ⊦ ∃ a0. a0 ∈ s1 |
Used terms: s1
| s1 = s ++ a1, s1 ≠ s, # s1 + 1 < # s0, a ∈ s0, ¬ a ∈ s1, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
a ≠ a1, (# s + 1) + 1 < # s0, a ∈ s0, ¬ a1 ∈ s, ¬ a ∈ s, ∀ s1. # s + 1 < # s1 → (∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ a0 ≠ a1 ∧ ¬ a0 ∈ 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;
| a ≠ a1, (# s + 1) + 1 < # s0, a ∈ s0, ¬ a1 ∈ s, ¬ a ∈ s, ∀ s1. # s + 1 < # s1 → (∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s |
⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0)
a ≠ a1, (# s + 1) + 1 < # s0, ¬ a1 ∈ s, ¬ a ∈ s, ∀ s1. # s + 1 < # s1 → (∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s), ∃ s1. s0 = s1 ++ a ∧ ¬ a ∈ s1 ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s
Used terms: s0, a
| ⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0) |
| a ≠ a1, (# s + 1) + 1 < # s0, ¬ a1 ∈ s, ¬ a ∈ s, ∀ s1. # s + 1 < # s1 → (∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s), ∃ s1. s0 = s1 ++ a ∧ ¬ a ∈ s1 ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s |
a ≠ a1, # s + 1 < # s1, ¬ a ∈ s1, ¬ a ∈ s, ¬ a1 ∈ s, ∀ s1. # s + 1 < # s1 → (∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s) ⊦ ∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ 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)
| a ≠ a1, # s + 1 < # s1, ¬ a ∈ s1, ¬ a ∈ s, ¬ a1 ∈ s, ∀ s1. # s + 1 < # s1 → (∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s) ⊦ ∃ a0. a0 ∈ s1 ∧ a0 ≠ a1 ∧ ¬ a0 ∈ s |
Used terms: s1
| #(s1 ++ a) < # s0, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ a0 ≠ a ∧ ¬ a0 ∈ s1 |
#(s1 ++ a) < # s0, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
| #(s1 ++ a) < # s0, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
#(s1 ++ a) < # s0, a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
#(s1 ++ a) < # s0, ¬ a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used formulas: a ∈ s1
| #(s1 ++ a) < # s0, a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
# s1 < # s0, a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used simplifier rules: eq: ⊦ a ∈ s → s ++ a = s; ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| # s1 < # s0, a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
# s1 < # s0, a ∈ s1, ¬ a ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used terms: s0
| # s1 < # s0, a ∈ s1, ¬ a ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
# s1 < # s0, a0 ∈ s0, a ∈ s1, ¬ a0 ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used simplifier rules: ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false);
| # s1 < # s0, a0 ∈ s0, a ∈ s1, ¬ a0 ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
Used terms: a0
| #(s1 ++ a) < # s0, ¬ a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
#(s1 ++ a) < # s0, ¬ a ∈ s1, ¬ a ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used terms: s0
| #(s1 ++ a) < # s0, ¬ a ∈ s1, ¬ a ∈ s0, # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1), ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
# s1 < # s0, # s1 + 1 < # s0, a0 ∈ s0, ¬ a0 ∈ s1, ¬ a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1
Used simplifier rules: Size-insert: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; ne-01: ⊦ a ∈ s → s ≠ ∅; ne-02: ⊦ a ∈ s → (s = ∅ ↔ false); 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)
| # s1 < # s0, # s1 + 1 < # s0, a0 ∈ s0, ¬ a0 ∈ s1, ¬ a ∈ s1, ¬ a ∈ s0, ∀ s0. # s1 < # s0 → (∃ a. a ∈ s0 ∧ ¬ a ∈ s1) ⊦ ∃ a0. a0 ∈ s0 ∧ ¬ a0 ∈ s1 |
Used terms: a0
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.