| x0 + a ' + y = (z + a ').rest + y0, (z + a ').first ∈ z, ∀ a, y, z, y0. x0 + a ' + y = z + a ' + y0 → a ∈ y ∨ a ∈ x0 ∨ y = y0 ∧ x0 = z ⊦ a = z.first, a ∈ x0, a ∈ y, y = y0 ∧ z.first ' + x0 = z |
z = a0 + y1 ∧ z ≠ [], x0 + a ' + y = (z + a ').rest + y0, (z + a ').first ∈ z, ∀ a, y, z, y0. x0 + a ' + y = z + a ' + y0 → a ∈ y ∨ a ∈ x0 ∨ y = y0 ∧ x0 = z ⊦ a = a0, a ∈ x0, a ∈ y, y = y0 ∧ a0 ' + x0 = z
Used simplifier rules: Nil: ⊦ [] + x = x;%a: ⊦ (x + y) + z = x + y + z;%rest: ⊦ a '.rest = [];%first: ⊦ a '.first = a;%in-empty: ⊦ ¬ a ∈ [];%x ≠ [] ⊦ a = x.first ∧ y = x.rest ↔ x = a + y; (elim) Used terms: z, a1, y1