| #((σ to n + 1) + σ1) + # σ2 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ[n0], ∞ = # σ, ⌜n0⌝ < # σσ, mon(σσ), ∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σσ[n0] + σ2 to m) + σ1 = σσ[n])) ⊦ σσ = [] |
⊦ #(σ + σ1) = # σ + # σ1
Used simplifier rules: ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ ¬ ∞ < n∞; (s)%¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s)%add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf% ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s)% ⊦ n∞ + n∞1 = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n∞1 = ⌜0⌝ ; (ws)% ⊦ ⌜m⌝ = ⌜m0⌝ ↔ m = m0; (s)%add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf Used terms: σ1, σ to n + 1