| #((σ0 to n) + σ1) = # σ0, # σ0 = ∞, ∀ n0. ⌜n0⌝ < #((σ0 to n) + σ1) → ((σ0 to n) + σ1)[n0] = σ0[n0] ⊦ # σ1 = ∞ ∧ (⌜n0⌝ < # σ1 → σ1[n0] = (σ0 from n)[n0]) |
# σ1 = ∞, # σ0 = ∞, ∀ n1. ((σ0 to n) + σ1)[n1] = σ0[n1] ⊦ σ1[n0] = (σ0 from n)[n0]
Used simplifier rules: ⊦ ⌜m⌝ < ∞; (s)%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% ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s)%append-assoc: ⊦ (σ0 + σ3) + σ4 = σ0 + σ3 + σ4; from specification stream[buffer-inf]%¬ # σ0 < ⌜n⌝ ⊦ #(σ0 to n) = ⌜n⌝ ; (s)% ⊦ ¬ ∞ < n∞; (s)% ⊦ #(σ0 + σ2) = # σ0 + # σ2; (s)