| 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] ' |
∀ 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] ', m0 +1 ≤ # x0, ∀ m. m < # x0 → x0 to m + 1 = (x0 to m) + x0[m] ' ∨ x0 = [] ⊦ 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;;%app: ⊦ x + [] = x; from specification list%a: ⊦ (x + y) + z = x + y + z; from specification list%get-zero-01: ⊦ (a ' + x)[0] = a; from specification list-del%Nil: ⊦ [] + x = x; from specification list%c-04: ⊦ a ' = b ' ↔ a = b; from specification list