| ∀ a. a ∈ x ↔ a ∈ y ⊦ # x.distinct = # y.distinct |
# x.distinct ≠ # y.distinct, ∀ a. a ∈ x ↔ a ∈ y ⊦
| # x.distinct ≠ # y.distinct, ∀ a. a ∈ x ↔ a ∈ y ⊦ |
# [].distinct ≠ # y.distinct, ∀ a. a ∈ [] ↔ a ∈ y ⊦
# (a + x0).distinct ≠ # y.distinct, ∀ a0. a0 ∈ a + x0 ↔ a0 ∈ y, ∀ y. ¬(# x0.distinct ≠ # y.distinct ∧ (∀ a. a ∈ x0 ↔ a ∈ y)) ⊦
Used simplifier rules: List[A] freely generated by [], +;
| # [].distinct ≠ # y.distinct, ∀ a. a ∈ [] ↔ a ∈ y ⊦ |
y ≠ [], ∀ a. ¬ a ∈ y ⊦
Used simplifier rules: rmdup-e: ⊦ [].distinct = []; rm-empty: ⊦ x.distinct = [] ↔ x = []; ⊦ ¬ a ∈ []; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ # [] = 0; (s)
| y ≠ [], ∀ a. ¬ a ∈ y ⊦ |
Used simplifier rules: ⊦ x.head ∈ x ↔ x ≠ []; (s) Used terms: y.head
| # (a + x0).distinct ≠ # y.distinct, ∀ a0. a0 ∈ a + x0 ↔ a0 ∈ y, ∀ y. ¬(# x0.distinct ≠ # y.distinct ∧ (∀ a. a ∈ x0 ↔ a ∈ y)) ⊦ |
# (a ' + x0).distinct ≠ # y.distinct, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| # (a ' + x0).distinct ≠ # y.distinct, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦ |
# (a ' + x0).distinct ≠ # y.distinct, a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
# (a ' + x0).distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
Used formulas: a ∈ x0
| # (a ' + x0).distinct ≠ # y.distinct, a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
# x0.distinct ≠ # y.distinct, a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦
Used simplifier rules: rmdup-y: ⊦ a ∈ x → (a ' + x).distinct = x.distinct; a: ⊦ (x + y) + z = x + y + z; from specification list
| # x0.distinct ≠ # y.distinct, a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦ |
# x0.distinct ≠ # y.distinct, a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), # x0.distinct = # y.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y) ⊦
Used terms: y
| # x0.distinct ≠ # y.distinct, a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), # x0.distinct = # y.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y) ⊦ |
# x0.distinct ≠ # y.distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y), a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a1. a1 ∈ x0 ↔ a1 ∈ y ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s)
| # x0.distinct ≠ # y.distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y), a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a1. a1 ∈ x0 ↔ a1 ∈ y ⊦ |
Used terms: a0
| # (a ' + x0).distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦
Used simplifier rules: rmdup-n: ⊦ ¬ a ∈ x → (a ' + x).distinct = a + x.distinct; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # a ' = 0.+1; (s) ⊦ #(x + y) = # x + # y; (s) ⊦ a + x = a ' + x; (s)
| 1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦ |
a ∈ a ' + x0 ↔ a ∈ y, 1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
Used terms: a
| a ∈ a ' + x0 ↔ a ∈ y, 1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
a ∈ a ' + x0 ↔ a ∈ y, 1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦
| a ∈ a ' + x0 ↔ a ∈ y, 1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y ⊦ |
⊦ a ∈ x → (∃ y, z. x = y + a ' + z ∧ ¬ a ∈ y)
a ∈ a ' + x0 ↔ a ∈ y, 1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, a ∈ y → (∃ y0, z. y = y0 + a ' + z ∧ ¬ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
Used terms: a, y
| ⊦ a ∈ x → (∃ y, z. x = y + a ' + z ∧ ¬ a ∈ y) |
| a ∈ a ' + x0 ↔ a ∈ y, 1 + # x0.distinct ≠ # y.distinct, ¬ a ∈ x0, a ∈ y → (∃ y0, z. y = y0 + a ' + z ∧ ¬ a ∈ y0), ∀ a0. a0 ∈ a ' + x0 ↔ a0 ∈ y, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
1 + # x0.distinct ≠ # (y0 + a ' + z).distinct, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) in-13: ⊦ x = y + a ' + z → a ∈ x; (forward) from specification list ⊦ x = y + a ' + z → a ∈ x; (s)
| 1 + # x0.distinct ≠ # (y0 + a ' + z).distinct, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
⊦ ¬ a ∈ x ∧ ¬ a ∈ y → # (x + a ' + y).distinct = # (x + y).distinct + 1
1 + # x0.distinct ≠ # (y0 + a ' + z).distinct, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ ¬ a ∈ y0 ∧ ¬ a ∈ z
1 + # x0.distinct ≠ # (y0 + z).distinct + 1, ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
Used terms: z, a, y0
| ⊦ ¬ a ∈ x ∧ ¬ a ∈ y → # (x + a ' + y).distinct = # (x + y).distinct + 1 |
| 1 + # x0.distinct ≠ # (y0 + a ' + z).distinct, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ ¬ a ∈ y0 ∧ ¬ a ∈ z |
1 + # x0.distinct ≠ # (y0 + z).distinct, a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used simplifier rules: rm-size-02: ⊦ a ∈ y → # (x + a ' + y).distinct = # (x + y).distinct; a: ⊦ (x + y) + z = x + y + z; from specification list
| 1 + # x0.distinct ≠ # (y0 + z).distinct, a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z))
1 + # x0.distinct ≠ # (y0 + z).distinct, a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, a ∈ z.distinct ↔ (∃ y, z0. z.distinct = y + (a + z0)), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
Used terms: a, z.distinct
| ⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z)) |
| 1 + # x0.distinct ≠ # (y0 + z).distinct, a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, a ∈ z.distinct ↔ (∃ y, z0. z.distinct = y + (a + z0)), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # (y0 + z).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used simplifier rules: rm-in-03: ⊦ ¬ a ∈ x.distinct → ¬ a ∈ x; rm-notin-01: ⊦ x.distinct = y + a ' + z → a ∈ x ∧ ¬ a ∈ y ∧ ¬ a ∈ z; ⊦ x = y + a ' + z → a ∈ x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-13: ⊦ x = y + a ' + z → a ∈ x; (forward) from specification list ⊦ ¬ a ∈ x → x ≠ y + a ' + z; (s) ⊦ a + x = a ' + x; (s)
| z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # (y0 + z).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
⊦ (x + y.distinct).distinct = (x + y).distinct
z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # (y0 + z.distinct).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
Used terms: z, y0
| ⊦ (x + y.distinct).distinct = (x + y).distinct |
| z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # (y0 + z.distinct).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # (y0 + y + a ' + z0).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
| z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # (y0 + y + a ' + z0).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
⊦ ¬ a ∈ x ∧ ¬ a ∈ y → # (x + a ' + y).distinct = # (x + y).distinct + 1
z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # ((y0 + y) + z0).distinct + 1, a ∈ z, ¬ a ∈ y0 + y, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦
Used simplifier rules: ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: z0, a, y0 + y
| ⊦ ¬ a ∈ x ∧ ¬ a ∈ y → # (x + a ' + y).distinct = # (x + y).distinct + 1 |
| z.distinct = y + a ' + z0, 1 + # x0.distinct ≠ # ((y0 + y) + z0).distinct + 1, a ∈ z, ¬ a ∈ y0 + y, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (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)
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), # x0.distinct = # ((y0 + y) + z0).distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ (y0 + y) + z0) ⊦
Used terms: (y0 + y) + z0
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), # x0.distinct = # ((y0 + y) + z0).distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ (y0 + y) + z0) ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0), a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s)
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0), a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0), a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used terms: a0
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0), a ∈ z, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, a0 ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0 ⊦
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, a0 ∈ x0, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a0 ∈ x0, a ∈ z, a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0 ⊦
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a0 ∈ x0, a ∈ z, a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0 ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a0 ∈ z, a ∈ z, a0 ∈ x0, a0 ∈ z.distinct, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0 ⊦
Used simplifier rules: rm-in-03: ⊦ ¬ a ∈ x.distinct → ¬ a ∈ x; Used formulas: a0 ∈ z.distinct
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a0 ∈ z, a ∈ z, a0 ∈ x0, a0 ∈ z.distinct, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0 ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a0 ∈ y + a ' + z0, a0 ∈ x0, a ∈ z, a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0 ⊦
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a0 ∈ y + a ' + z0, a0 ∈ x0, a ∈ z, a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ y, ¬ a0 ∈ z0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0 ⊦ |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ¬ a ∈ x → (a ∈ a0 ' + x ↔ a = a0); (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s)
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0 ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → ¬ a0 ∈ y0 ∧ ¬ a0 ∈ z, a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0 ⊦
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ≠ a → ¬ a0 ∈ y0 ∧ ¬ a0 ∈ z, a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0 ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0 ⊦
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ∈ y0 ∨ a0 ∈ y ∨ a0 ∈ z0 ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ∈ y ∨ a0 ∈ z0 ⊦
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ∈ y ∨ a0 ∈ z0 ⊦ |
z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ z.distinct, ¬ a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ∈ y ∨ a0 ∈ z0 ⊦
Used simplifier rules: rm-in-01: ⊦ a ∈ x.distinct → a ∈ x; Used formulas: a0 ∈ z.distinct
| z.distinct = y + a ' + z0, # x0.distinct ≠ # ((y0 + y) + z0).distinct, a ∈ z, ¬ a0 ∈ z.distinct, ¬ a0 ∈ z, ¬ a0 ∈ y0, ¬ a0 ∈ x0, ¬ a ∈ z0, ¬ a ∈ y, ¬ a ∈ y0, ¬ a ∈ x0, a0 ∈ y ∨ a0 ∈ z0 ⊦ |
Used simplifier rules: ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| 1 + # x0.distinct ≠ # (y0 + z).distinct + 1, ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0) ⊦ |
# x0.distinct ≠ # (y0 + z).distinct, ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used simplifier rules: 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)
| # x0.distinct ≠ # (y0 + z).distinct, ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ y0. # x0.distinct = # y0.distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0), ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
# x0.distinct ≠ # (y0 + z).distinct, ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), # x0.distinct = # (y0 + z).distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0 + z) ⊦
Used terms: y0 + z
| # x0.distinct ≠ # (y0 + z).distinct, ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), # x0.distinct = # (y0 + z).distinct ∨ ¬(∀ a. a ∈ x0 ↔ a ∈ y0 + z) ⊦ |
# x0.distinct ≠ # (y0 + z).distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s)
| # x0.distinct ≠ # (y0 + z).distinct, ¬(a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z), ¬ a ∈ z, ¬ a ∈ y0, ¬ a ∈ x0, ∀ a0. a0 ≠ a → (a0 ∈ x0 ↔ a0 ∈ y0 ∨ a0 ∈ z) ⊦ |
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.