| m ≠ 0, (a0 ' + x0)[m] = a0, m ≤ # x0, ∀ m0, b0. x0[m0] ≠ b0 ∧ m0 < # x0 → #oc(x0[m0], x0[m0, b0]) = #oc(x0[m0], x0) - 1 ⊦ a0 = b, #oc(a0, a0 ' + x0[m -1, b]) = #oc(a0, x0) |
(a0 ' + x0)[m] = a0, m ≤ # x0, ∀ m0, b0. x0[m0] ≠ b0 ∧ m0 < # x0 → #oc(x0[m0], x0[m0, b0]) = #oc(x0[m0], x0) - 1 ⊦ m = 0, a0 = b, 1 + #oc(a0, x0[m - 1, b]) = #oc(a0, x0)
Used simplifier rules: ocappend: ⊦ #oc(a, x + y) = #oc(a, x) + #oc(a, y);%one: ⊦ #oc(a, a ') = 1;%a: ⊦ (x + y) + z = x + y + z; from specification list%pred-03: ⊦ n -1 = n - 1; from specification nat