| leninv(nσ) = ∞, ⌜⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ [n]⌝ + ⌜1⌝ < # nσ, stutf(nσ), ⌜n⌝ < leninv(nσ) ⊦ nσ[(leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] + 1] = n + 1 |
# nσ = ∞, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0] ⊦ nσ[(leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n] + 1] = n + 1
Used simplifier rules: leninv-inf-strong: ⊦ stutf(nσ) → ( ¬ leninv(nσ) ≠ ∞ ↔ # nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) ∧ (∀ m. ∃ m0. m < nσ[m0]));%add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf%add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf%disj: ⊦ ⌜m⌝ ≠ ∞; from specification nat-inf-basic%addeqinf-cancel: ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; from specification nat-inf%inf-less: ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; from specification nat-inf%less-inf2: ⊦ ⌜m⌝ < ∞; from specification nat-inf%sel-inf: ⊦ ⌜nnf⌝ [n] = nnf(n); from specification stream[natstream]