| mon(σσ), σσ ≠ [], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ σ = σ0 |
σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
| σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n)
σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, # σ ≠ # σ0 ∨ (∃ n. ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n)) ⊦
Used terms: σ, σ0
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n) |
| σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, # σ ≠ # σ0 ∨ (∃ n. ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n)) ⊦ |
σσ ≠ [], mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦
| σσ ≠ [], mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦ |
# σ = # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦
# σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦
Used formulas: # σ = # σ0
| # σ = # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σ0 to n⌝ ⊑ σσ[n0]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used terms: n
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σ0 to n⌝ ⊑ σσ[n0]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]) ⊦
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]) ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σ to n⌝ ⊑ σσ[n0]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used terms: n
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σ to n⌝ ⊑ σσ[n0]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n]
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ¬ n0 ≤ n1, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used terms: σσ, n0, n1
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n] |
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ¬ n0 ≤ n1, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n]
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], σσ[n1] ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) Used terms: σσ, n1, n0
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n] |
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], σσ[n1] ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), σσ[n1] ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), σσ[n1] ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n0], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ1. σσ[n1] + σ1 = σσ[n0] ⊦
Used terms: σσ[n1], σσ[n0]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n0], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ1. σσ[n1] + σ1 = σσ[n0] ⊦ |
# σ = # σ0, σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| # σ = # σ0, σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n0], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ1. ⌜σ to n⌝ + σ1 = σσ[n1] ⊦
Used terms: ⌜σ to n⌝ , σσ[n1]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n0], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ1. ⌜σ to n⌝ + σ1 = σσ[n1] ⊦ |
# σ = # σ0, ⌜σ to n⌝ + σ2 = σσ[n1], σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| # σ = # σ0, ⌜σ to n⌝ + σ2 = σσ[n1], σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, σσ[n1] + σ1 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ1. ⌜σ to n⌝ + σ1 = σσ[n0] ⊦
Used terms: ⌜σ to n⌝ , σσ[n0]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, σσ[n1] + σ1 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ1. ⌜σ to n⌝ + σ1 = σσ[n0] ⊦ |
# σ = # σ0, ⌜σ to n⌝ + σ3 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| # σ = # σ0, ⌜σ to n⌝ + σ3 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], σσ[n1] + σ1 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, (⌜σ to n⌝ + σ2) + σ1 = σσ[n0], ⌜σ to n⌝ + σ3 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| # σ = # σ0, (⌜σ to n⌝ + σ2) + σ1 = σσ[n0], ⌜σ to n⌝ + σ3 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, (⌜σ to n⌝ + σ2) + σ1 = ⌜σ to n⌝ + σ3, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ ⌜σ to n⌝ + σ3, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| # σ = # σ0, (⌜σ to n⌝ + σ2) + σ1 = ⌜σ to n⌝ + σ3, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ ⌜σ to n⌝ + σ3, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ ⌜σ to n⌝ + σ2 + σ1, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜x⌝ + σ0 = ⌜x⌝ + σ1 ↔ σ0 = σ1; (s)
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ ⌜σ to n⌝ + σ2 + σ1, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ3. ⌜σ0 to n⌝ + σ3 = ⌜σ to n⌝ + σ2 + σ1 ⊦
Used terms: ⌜σ0 to n⌝ , ⌜σ to n⌝ + σ2 + σ1
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∃ σ3. ⌜σ0 to n⌝ + σ3 = ⌜σ to n⌝ + σ2 + σ1 ⊦ |
# σ = # σ0, ⌜σ0 to n⌝ + σ3 = ⌜σ to n⌝ + σ2 + σ1, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| # σ = # σ0, ⌜σ0 to n⌝ + σ3 = ⌜σ to n⌝ + σ2 + σ1, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n)
#(⌜σ0 to n⌝ + σ3) = #(⌜σ to n⌝ + σ2 + σ1), # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n0. ¬ #(⌜σ0 to n⌝ + σ3) < ⌜n0⌝ → ⌜σ0 to n⌝ + σ3 to n0 = ⌜σ to n⌝ + σ2 + σ1 to n0 ⊦
Used terms: ⌜σ0 to n⌝ + σ3, ⌜σ to n⌝ + σ2 + σ1
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n) |
| #(⌜σ0 to n⌝ + σ3) = #(⌜σ to n⌝ + σ2 + σ1), # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n0. ¬ #(⌜σ0 to n⌝ + σ3) < ⌜n0⌝ → ⌜σ0 to n⌝ + σ3 to n0 = ⌜σ to n⌝ + σ2 + σ1 to n0 ⊦ |
# σ = # σ0, # σ3 = # σ2 + # σ1, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n2. ¬ ⌜n⌝ + # σ3 < ⌜n2⌝ → ⌜σ0 to n⌝ + σ3 to n2 = ⌜σ to n⌝ + σ2 + σ1 to n2 ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (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 ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s)
| # σ = # σ0, # σ3 = # σ2 + # σ1, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n2. ¬ ⌜n⌝ + # σ3 < ⌜n2⌝ → ⌜σ0 to n⌝ + σ3 to n2 = ⌜σ to n⌝ + σ2 + σ1 to n2 ⊦ |
# σ3 = # σ2 + # σ1, # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # σ0 < ⌜n⌝ , ¬ ⌜n⌝ + # σ3 < ⌜n⌝ → ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 + σ1 to n, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
Used terms: n
| # σ3 = # σ2 + # σ1, # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # σ0 < ⌜n⌝ , ¬ ⌜n⌝ + # σ3 < ⌜n⌝ → ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 + σ1 to n, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, # σ3 = # σ2 + # σ1, ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 + σ1 to n, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: 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 ⊦ ¬ n∞ + n∞1 < n∞1; (s)
| # σ = # σ0, # σ3 = # σ2 + # σ1, ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 + σ1 to n, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
# σ3 = # σ2 + # σ1, # σ = # σ0, ⌜σ0 to n⌝ to n = ⌜σ to n⌝ + σ2 + σ1 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # ⌜σ0 to n⌝ < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
Used simplifier rules: ⊦ # σ < ⌜n⌝ → σ + σ0 to n = σ.l + (σ0 to (n - # σ.l)); (s) ⊦ ⌜x⌝ .l = x; (s) ⊦ m - m = 0; (s) ⊦ σ to 0 = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < n; (s) Used terms: ⌜σ0 to n⌝ , σ3, n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ3 = # σ2 + # σ1, # σ = # σ0, ⌜σ0 to n⌝ to n = ⌜σ to n⌝ + σ2 + σ1 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, mon(σσ), ¬ # ⌜σ0 to n⌝ < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, # σ3 = # σ2 + # σ1, σ0 to n = ⌜σ to n⌝ + σ2 + σ1 to n, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ (σ to n) to n = σ to n; (s) ⊦ ⌜x⌝ to n = x to n; (s)
| # σ = # σ0, # σ3 = # σ2 + # σ1, σ0 to n = ⌜σ to n⌝ + σ2 + σ1 to n, σ to n ≠ σ0 to n, σσ ≠ [], n1 < n0, ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
Used simplifier rules: ⊦ ⌜x⌝ to n = x to n; (s) ¬ # σ < ⌜n⌝ ⊦ (σ to n) to n = σ to n; (s) ⊦ # σ < ⌜n⌝ → σ + σ0 to n = σ.l + (σ0 to (n - # σ.l)); (s) ⊦ ⌜x⌝ .l = x; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ m - m = 0; (s) ⊦ σ to 0 = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: ⌜σ to n⌝ , σ2 + σ1, n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
Used simplifier rules: leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ0 to n⌝ + σ1 = σσ[n1] ⊦
Used terms: ⌜σ0 to n⌝ , σσ[n1]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n⌝ ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ0 to n⌝ + σ1 = σσ[n1] ⊦ |
# σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| # σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ⌜σ to n⌝ ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ to n⌝ + σ1 = σσ[n1] ⊦
Used terms: ⌜σ to n⌝ , σσ[n1]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ⌜σ0 to n⌝ ⊑ σσ[n0], σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ to n⌝ + σ1 = σσ[n1] ⊦ |
# σ = # σ0, ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| # σ = # σ0, ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ⌜σ0 to n⌝ ⊑ σσ[n0], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], ⌜σ to n⌝ + σ2 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ0 to n⌝ + σ1 = σσ[n0] ⊦
Used terms: ⌜σ0 to n⌝ , σσ[n0]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], ⌜σ to n⌝ + σ2 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ0 to n⌝ + σ1 = σσ[n0] ⊦ |
# σ = # σ0, ⌜σ0 to n⌝ + σ3 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| # σ = # σ0, ⌜σ0 to n⌝ + σ3 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σσ[n1], ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ3 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. σσ[n0] + σ1 = σσ[n1] ⊦
Used terms: σσ[n0], σσ[n1]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ = # σ0, ⌜σ0 to n⌝ + σ1 = σσ[n1], ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ3 = σσ[n0], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. σσ[n0] + σ1 = σσ[n1] ⊦ |
# σ = # σ0, σσ[n0] + σ4 = σσ[n1], ⌜σ0 to n⌝ + σ3 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| # σ = # σ0, σσ[n0] + σ4 = σσ[n1], ⌜σ0 to n⌝ + σ3 = σσ[n0], ⌜σ to n⌝ + σ2 = σσ[n1], ⌜σ0 to n⌝ + σ1 = σσ[n1], σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, ⌜σ0 to n⌝ + σ1 = ⌜σ to n⌝ + σ2, ⌜σ0 to n⌝ + σ3 = σσ[n0], σσ[n0] + σ4 = ⌜σ to n⌝ + σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| # σ = # σ0, ⌜σ0 to n⌝ + σ1 = ⌜σ to n⌝ + σ2, ⌜σ0 to n⌝ + σ3 = σσ[n0], σσ[n0] + σ4 = ⌜σ to n⌝ + σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, σσ[n0] + σ4 = ⌜σ to n⌝ + σ2, ⌜σ0 to n⌝ + σ3 = σσ[n0], ⌜σ0 to n⌝ + σ1 = σσ[n0] + σ4, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| # σ = # σ0, σσ[n0] + σ4 = ⌜σ to n⌝ + σ2, ⌜σ0 to n⌝ + σ3 = σσ[n0], ⌜σ0 to n⌝ + σ1 = σσ[n0] + σ4, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, ⌜σ0 to n⌝ + σ1 = (⌜σ0 to n⌝ + σ3) + σ4, (⌜σ0 to n⌝ + σ3) + σ4 = ⌜σ to n⌝ + σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| # σ = # σ0, ⌜σ0 to n⌝ + σ1 = (⌜σ0 to n⌝ + σ3) + σ4, (⌜σ0 to n⌝ + σ3) + σ4 = ⌜σ to n⌝ + σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ = # σ0, (⌜σ0 to n⌝ + σ3) + σ4 = ⌜σ to n⌝ + σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜x⌝ + σ0 = ⌜x⌝ + σ1 ↔ σ0 = σ1; (s)
| # σ = # σ0, (⌜σ0 to n⌝ + σ3) + σ4 = ⌜σ to n⌝ + σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n)
#((⌜σ0 to n⌝ + σ3) + σ4) = #(⌜σ to n⌝ + σ2), # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n0. ¬ #((⌜σ0 to n⌝ + σ3) + σ4) < ⌜n0⌝ → (⌜σ0 to n⌝ + σ3) + σ4 to n0 = ⌜σ to n⌝ + σ2 to n0 ⊦
Used terms: (⌜σ0 to n⌝ + σ3) + σ4, ⌜σ to n⌝ + σ2
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n) |
| #((⌜σ0 to n⌝ + σ3) + σ4) = #(⌜σ to n⌝ + σ2), # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n0. ¬ #((⌜σ0 to n⌝ + σ3) + σ4) < ⌜n0⌝ → (⌜σ0 to n⌝ + σ3) + σ4 to n0 = ⌜σ to n⌝ + σ2 to n0 ⊦ |
# σ = # σ0, # σ3 + # σ4 = # σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n2. ¬ ⌜n⌝ + # σ2 < ⌜n2⌝ → (⌜σ0 to n⌝ + σ3) + σ4 to n2 = ⌜σ to n⌝ + σ2 to n2 ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (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 ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s)
| # σ = # σ0, # σ3 + # σ4 = # σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n2. ¬ ⌜n⌝ + # σ2 < ⌜n2⌝ → (⌜σ0 to n⌝ + σ3) + σ4 to n2 = ⌜σ to n⌝ + σ2 to n2 ⊦ |
# σ = # σ0, # σ3 + # σ4 = # σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ¬ ⌜n⌝ + # σ2 < ⌜n⌝ → (⌜σ0 to n⌝ + σ3) + σ4 to n = ⌜σ to n⌝ + σ2 to n, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
Used terms: n
| # σ = # σ0, # σ3 + # σ4 = # σ2, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ¬ ⌜n⌝ + # σ2 < ⌜n⌝ → (⌜σ0 to n⌝ + σ3) + σ4 to n = ⌜σ to n⌝ + σ2 to n, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, # σ3 + # σ4 = # σ2, (⌜σ0 to n⌝ + σ3) + σ4 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: 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 ⊦ ¬ n∞ + n∞1 < n∞1; (s)
| # σ = # σ0, # σ3 + # σ4 = # σ2, (⌜σ0 to n⌝ + σ3) + σ4 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
# σ = # σ0, # σ3 + # σ4 = # σ2, ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ #(⌜σ0 to n⌝ + σ3) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
Used simplifier rules: ⊦ # σ < ⌜n⌝ → σ + σ0 to n = σ.l + (σ0 to (n - # σ.l)); (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ¬ n∞ + n∞1 < n∞1; (s) 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 Used terms: ⌜σ0 to n⌝ + σ3, σ4, n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ = # σ0, # σ3 + # σ4 = # σ2, ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ #(⌜σ0 to n⌝ + σ3) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, # σ3 + # σ4 = # σ2, ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: 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 ⊦ ¬ n∞ + n∞1 < n∞1; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σ = # σ0, # σ3 + # σ4 = # σ2, ⌜σ0 to n⌝ + σ3 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
# σ = # σ0, # σ3 + # σ4 = # σ2, ⌜σ0 to n⌝ to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # ⌜σ0 to n⌝ < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
Used simplifier rules: ⊦ # σ < ⌜n⌝ → σ + σ0 to n = σ.l + (σ0 to (n - # σ.l)); (s) ⊦ ⌜x⌝ .l = x; (s) ⊦ m - m = 0; (s) ⊦ σ to 0 = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < n; (s) Used terms: ⌜σ0 to n⌝ , σ3, n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ = # σ0, # σ3 + # σ4 = # σ2, ⌜σ0 to n⌝ to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, mon(σσ), ¬ # ⌜σ0 to n⌝ < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
# σ = # σ0, # σ3 + # σ4 = # σ2, σ0 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ (σ to n) to n = σ to n; (s) ⊦ ⌜x⌝ to n = x to n; (s)
| # σ = # σ0, # σ3 + # σ4 = # σ2, σ0 to n = ⌜σ to n⌝ + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], ⌜n1⌝ < # σσ, ⌜n0⌝ < # σσ, mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
Used simplifier rules: ⊦ ⌜x⌝ to n = x to n; (s) ¬ # σ < ⌜n⌝ ⊦ (σ to n) to n = σ to n; (s) ⊦ # σ < ⌜n⌝ → σ + σ0 to n = σ.l + (σ0 to (n - # σ.l)); (s) ⊦ ⌜x⌝ .l = x; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ m - m = 0; (s) ⊦ σ to 0 = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: ⌜σ to n⌝ , σ2, n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦ |
# σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
| # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
∞ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
⌜m⌝ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: natinf freely generated by ∞, ⌜ ⌝;;
| ∞ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
∞ = # σ, σσ ≠ [], ∞ ≠ # σ0, mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n] ⊦
Used simplifier rules: ⊦ ¬ ∞ < n∞; (s)
| ∞ = # σ, σσ ≠ [], ∞ ≠ # σ0, mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n] ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∃ n. # σ0 = ⌜n⌝ ⊦
Used terms: # σ0
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∃ n. # σ0 = ⌜n⌝ ⊦ |
# σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
# σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σ to n + 1⌝ ⊑ σσ[n0] ⊦
Used terms: n + 1
| # σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σ to n + 1⌝ ⊑ σσ[n0] ⊦ |
# σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n + 1⌝ ⊑ σσ[n0], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
| # σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜σ to n + 1⌝ ⊑ σσ[n0], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ to n + 1⌝ + σ1 = σσ[n0] ⊦
Used terms: ⌜σ to n + 1⌝ , σσ[n0]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. ⌜σ to n + 1⌝ + σ1 = σσ[n0] ⊦ |
# σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
| # σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
# σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜n0⌝ < # σσ → σσ[n0] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used terms: n0
| # σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ⌜n0⌝ < # σσ → σσ[n0] ⊑ σ0, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
# σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
| # σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), σσ[n0] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. σσ[n0] + σ1 = σ0 ⊦
Used terms: σσ[n0], σ0
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ0 = ⌜n⌝ , ⌜σ to n + 1⌝ + σ1 = σσ[n0], ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. σσ[n0] + σ1 = σ0 ⊦ |
⌜σ to n + 1⌝ + σ1 = σσ[n0], # σσ[n0] + # σ2 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σσ[n0] + σ2 to m⌝ ⊑ σσ[n]) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜σ to n + 1⌝ + σ1 = σσ[n0], # σσ[n0] + # σ2 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], ⌜n0⌝ < # σσ, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σσ[n0] + σ2 to m⌝ ⊑ σσ[n]) ⊦ |
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ⊦ ¬ ∞ < n∞; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ ⌜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 append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; (ws) 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
| ⌜m⌝ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
| ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, mon(σσ), ¬ ⌜m⌝ < # σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used formulas: ⌜m⌝ < # σ0
| ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, mon(σσ), ¬ # σ0 < ⌜m + 1⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m + 1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]) ⊦
Used terms: m + 1
| ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, mon(σσ), ¬ # σ0 < ⌜m + 1⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m + 1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]) ⊦ |
⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, ⌜n⌝ < # σσ, mon(σσ), ⌜σ0 to m + 1⌝ ⊑ σσ[n], ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: 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 ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, ⌜n⌝ < # σσ, mon(σσ), ⌜σ0 to m + 1⌝ ⊑ σσ[n], ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∃ σ1. ⌜σ0 to m + 1⌝ + σ1 = σσ[n] ⊦
Used terms: ⌜σ0 to m + 1⌝ , σσ[n]
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∃ σ1. ⌜σ0 to m + 1⌝ + σ1 = σσ[n] ⊦ |
⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, ⌜n⌝ < # σσ, mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
| ⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, ⌜n⌝ < # σσ, mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]) ⊦
Used terms: n
| ⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]) ⊦ |
⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, ⌜n⌝ < # σσ, mon(σσ), σσ[n] ⊑ σ, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦
| ⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜m⌝ < # σ0, ⌜n⌝ < # σσ, mon(σσ), σσ[n] ⊑ σ, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0 ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∃ σ1. σσ[n] + σ1 = σ ⊦
Used terms: σσ[n], σ
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∃ σ1. σσ[n] + σ1 = σ ⊦ |
⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σσ[n] + # σ2, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m0. ¬ m < m0 → (∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σσ[n] + σ2 to m0⌝ ⊑ σσ[n0]) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜σ0 to m + 1⌝ + σ1 = σσ[n], ⌜m⌝ = # σσ[n] + # σ2, σσ ≠ [], ⌜m⌝ ≠ # σ0, ⌜n⌝ < # σσ, ⌜m⌝ < # σ0, mon(σσ), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m0. ¬ m < m0 → (∃ n0. ⌜n0⌝ < # σσ ∧ ⌜σσ[n] + σ2 to m0⌝ ⊑ σσ[n0]) ⊦ |
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜σ to n⌝ = ⌜#(σ to n)⌝ ; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ ⌜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 append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; (ws) 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
| ⌜m⌝ = # σ, σσ ≠ [], ⌜m⌝ ≠ # σ0, mon(σσ), ¬ ⌜m⌝ < # σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⌜m⌝ = # σ, ⌜m0⌝ = # σ0, σσ ≠ [], ⌜m⌝ ≠ # σ0, mon(σσ), ¬ ⌜m⌝ < # σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦
Used simplifier rules: natinf freely generated by ∞, ⌜ ⌝;; ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ < ∞; (s)
| ⌜m⌝ = # σ, ⌜m0⌝ = # σ0, σσ ≠ [], ⌜m⌝ ≠ # σ0, mon(σσ), ¬ ⌜m⌝ < # σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m⌝ ⊑ σσ[n]) ⊦ |
⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], m0 < m, mon(σσ), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s)
| ⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], m0 < m, mon(σσ), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⌜m⌝ = # σ, ⌜m0⌝ = # σ0, m ≠ m0, σσ ≠ [], m0 < m, mon(σσ), ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]) ⊦
Used terms: m
| ⌜m⌝ = # σ, ⌜m0⌝ = # σ0, m ≠ m0, σσ ≠ [], m0 < m, mon(σσ), ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ to m⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]) ⊦ |
⌜m⌝ = # σ, ⌜m0⌝ = # σ0, m ≠ m0, σσ ≠ [], m0 < m, ⌜n⌝ < # σσ, mon(σσ), σ ⊑ σσ[n], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]) ⊦
Used simplifier rules: ⊦ ¬ n < n; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # σ = ⌜n⌝ → ⌜σ to n⌝ = σ; (s)
| ⌜m⌝ = # σ, ⌜m0⌝ = # σ0, m ≠ m0, σσ ≠ [], m0 < m, ⌜n⌝ < # σσ, mon(σσ), σ ⊑ σσ[n], ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]) ⊦ |
⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], ⌜n⌝ < # σσ, m0 < m, mon(σσ), σ ⊑ σσ[n], ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used terms: n
| ⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], ⌜n⌝ < # σσ, m0 < m, mon(σσ), σ ⊑ σσ[n], ⌜n⌝ < # σσ → σσ[n] ⊑ σ0, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
⌜m⌝ = # σ, ⌜m0⌝ = # σ0, m ≠ m0, σσ ≠ [], m0 < m, ⌜n⌝ < # σσ, mon(σσ), σ ⊑ σσ[n], σσ[n] ⊑ σ0, σ ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]) ⊦
Used simplifier rules: leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream
| ⌜m⌝ = # σ, ⌜m0⌝ = # σ0, m ≠ m0, σσ ≠ [], m0 < m, ⌜n⌝ < # σσ, mon(σσ), σ ⊑ σσ[n], σσ[n] ⊑ σ0, σ ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], ⌜n⌝ < # σσ, m0 < m, mon(σσ), σσ[n] ⊑ σ0, σ ⊑ σσ[n], ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. σ + σ1 = σ0 ⊦
Used terms: σ, σ0
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜m0⌝ = # σ0, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], ⌜n⌝ < # σσ, m0 < m, mon(σσ), σσ[n] ⊑ σ0, σ ⊑ σσ[n], ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ0 to m1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ, ∃ σ1. σ + σ1 = σ0 ⊦ |
⌜m0⌝ = ⌜m⌝ + # σ1, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], ⌜n⌝ < # σσ, m0 < m, mon(σσ), σσ[n] ⊑ σ + σ1, σ ⊑ σσ[n], ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ + σ1 to m1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ σ1 ⊑ σ1 + σ2; (s) leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜m0⌝ = ⌜m⌝ + # σ1, ⌜m⌝ = # σ, m ≠ m0, σσ ≠ [], ⌜n⌝ < # σσ, m0 < m, mon(σσ), σσ[n] ⊑ σ + σ1, σ ⊑ σσ[n], ∀ m1. ¬ m0 < m1 → (∃ n. ⌜n⌝ < # σσ ∧ ⌜σ + σ1 to m1⌝ ⊑ σσ[n]), ∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ ⊦ |
Used simplifier rules: stream('a) freely generated by ⌜ ⌝, ⌜ ⌝;; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + ∞ = ∞; (s) 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 ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream ⊦ m = m + n ↔ n = 0; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ m + m0 < n → ¬ n + n0 < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.