| # x = ii(n), ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ii(n0) < ii(n), n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x. nextli(x) = x + nextli0(x), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ n1. lf(n1) = x to ii(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)) ⊦ ii(n) = ii(n0) |
# x = ii(n), ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 < n, ii(n0) < ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x. nextli(x) = x + nextli0(x), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ n1. lf(n1) = x to ii(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)) ⊦ ii(n) = ii(n0)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m ≤ n ↔ ¬ n < m; (ss)