| ⌜m1⌝ = # σ2, ⌜m⌝ = # σ, ⌜m0⌝ = (⌜m⌝ + # σ1) + ⌜m1⌝ , ⌜n⌝ < # σσ, mon(σσ), m0 < m, ∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ), ∀ m1. ¬ m0 < m1 → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ1. (σσ[n] + σ2 to m1) + σ1 = σσ[n0])), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])) ⊦ σσ = [], m = m0, m = 0 |
Used simplifier rules: natinf freely generated by ∞, ⌜ ⌝;;%eq-natinf-to-nat-3-1: ⊦ ⌜n1⌝ + ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n1 + n + m = n0; from specification nat-inf%add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf%add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic1%eq: ⊦ m = m + n ↔ n = 0; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%l-05: ⊦ m + m0 < n → ¬ n + n0 < m; from specification nat-basic2%add-inf2: ⊦ ⌜m⌝ + ∞ = ∞; from specification nat-inf%disj: ⊦ ⌜m⌝ ≠ ∞; from specification nat-inf-basic