| # x = # y, x ≠ y ⊦ ∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y = z + a0 ' + z1 |
# x = # y, x ≠ y ⊦ ∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y = z + a0 ' + z1
| # x = # y, x ≠ y ⊦ ∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y = z + a0 ' + z1 |
# x = #(a + y0), x ≠ a + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ x = z + a0 ' + z0 ∧ a + y0 = z + a1 ' + z1
Used simplifier rules: list('a) freely generated by [], +;; ⊦ # [] = 0; (s) ⊦ # x = 0 ↔ x = []; (s)
| # x = #(a + y0), x ≠ a + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ x = z + a0 ' + z0 ∧ a + y0 = z + a1 ' + z1 |
# x = # y0 + 1, x ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ x = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used simplifier rules: len-05: ⊦ #(a ' + x) = (# x)+1; a: ⊦ (x + y) + z = x + y + z; c: ⊦ a + x = a ' + x; ⊦ m +1 = m + 1; (s)
| # x = # y0 + 1, x ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ x = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# x = # y0 + 1, x = a2 + x0, x ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ x = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used simplifier rules: list('a) freely generated by [], +;; ⊦ # [] = 0; (s) ⊦ m + 1 ≠ 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # x = # y0 + 1, x = a2 + x0, x ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ x = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# x0 = # y0, a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used simplifier rules: len-05: ⊦ #(a ' + x) = (# x)+1; a: ⊦ (x + y) + z = x + y + z; c: ⊦ a + x = a ' + x; c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m +1 = m + 1; (s)
| # x0 = # y0, a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# x0 = # y0, a ' ≠ [], a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used simplifier rules: e: ⊦ a ' ≠ []; Used formulas: a ' = []
| # x0 = # y0, a ' ≠ [], a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# x0 = # y0, a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used simplifier rules: e: ⊦ a ' ≠ [];
| # x0 = # y0, a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# x0 = # y0, a2 = a, a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
# x0 = # y0, a2 ' + x0 ≠ a ' + y0, a2 ≠ a, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used formulas: a2 = a
| # x0 = # y0, a2 = a, a2 ' + x0 ≠ a ' + y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# x0 = # y0, x0 ≠ y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used simplifier rules: app-08: ⊦ a ' + x = a ' + y ↔ x = y; a: ⊦ (x + y) + z = x + y + z;
| # x0 = # y0, x0 ≠ y0, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# x0 = # y0, x0 ≠ y0, # x0 = # y0 ∧ x0 ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x0 = z + a ' + z0 ∧ y0 = z + a0 ' + z1), ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1
Used terms: x0
| # x0 = # y0, x0 ≠ y0, # x0 = # y0 ∧ x0 ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x0 = z + a ' + z0 ∧ y0 = z + a0 ' + z1), ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
# a0 ' + # z0 = # a1 ' + # z1, a0 ' + z0 ≠ a1 ' + z1, a0 ≠ a1, ∀ x. # x = # z + # a1 ' + # z1 ∧ x ≠ z + a1 ' + z1 → (∃ z0, a, a0, z2, z3. a ≠ a0 ∧ x = z0 + a ' + z2 ∧ z + a1 ' + z1 = z0 + a0 ' + z3) ⊦ ∃ z2, a2, a3, z3, z4. a2 ≠ a3 ∧ a ' + z + a0 ' + z0 = z2 + a2 ' + z3 ∧ a ' + z + a1 ' + z1 = z2 + a3 ' + z4
Used simplifier rules: app-01: ⊦ x + y = x + z ↔ y = z; len: ⊦ #(x + y) = # x + # y; a: ⊦ (x + y) + z = x + y + z; c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s)
| # a0 ' + # z0 = # a1 ' + # z1, a0 ' + z0 ≠ a1 ' + z1, a0 ≠ a1, ∀ x. # x = # z + # a1 ' + # z1 ∧ x ≠ z + a1 ' + z1 → (∃ z0, a, a0, z2, z3. a ≠ a0 ∧ x = z0 + a ' + z2 ∧ z + a1 ' + z1 = z0 + a0 ' + z3) ⊦ ∃ z2, a2, a3, z3, z4. a2 ≠ a3 ∧ a ' + z + a0 ' + z0 = z2 + a2 ' + z3 ∧ a ' + z + a1 ' + z1 = z2 + a3 ' + z4 |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; Used terms: a ' + z, a0, a1, z0, z1
| # x0 = # y0, a2 ' + x0 ≠ a ' + y0, a2 ≠ a, ∀ x. # x = # y0 ∧ x ≠ y0 → (∃ z, a, a0, z0, z1. a ≠ a0 ∧ x = z + a ' + z0 ∧ y0 = z + a0 ' + z1) ⊦ ∃ z, a0, a1, z0, z1. a0 ≠ a1 ∧ a2 ' + x0 = z + a0 ' + z0 ∧ a ' + y0 = z + a1 ' + z1 |
Used simplifier rules: Nil: ⊦ [] + x = x; c-06: ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; a: ⊦ (x + y) + z = x + y + z; Used terms: [], a2, a, x0, y0
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.