| m1 < # x0, n < # x0, n ≤ m1, ∀ n0, m0. n0 + 1 < # x0 ∧ m0 < # x0 → (x0 -p m0)[n0] = (n0 < m0 ⊃ x0[n0];x0.tail[n0]) ⊦ (a ' + (x0 -p m1))[n] = (a ' + x0)[n], x0 = [] |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
n < # x0, m1 < # x0, n ≤ m1, ∀ n0, m0. n0 + 1 < # x0 ∧ m0 < # x0 → (x0 -p m0)[n0] = (n0 < m0 ⊃ x0[n0];x0.tail[n0]) ⊦ (x0 -p m1)[n - # a '] = (a ' + x0)[n], x0 = [], n < # a '
Used simplifier rules: get-zero-01: ⊦ (a ' + x)[0] = a;% ⊦ # a ' = 0 +1; (s)% ⊦ m < 1 ↔ m = 0; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: n, x0 -p m1, a '