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