| ∀ a. a ∈ ax ↔ a ∈ ax0, unique_al(ax), unique_al(ax0) ⊦ # ax = # ax0 |
# ax ≠ # ax0, unique_al(ax0), unique_al(ax), ∀ a. a ∈ ax ↔ a ∈ ax0 ⊦
| # ax ≠ # ax0, unique_al(ax0), unique_al(ax), ∀ a. a ∈ ax ↔ a ∈ ax0 ⊦ |
# [] ≠ # ax0, unique_al([]), unique_al(ax0), ∀ a. a ∈ [] ↔ a ∈ ax0 ⊦
#(p + ax1) ≠ # ax0, unique_al(p + ax1), unique_al(ax0), ∀ a. a ∈ p + ax1 ↔ a ∈ ax0, ∀ ax0. ¬(# ax1 ≠ # ax0 ∧ unique_al(ax0) ∧ unique_al(ax1) ∧ (∀ a. a ∈ ax1 ↔ a ∈ ax0)) ⊦
Used simplifier rules: list('a) freely generated by [], +;;
| # [] ≠ # ax0, unique_al([]), unique_al(ax0), ∀ a. a ∈ [] ↔ a ∈ ax0 ⊦ |
ax0 ≠ [], unique_al(ax0), ∀ a. ¬ a ∈ ax0 ⊦
Used simplifier rules: unique-e: ⊦ unique_al([]); empty: ⊦ ¬ a ∈ []; ⊦ # x = 0 ↔ x = []; (s) ⊦ # [] = 0; (s)
| ax0 ≠ [], unique_al(ax0), ∀ a. ¬ a ∈ ax0 ⊦ |
ax0 ≠ [], unique_al(ax0), ¬ ax0.head._1 ∈ ax0 ⊦
Used terms: ax0.head._1
| ax0 ≠ [], unique_al(ax0), ¬ ax0.head._1 ∈ ax0 ⊦ |
ax0 = p + ax, ax0 ≠ [], unique_al(ax0), ¬ p._1 ∈ ax0 ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: ax0, head, tail
| ax0 = p + ax, ax0 ≠ [], unique_al(ax0), ¬ p._1 ∈ ax0 ⊦ |
unique_al(p ' + ax), ¬ p._1 ∈ p ', ¬ p._1 ∈ ax ⊦
Used simplifier rules: inapp: ⊦ a ∈ ax + ax0 ↔ a ∈ ax ∨ a ∈ ax0; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ a ' + x ≠ []; (s)
| unique_al(p ' + ax), ¬ p._1 ∈ p ', ¬ p._1 ∈ ax ⊦ |
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 list Used terms: b, d
| #(p + ax1) ≠ # ax0, unique_al(p + ax1), unique_al(ax0), ∀ a. a ∈ p + ax1 ↔ a ∈ ax0, ∀ ax0. ¬(# ax1 ≠ # ax0 ∧ unique_al(ax0) ∧ unique_al(ax1) ∧ (∀ a. a ∈ ax1 ↔ a ∈ ax0)) ⊦ |
# ax1 + 1 ≠ # ax0, unique_al(ax0), unique_al(p ' + ax1), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(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 list ⊦ 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), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(ax1) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ∈ p ' ∨ a ∈ ax1 ↔ a ∈ ax0 ⊦ |
p = (a0, d), # ax1 + 1 ≠ # ax0, unique_al(p ' + ax1), unique_al(ax0), ∀ a. a ∈ p ' ∨ a ∈ ax1 ↔ a ∈ ax0, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(ax1) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦
| p = (a0, d), # ax1 + 1 ≠ # ax0, unique_al(p ' + ax1), unique_al(ax0), ∀ a. a ∈ p ' ∨ a ∈ ax1 ↔ a ∈ ax0, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬ unique_al(ax1) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦ |
# ax1 + 1 ≠ # ax0, unique_al(ax0), unique_al(ax1), ¬ a0 ∈ ax1, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ 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 list
| # ax1 + 1 ≠ # ax0, unique_al(ax0), unique_al(ax1), ¬ a0 ∈ ax1, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ ax0 ⊦ |
a0 = a0 ∨ a0 ∈ ax1 ↔ a0 ∈ ax0, # ax1 + 1 ≠ # ax0, unique_al(ax1), unique_al(ax0), ¬ a0 ∈ ax1, ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ ax0, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦
Used terms: a0
| a0 = a0 ∨ a0 ∈ ax1 ↔ a0 ∈ ax0, # ax1 + 1 ≠ # ax0, unique_al(ax1), unique_al(ax0), ¬ a0 ∈ ax1, ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ ax0, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦ |
# ax1 + 1 ≠ # ax0, unique_al(ax0), unique_al(ax1), a0 ∈ ax0, ¬ a0 ∈ ax1, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ ax0 ⊦
| # ax1 + 1 ≠ # ax0, unique_al(ax0), unique_al(ax1), a0 ∈ ax0, ¬ a0 ∈ ax1, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ ax0 ⊦ |
⊦ a ∈ ax ↔ (∃ d, ax0, ax1. ax = ax0 + (a, d) ' + ax1)
# ax1 + 1 ≠ # ax0, unique_al(ax1), unique_al(ax0), a0 ∈ ax0, ¬ a0 ∈ ax1, a0 ∈ ax0 ↔ (∃ d, ax1, ax2. ax0 = ax1 + (a0, d) ' + ax2), ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ ax0, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦
Used terms: a0, ax0
| ⊦ a ∈ ax ↔ (∃ d, ax0, ax1. ax = ax0 + (a, d) ' + ax1) |
| # ax1 + 1 ≠ # ax0, unique_al(ax1), unique_al(ax0), a0 ∈ ax0, ¬ a0 ∈ ax1, a0 ∈ ax0 ↔ (∃ d, ax1, ax2. ax0 = ax1 + (a0, d) ' + ax2), ∀ a. a = a0 ∨ a ∈ ax1 ↔ a ∈ ax0, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦ |
# ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦
Used simplifier rules: 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 list 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, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦ |
# ax1 ≠ # ax + # ax2, unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), # ax1 = #(ax + ax2) ∨ ¬ unique_al(ax + ax2) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax + ax2) ⊦
Used terms: ax + ax2
| # ax1 ≠ # ax + # ax2, unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), # ax1 = #(ax + ax2) ∨ ¬ unique_al(ax + ax2) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax + ax2) ⊦ |
# ax1 ≠ # ax + # ax2, ¬(a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ 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 list ⊦ #(x + y) = # x + # y; (s)
| # ax1 ≠ # ax + # ax2, ¬(a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦ |
# ax1 ≠ # ax + # ax2, ¬(a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦
# ax1 ≠ # ax + # ax2, ¬(a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦
Used formulas: a ∈ ax1
| # ax1 ≠ # ax + # ax2, ¬(a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦ |
# ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ¬ a ∈ ax, ¬ a ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦
| # ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ¬ a ∈ ax, ¬ a ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦ |
Used terms: a
| # ax1 ≠ # ax + # ax2, ¬(a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax) ⊦ |
# ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), a ∈ ax ∨ a ∈ ax2 ⊦
| # ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), a ∈ ax ∨ a ∈ ax2 ⊦ |
# ax1 ≠ # ax + # ax2, unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), a ∈ ax ∨ a ∈ ax2 ⊦
# ax1 ≠ # ax + # ax2, unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), ¬ a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), a ∈ ax ∨ a ∈ ax2 ⊦
Used formulas: a ∈ ax2
| # ax1 ≠ # ax + # ax2, unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), a ∈ ax ∨ a ∈ ax2 ⊦ |
# ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦
| # ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦ |
Used terms: a
| # ax1 ≠ # ax + # ax2, unique_al(ax + (a0, d) ' + ax2), unique_al(ax1), ¬ a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2), ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), a ∈ ax ∨ a ∈ ax2 ⊦ |
# ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), a ∈ ax, ¬ a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦
| # ax1 ≠ # ax + # ax2, unique_al(ax1), unique_al(ax + (a0, d) ' + ax2), a ∈ ax, ¬ a ∈ ax2, ¬ a ∈ ax1, ¬ a0 ∈ ax1, ¬ a0 ∈ ax, ¬ a0 ∈ ax2, ∀ ax. # ax1 = # ax ∨ ¬ unique_al(ax) ∨ ¬(∀ a. a ∈ ax1 ↔ a ∈ ax), ∀ a. a ≠ a0 → (a ∈ ax1 ↔ a ∈ ax ∨ a ∈ ax2) ⊦ |
Used terms: a
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.