| m ≤ # x0, ∀ m. m < # x0 → x0 to m + 1 = (x0 to m) + x0[m] ' ∨ x0 = [] ⊦ a ' + (x0 to m) = (a ' + x0 to m) + (a ' + x0)[m] ' |
m0 +1 ≤ # x0, ∀ m. m < # x0 → x0 to m + 1 = (x0 to m) + x0[m] ' ∨ x0 = [], ∀ x0, a. m0 ≤ # x0 ∧ (∀ m. m < # x0 → x0 to m + 1 = (x0 to m) + x0[m] ' ∨ x0 = []) → a ' + (x0 to m0) = (a ' + x0 to m0) + (a ' + x0)[m0] ' ⊦ a ' + (x0 to m0 +1) = (a ' + x0 to m0 +1) + (a ' + x0)[m0 +1] '
Used simplifier rules: to-zero-l: ⊦ x to 0 = [];%nat freely generated by 0, +1;;% ⊦ x + [] = x; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ (a ' + x)[0] = a; (s)% ⊦ [] + x = x; (s)% ⊦ a ' = b ' ↔ a = b; (s)