| ⌜n⌝ < # σσ, mon(σσ), m ≤ n ⊦ ∃ σ1. σσ[m] + σ1 = σσ[n] |
m1 +1 = n - m, ⌜n⌝ < # σσ, mon(σσ), m ≤ n, ∀ n, m, σσ. m1 = n - m ∧ ⌜n⌝ < # σσ ∧ mon(σσ) ∧ m ≤ n → (∃ σ1. σσ[m] + σ1 = σσ[n]) ⊦ ∃ σ1. σσ[m] + σ1 = σσ[n]
Used simplifier rules: nat freely generated by 0, +1;;% ⊦ m ≤ n → (n - m = 0 ↔ n = m); (s)% ⊦ m ≤ m; (s)% ⊦ σ0 + σ = σ0 ↔ σ = [] ∨ ¬ finp(σ0); (s)%append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream