| # nextl(0, a) = ii(1) + 1, ii(n0 + 1) = ii(n0) + # lf(n0 + 1) - 1, ii(0) = 0, lf(1) = nextl(0, a), lf(0) = a ', lf(n0 + 1) = nextl(n0, lf(n0).last), nextl(0, a) = a ' + y, (σ from ii(n0)) to # lf(n0 + 1) = ⌜lf(n0 + 1)⌝ , σ to ii(1) + 1 = ⌜nextl(0, a)⌝ , ⌜ii(n0 + 1)⌝ < # σ, ⌜ii(1)⌝ < # σ, a ∈ nextl(0, a), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m + 1).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # lf(n + 1) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n + 1) = ⌜lf(n + 1)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ∧ nextl(n, a).head = a, ∀ n. σ[ii(n)] = lf(n).last ⊦ lf(n0) = [], nextl(0, a) = [], σ = [], finp(σ), ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1) |
# nextl(0, a) = ii(1) + 1, ii(0) = 0, ii(n0 + 1) = ii(n0) + # lf(n0 + 1) - 1, lf(n0 + 1) = nextl(n0, lf(n0).last), lf(0) = a ', lf(1) = nextl(0, a), nextl(0, a) = a ' + y, nf to ii(1) + 1 = nextl(0, a), (nf from ii(n0)) to # lf(n0 + 1) = lf(n0 + 1), a ∈ nextl(0, a), ∀ n, a. nextl(n, a) ≠ [] ∧ nextl(n, a).head = a, ∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. nf(ii(n)) = lf(n).last, ∀ n. ii(n + 1) = ii(n) + # lf(n + 1) - 1 ∧ (nf from ii(n)) to # lf(n + 1) = lf(n + 1) ⊦ lf(n0) = [], nextl(0, a) = [], ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s)% ⊦ ¬ finp(⌜nf⌝ ); (s)% ⊦ [] ≠ ⌜nf⌝ ; (s)% ⊦ ⌜nf⌝ from n = ⌜nf from n⌝ ; (s)% ⊦ ⌜x⌝ = ⌜x0⌝ ↔ x = x0; (s)% ⊦ ⌜nf⌝ to n = ⌜nf to n⌝ ; (s)%stream-inf-forward: ⊦ ¬ finp(σ) → (∃ nf. ⌜nf⌝ = σ); (forward) from specification stream-basic% ⊦ ⌜m⌝ < ∞; (s)% ⊦ ¬ finp(σ) → # σ = ∞; (s)