| # x = # y, ¬ dups(x), ¬ dups(y), ∀ a. a ∈ x → a ∈ y ⊦ ∀ a. a ∈ y → a ∈ x |
# x = # y, a ∈ y, ¬ dups(x), ¬ dups(y), ¬ a ∈ x, ∀ a. a ∈ x → a ∈ y ⊦
| # x = # y, a ∈ y, ¬ dups(x), ¬ dups(y), ¬ a ∈ x, ∀ a. a ∈ x → a ∈ y ⊦ |
#(a0 + x0) = # y, a ∈ y, ¬ dups(a0 + x0), ¬ dups(y), ¬ a ∈ a0 + x0, ∀ a. a ∈ a0 + x0 → a ∈ y, ∀ y, a. ¬(# x0 = # y ∧ a ∈ y ∧ ¬ dups(x0) ∧ ¬ dups(y) ∧ ¬ a ∈ x0 ∧ (∀ a. a ∈ x0 → a ∈ y)) ⊦
Used simplifier rules: list freely generated by [], +;; ⊦ # [] = 0; (s) ⊦ # x = 0 ↔ x = []; (s)
| #(a0 + x0) = # y, a ∈ y, ¬ dups(a0 + x0), ¬ dups(y), ¬ a ∈ a0 + x0, ∀ a. a ∈ a0 + x0 → a ∈ y, ∀ y, a. ¬(# x0 = # y ∧ a ∈ y ∧ ¬ dups(x0) ∧ ¬ dups(y) ∧ ¬ a ∈ x0 ∧ (∀ a. a ∈ x0 → a ∈ y)) ⊦ |
# x0 + 1 = # y, a ≠ a0, a ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 = a0 ∨ a1 ∈ x0 → a1 ∈ y ⊦
Used simplifier rules: rec: ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ a + x = a ' + x; (s) ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # x0 + 1 = # y, a ≠ a0, a ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 = a0 ∨ a1 ∈ x0 → a1 ∈ y ⊦ |
# x0 + 1 = # y, a ≠ a0, a ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, a0 = a0 ∨ a0 ∈ x0 → a0 ∈ y, ∀ a1. a1 ∈ x0 → a1 ∈ y, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0) ⊦
Used terms: a0
| # x0 + 1 = # y, a ≠ a0, a ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, a0 = a0 ∨ a0 ∈ x0 → a0 ∈ y, ∀ a1. a1 ∈ x0 → a1 ∈ y, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0) ⊦ |
# x0 + 1 = # y, a ≠ a0, a ∈ y, a0 ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 ∈ x0 → a1 ∈ y ⊦
| # x0 + 1 = # y, a ≠ a0, a ∈ y, a0 ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 ∈ x0 → a1 ∈ y ⊦ |
⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z))
# x0 + 1 = # y, a ≠ a0, a ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ a1. a1 ∈ x0 → a1 ∈ y, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∃ y0, z. y = y0 + (a0 + z) ⊦
Used terms: y, a0
| ⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z)) |
| # x0 + 1 = # y, a ≠ a0, a ∈ y, ¬ dups(x0), ¬ dups(y), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ a1. a1 ∈ x0 → a1 ∈ y, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∃ y0, z. y = y0 + (a0 + z) ⊦ |
# x0 = # y0 + # z, a ≠ a0, ¬ dups(x0), ¬ dups(y0 + z), ¬ a0 ∈ x0, ¬ a ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ z, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 ∈ x0 → a1 ∈ y0 ∨ a1 ∈ z, a ∈ y0 ∨ a ∈ z ⊦
Used simplifier rules: f-01: ⊦ dups(x + a ' + y) ↔ a ∈ x ∨ a ∈ y ∨ dups(x + y); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a + x = a ' + x; (s) ⊦ a ≠ b → (a ∈ b ' + x ↔ a ∈ x); (s) 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) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ #(x + y) = # x + # y; (s)
| # x0 = # y0 + # z, a ≠ a0, ¬ dups(x0), ¬ dups(y0 + z), ¬ a0 ∈ x0, ¬ a ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ z, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 ∈ x0 → a1 ∈ y0 ∨ a1 ∈ z, a ∈ y0 ∨ a ∈ z ⊦ |
# x0 = # y0 + # z, a ≠ a0, ¬ dups(x0), ¬ dups(y0 + z), ¬ a0 ∈ x0, ¬ a ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ z, ∀ a1. a1 ∈ x0 → a1 ∈ y0 ∨ a1 ∈ z, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), a ∈ y0 ∨ a ∈ z, # x0 ≠ #(y0 + z) ∨ ¬ a ∈ y0 + z ∨ dups(y0 + z) ∨ a ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0 + z) ⊦
Used terms: y0 + z, a
| # x0 = # y0 + # z, a ≠ a0, ¬ dups(x0), ¬ dups(y0 + z), ¬ a0 ∈ x0, ¬ a ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ z, ∀ a1. a1 ∈ x0 → a1 ∈ y0 ∨ a1 ∈ z, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), a ∈ y0 ∨ a ∈ z, # x0 ≠ #(y0 + z) ∨ ¬ a ∈ y0 + z ∨ dups(y0 + z) ∨ a ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0 + z) ⊦ |
# x0 = # y0 + # z, a ≠ a0, a1 ∈ x0, ¬ dups(x0), ¬ dups(y0 + z), ¬ a0 ∈ x0, ¬ a ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ z, ¬ a1 ∈ y0, ¬ a1 ∈ z, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 ∈ x0 → a1 ∈ y0 ∨ a1 ∈ z, a ∈ y0 ∨ a ∈ z ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ #(x + y) = # x + # y; (s)
| # x0 = # y0 + # z, a ≠ a0, a1 ∈ x0, ¬ dups(x0), ¬ dups(y0 + z), ¬ a0 ∈ x0, ¬ a ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ z, ¬ a1 ∈ y0, ¬ a1 ∈ z, ∀ y0, a1. # x0 ≠ # y0 ∨ ¬ a1 ∈ y0 ∨ dups(y0) ∨ a1 ∈ x0 ∨ ¬(∀ a. a ∈ x0 → a ∈ y0), ∀ a1. a1 ∈ x0 → a1 ∈ y0 ∨ a1 ∈ z, a ∈ y0 ∨ a ∈ z ⊦ |
Used terms: a1
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.