| ⊦ mklist(a, n + 1) = a ' + mklist(a, n) |
# x = # y, x ≠ y ⊦ ∃ z, a, b, z0, z1. a ≠ b ∧ x = z + a ' + z0 ∧ y = z + b ' + z1
∃ z, a0, b, z0, z1. a0 ≠ b ∧ mklist(a, n + 1) = z + a0 ' + z0 ∧ a ' + mklist(a, n) = z + b ' + z1 ⊦ mklist(a, n + 1) = a ' + mklist(a, n)
Used simplifier rules: mk-len: ⊦ # mklist(a, n) = n;%len-05: ⊦ #(a ' + x) = (# x)+1; from specification list%succ: ⊦ m +1 = m + 1; from specification nat-basic2%a: ⊦ (x + y) + z = x + y + z; from specification list%eq-01: ⊦ m + n = m + n0 ↔ n = n0; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2 Used terms: mklist(a, n + 1), a ' + mklist(a, n)