| ∞ = # σ, (σ to n + 1) + σ1 = σσ[n0], #((σ to n + 1) + σ1) + # σ2 = ⌜n⌝ , ⌜n0⌝ < # σσ, mon(σσ), ∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σσ[n0] + σ2 to m) + σ1 = σσ[n])) ⊦ σσ = [] |
⊦ #(σ + σ1) = # σ + # σ1
Used simplifier rules: add-fin: ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; from specification nat-inf%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%less-inf1: ⊦ ¬ ∞ < n∞; from specification nat-inf%size-to: ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; from specification stream%add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf%add-cancel-03: ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; from specification nat-inf%sum-zero-fin: ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; from specification nat-inf%add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf Used terms: σ1, σ to n + 1