| ⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m0 < m, mon(σσ), ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ0 to m1) + σ1 = σσ[n])), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])), ∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ) ⊦ m = 0, m = m0, σσ = [] |
σ + σ1 = σσ[n], ⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m0 < m, ⌜n⌝ < # σσ, mon(σσ), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ0 to m1) + σ1 = σσ[n])), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])), ∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ) ⊦ m = 0, m = m0, σσ = []
Used simplifier rules: ⊦ ¬ n < n; (s)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)% ⊦ # σ = ⌜n⌝ → σ to n = σ; (s)