| mon<(nσ) → (nσ = [] ⊃ min(nσ, n) = 0 ;(# nσ ≠ ∞ ∧ nσ[(# nσ).n - 1] < n ⊃ min(nσ, n) = (# nσ).n ;⌜min(nσ, n)⌝ < # nσ ∧ n ≤ nσ[min(nσ, n)] ∧ (∀ m. ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → min(nσ, n) ≤ m) ) ), mon<(nσ), ⌜min(nσ, n)⌝ < # nσ, nσ[min(nσ, n)] < n ⊦ n = 0 |
min(nσ, n) = (# nσ).n, nσ[min(nσ, n)] < n, ⌜min(nσ, n)⌝ < # nσ, mon<(nσ), nσ[min(nσ, n) - 1] < n ⊦ n = 0, # nσ = ∞, nσ = []
Used simplifier rules: min-empty: ⊦ min([], n) = 0;%zerols-neqzero: ⊦ ⌜0⌝ < n∞ ↔ n∞ ≠ ⌜0⌝ ; from specification nat-inf%size-empty: ⊦ # [] = ⌜0⌝ ; from specification stream[natstream]%ls-le-simp: ⊦ m < n → (n ≤ m ↔ false); from specification nat