| ii(0) = 0, lf(0) = [], # x = ii(n), ∀ m. n ≤ m → nextnli0(lf(m), m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), lf(n + 1) = nextnli(lf(n), n), ∀ n. lf(n + 1) = nextnli(lf(n), n), nextnli(x, n) = x + nextnli0(x, n), ∀ n0. lf(n0) = x to ii(n0), ii(n + 1) = ii(n) + # nextnli0(lf(n), n) ∧ ¬ ii(n) < ii(n + 1) ∧ (x from ii(n)) to # nextnli0(lf(n), n) = nextnli0(lf(n), n) ⊦ nextnli(x, n) = x |
ii(0) = 0, lf(0) = [], # x = ii(n), lf(n + 1) = nextnli(lf(n), n), nextnli(x, n) = x + nextnli0(x, n), ii(n + 1) = ii(n) + # nextnli0(lf(n), n), (x from ii(n)) to # nextnli0(lf(n), n) = nextnli0(lf(n), n), ii(n + 1) ≤ ii(n), ∀ m. n ≤ m → nextnli0(lf(m), m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextnli(lf(n), n), ∀ n0. lf(n0) = x to ii(n0) ⊦ nextnli(x, n) = x
Used simplifier rules: lels: ⊦ ¬ m < n ↔ n ≤ m; from specification nat