| m1 < # x0, m1 < n, n < # x0, m1 + 1 < # x0, ∀ m0, n0. m0 < # x0 ∧ n0 + 1 < # x0 → (x0 -1l m0)[n0] = (n0 < m0 ⊃ x0[n0];x0.rest[n0]) ⊦ n = 0, (a ' + (x0 -1l m1))[n] = x0[n], x0 = [] |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
¬ n < # a ', m1 < # x0, m1 < n, n < # x0, m1 + 1 < # x0, ∀ m0, n0. m0 < # x0 ∧ n0 + 1 < # x0 → (x0 -1l m0)[n0] = (n0 < m0 ⊃ x0[n0];x0.rest[n0]) ⊦ n = 0, (x0 -1l m1)[n - # a '] = x0[n], x0 = []
Used simplifier rules: len-02: ⊦ # a ' = 0 +1; from specification list%one-01: ⊦ m < 1 ↔ m = 0; from specification nat-basic1 Used terms: n, x0 -1l m1, a '