| unique_al(ax), unique_al(ax0), # ax = # ax0, ∀ a. a ∈ ax → a ∈ ax0, b ∈ ax0 ⊦ b ∈ ax |
# ax = # ax0, unique_al(ax0), unique_al(ax), b ∈ ax0, ¬ b ∈ ax, ∀ a. a ∈ ax → a ∈ ax0 ⊦
| # ax = # ax0, unique_al(ax0), unique_al(ax), b ∈ ax0, ¬ b ∈ ax, ∀ a. a ∈ ax → a ∈ ax0 ⊦ |
#(p + ax1) = # ax0, unique_al(p + ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ p + ax1, ∀ a. a ∈ p + ax1 → a ∈ ax0, ∀ ax0, b. ¬(# ax1 = # ax0 ∧ unique_al(ax0) ∧ unique_al(ax1) ∧ b ∈ ax0 ∧ ¬ b ∈ ax1 ∧ (∀ a. a ∈ ax1 → a ∈ ax0)) ⊦
Used simplifier rules: list('a) freely generated by [], +;; ⊦ # [] = 0; (s) ⊦ # x = 0 ↔ x = []; (s)
| #(p + ax1) = # ax0, unique_al(p + ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ p + ax1, ∀ a. a ∈ p + ax1 → a ∈ ax0, ∀ ax0, b. ¬(# ax1 = # ax0 ∧ unique_al(ax0) ∧ unique_al(ax1) ∧ b ∈ ax0 ∧ ¬ b ∈ ax1 ∧ (∀ a. a ∈ ax1 → a ∈ ax0)) ⊦ |
# ax1 + 1 = # ax0, unique_al(ax0), unique_al(p ' + ax1), b ∈ ax0, ¬ b ∈ p ', ¬ b ∈ ax1, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(ax1) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a. a ∈ p ' ∨ a ∈ ax1 → a ∈ ax0 ⊦
Used simplifier rules: inapp: ⊦ a ∈ ax + ax0 ↔ a ∈ ax ∨ a ∈ ax0; a: ⊦ (x + y) + z = x + y + z; from specification polylist ⊦ a + x = a ' + x; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # ax1 + 1 = # ax0, unique_al(ax0), unique_al(p ' + ax1), b ∈ ax0, ¬ b ∈ p ', ¬ b ∈ ax1, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(ax1) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a. a ∈ p ' ∨ a ∈ ax1 → a ∈ ax0 ⊦ |
# ax1 + 1 = # ax0, unique_al((a, d) ' + ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ (a, d) ', ¬ b ∈ ax1, ∀ a0. a0 ∈ (a, d) ' ∨ a0 ∈ ax1 → a0 ∈ ax0, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(ax1) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax) ⊦
| # ax1 + 1 = # ax0, unique_al((a, d) ' + ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ (a, d) ', ¬ b ∈ ax1, ∀ a0. a0 ∈ (a, d) ' ∨ a0 ∈ ax1 → a0 ∈ ax0, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(ax1) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax) ⊦ |
# ax1 + 1 = # ax0, b ≠ a, unique_al(ax0), unique_al(ax1), b ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a0. a0 = a ∨ a0 ∈ ax1 → a0 ∈ ax0 ⊦
Used simplifier rules: unique-r: ⊦ unique_al((a, d) ' + ax) ↔ ¬ a ∈ ax ∧ unique_al(ax); inone: ⊦ a ∈ (b, d0) ' ↔ a = b; a: ⊦ (x + y) + z = x + y + z; from specification polylist
| # ax1 + 1 = # ax0, b ≠ a, unique_al(ax0), unique_al(ax1), b ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a0. a0 = a ∨ a0 ∈ ax1 → a0 ∈ ax0 ⊦ |
# ax1 + 1 = # ax0, b ≠ a, unique_al(ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, a = a ∨ a ∈ ax1 → a ∈ ax0, ∀ a0. a0 ∈ ax1 → a0 ∈ ax0, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax) ⊦
Used terms: a
| # ax1 + 1 = # ax0, b ≠ a, unique_al(ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, a = a ∨ a ∈ ax1 → a ∈ ax0, ∀ a0. a0 ∈ ax1 → a0 ∈ ax0, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax) ⊦ |
# ax1 + 1 = # ax0, b ≠ a, unique_al(ax0), unique_al(ax1), b ∈ ax0, a ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a0. a0 ∈ ax1 → a0 ∈ ax0 ⊦
| # ax1 + 1 = # ax0, b ≠ a, unique_al(ax0), unique_al(ax1), b ∈ ax0, a ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a0. a0 ∈ ax1 → a0 ∈ ax0 ⊦ |
⊦ a ∈ ax ↔ (∃ d, ax0, ax1. ax = ax0 + (a, d) ' + ax1)
# ax1 + 1 = # ax0, b ≠ a, unique_al(ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, ∀ a0. a0 ∈ ax1 → a0 ∈ ax0, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∃ d, ax1, ax2. ax0 = ax1 + (a, d) ' + ax2 ⊦
Used terms: ax0, a
| ⊦ a ∈ ax ↔ (∃ d, ax0, ax1. ax = ax0 + (a, d) ' + ax1) |
| # ax1 + 1 = # ax0, b ≠ a, unique_al(ax1), unique_al(ax0), b ∈ ax0, ¬ b ∈ ax1, ¬ a ∈ ax1, ∀ a0. a0 ∈ ax1 → a0 ∈ ax0, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∃ d, ax1, ax2. ax0 = ax1 + (a, d) ' + ax2 ⊦ |
# ax1 = # ax + # ax2, b ≠ a, unique_al(ax + (a, d) ' + ax2), unique_al(ax1), ¬ b ∈ ax1, ¬ a ∈ ax1, ¬ a ∈ ax, ¬ a ∈ ax2, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a0. a0 ∈ ax1 → a0 ∈ ax ∨ a0 ∈ ax2, b ∈ ax ∨ b ∈ ax2 ⊦
Used simplifier rules: inkeys-n: ⊦ a ≠ b → (a ∈ (b, d0) ' + ax ↔ a ∈ ax); inapp: ⊦ a ∈ ax + ax0 ↔ a ∈ ax ∨ a ∈ ax0; inone: ⊦ a ∈ (b, d0) ' ↔ a = b; nuni: ⊦ unique_al(ax0 + (a, d) ' + ax1) → ¬ a ∈ ax0; nuni-01: ⊦ unique_al(ax0 + (a, d) ' + ax1) → ¬ a ∈ ax1; a: ⊦ (x + y) + z = x + y + z; from specification polylist 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)
| # ax1 = # ax + # ax2, b ≠ a, unique_al(ax + (a, d) ' + ax2), unique_al(ax1), ¬ b ∈ ax1, ¬ a ∈ ax1, ¬ a ∈ ax, ¬ a ∈ ax2, ∀ ax, b0. # ax1 ≠ # ax ∨ ¬ unique_al(ax) ∨ ¬ b0 ∈ ax ∨ b0 ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax), ∀ a0. a0 ∈ ax1 → a0 ∈ ax ∨ a0 ∈ ax2, b ∈ ax ∨ b ∈ ax2 ⊦ |
# ax1 = # ax + # ax2, b ≠ a, unique_al(ax1), unique_al(ax + (a, d) ' + ax2), ¬ b ∈ ax1, ¬ a ∈ ax1, ¬ a ∈ ax, ¬ a ∈ ax2, ∀ a0. a0 ∈ ax1 → a0 ∈ ax ∨ a0 ∈ ax2, b ∈ ax ∨ b ∈ ax2, # ax1 ≠ #(ax + ax2) ∨ ¬ unique_al(ax + ax2) ∨ ¬ b ∈ ax + ax2 ∨ b ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax + ax2) ⊦
Used terms: ax + ax2, b
| # ax1 = # ax + # ax2, b ≠ a, unique_al(ax1), unique_al(ax + (a, d) ' + ax2), ¬ b ∈ ax1, ¬ a ∈ ax1, ¬ a ∈ ax, ¬ a ∈ ax2, ∀ a0. a0 ∈ ax1 → a0 ∈ ax ∨ a0 ∈ ax2, b ∈ ax ∨ b ∈ ax2, # ax1 ≠ #(ax + ax2) ∨ ¬ unique_al(ax + ax2) ∨ ¬ b ∈ ax + ax2 ∨ b ∈ ax1 ∨ ¬(∀ a. a ∈ ax1 → a ∈ ax + ax2) ⊦ |
# ax1 = # ax + # ax2, b ≠ a, unique_al(ax + (a, d) ' + ax2), unique_al(ax1), a0 ∈ ax1, ¬ b ∈ ax1, ¬ a ∈ ax1, ¬ a ∈ ax, ¬ a ∈ ax2, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a0. a0 ∈ ax1 → a0 ∈ ax ∨ a0 ∈ ax2, b ∈ ax ∨ b ∈ ax2 ⊦
Used simplifier rules: app: ⊦ unique_al(ax + p ' + ax0) → unique_al(ax + ax0); inapp: ⊦ a ∈ ax + ax0 ↔ a ∈ ax ∨ a ∈ ax0; a: ⊦ (x + y) + z = x + y + z; from specification polylist ⊦ #(x + y) = # x + # y; (s)
| # ax1 = # ax + # ax2, b ≠ a, unique_al(ax + (a, d) ' + ax2), unique_al(ax1), a0 ∈ ax1, ¬ b ∈ ax1, ¬ a ∈ ax1, ¬ a ∈ ax, ¬ a ∈ ax2, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a0. a0 ∈ ax1 → a0 ∈ ax ∨ a0 ∈ ax2, b ∈ ax ∨ b ∈ ax2 ⊦ |
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.