| # lf(n0) = ii(n0), lf(0) = [], ii(0) = 0, # x = ii(n), # nextli0(lf(n0)) + ii(n0) ≤ ii(n), n3 < # nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ x. nextli(x) = x + nextli0(x), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. n1 < ii(n0) → lf(n0)[n1] = x[n1], ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # nextli0(lf(n1)) = nextli0(lf(n1)), ∀ n1. n1 < # nextli0(lf(n0)) → x[ii(n0) + n1] = nextli0(lf(n0))[n1] ⊦ ii(n0) + # nextli0(lf(n0)) = 0, nextli0(lf(n0)) = [], nextli0(lf(n0))[n3] = x[n3 + ii(n0)] |
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic2 Used terms: n3