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