| mon(σσ), σσ ≠ [] ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ to m ⊑ σσ[n])) |
σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ to m ⊑ σσ[n]))
| σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ to m ⊑ σσ[n])) |
σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
Used simplifier rules: prefix-def: ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0);
| σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
# σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
# σσ ≠ ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
Used formulas: # σσ = ∞
| # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
# σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used simplifier rules: ⊦ ⌜m⌝ < ∞; (s)
| # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, σσ ≠ [], mon(σσ), ∃ n. # σσ[n] = ∞ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
# σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
Used formulas: ∃ n. # σσ[n] = ∞
| # σσ = ∞, σσ ≠ [], mon(σσ), ∃ n. # σσ[n] = ∞ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ[n] = ∞, # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
| # σσ[n] = ∞, # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, # σσ[n] = ∞, σσ ≠ [], mon(σσ) ⊦ (∀ n0. ∃ σ1. σσ[n0] + σ1 = σσ[n]) ∧ (∀ m. ¬ # σσ[n] < ⌜m⌝ → (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0]))
Used terms: σσ[n]
| # σσ = ∞, # σσ[n] = ∞, σσ ≠ [], mon(σσ) ⊦ (∀ n0. ∃ σ1. σσ[n0] + σ1 = σσ[n]) ∧ (∀ m. ¬ # σσ[n] < ⌜m⌝ → (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0])) |
# σσ = ∞, # σσ[n] = ∞, σσ ≠ [], mon(σσ) ⊦ (∃ σ1. σσ[n0] + σ1 = σσ[n]) ∧ (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0])
Used simplifier rules: ⊦ ¬ ∞ < n∞; (s)
| # σσ = ∞, # σσ[n] = ∞, σσ ≠ [], mon(σσ) ⊦ (∃ σ1. σσ[n0] + σ1 = σσ[n]) ∧ (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0]) |
# σσ[n] = ∞, # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ1. σσ[n0] + σ1 = σσ[n]
# σσ[n] = ∞, # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0]
| # σσ[n] = ∞, # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ1. σσ[n0] + σ1 = σσ[n] |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n]
# σσ = ∞, # σσ[n] = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ1. σσ[n0] + σ1 = σσ[n], n0 ≤ n ∧ ⌜n⌝ < # σσ
Used simplifier rules: prefix-def: ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0); Used terms: σσ, n0, n
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n] |
| # σσ = ∞, # σσ[n] = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ1. σσ[n0] + σ1 = σσ[n], n0 ≤ n ∧ ⌜n⌝ < # σσ |
# σσ = ∞, # σσ[n] = ∞, n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦ ∃ σ1. σσ[n0] + σ1 = σσ[n]
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ⌜m⌝ < ∞; (s)
| # σσ = ∞, # σσ[n] = ∞, n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦ ∃ σ1. σσ[n0] + σ1 = σσ[n] |
# σσ[n] = ∞, # σσ = ∞, σσ[n0] + [] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦
Used terms: []
| # σσ[n] = ∞, # σσ = ∞, σσ[n0] + [] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦ |
# σσ = ∞, # σσ[n] = ∞, σσ[n0] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ σ + [] = σ; (s)
| # σσ = ∞, # σσ[n] = ∞, σσ[n0] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n]
# σσ[n] = ∞, # σσ = ∞, σσ[n0] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ), σσ[n] ⊑ σσ[n0] ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) ⊦ ⌜m⌝ < ∞; (s) Used terms: σσ, n, n0
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n] |
| # σσ[n] = ∞, # σσ = ∞, σσ[n0] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ), σσ[n] ⊑ σσ[n0] ⊦ |
# σσ = ∞, # σσ[n] = ∞, σσ[n] + σ1 = σσ[n0], σσ[n0] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦
Used simplifier rules: prefix-def: ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0);
| # σσ = ∞, # σσ[n] = ∞, σσ[n] + σ1 = σσ[n0], σσ[n0] ≠ σσ[n], n0 ≠ 0, σσ ≠ [], n < n0, mon(σσ) ⊦ |
Used simplifier rules: stream freely generated by ⌜ ⌝, ⌜ ⌝;; ⊦ ⌜nf⌝ + σ = ⌜nf⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| # σσ[n] = ∞, # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0] |
Used simplifier rules: ⊦ ¬ ∞ < n∞; (s) ¬ # σ < ⌜n⌝ ⊦ (σ to n) + (σ from n) = σ ↔ true; (ss) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: n, σσ[n] from m
| # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# σσ = ∞, σσ ≠ [], mon(σσ), ∀ n. ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
# σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∀ n. ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used formulas: ∀ n. ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝
| # σσ = ∞, σσ ≠ [], mon(σσ), ∀ n. ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, σσ ≠ [], mon(σσ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
| # σσ = ∞, σσ ≠ [], mon(σσ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # lf(n) = ⌜lf(n)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → lf(m) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
# σσ = ∞, σσ ≠ [], mon(σσ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used terms: f_n->list
| ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # lf(n) = ⌜lf(n)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → lf(m) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
| # σσ = ∞, σσ ≠ [], mon(σσ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σ = ⌜ii(n)⌝ , ii(0) = 0, σσ ≠ [], finp(σ), mon(σσ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ , ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ¬ finp(σ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
| # σσ = ∞, # σ = ⌜ii(n)⌝ , ii(0) = 0, σσ ≠ [], finp(σ), mon(σσ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ , ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, # x = ii(n), ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ ⌜x⌝ = ⌜x0⌝ ↔ x = x0; (s) ⊦ ⌜x⌝ to n = ⌜x to n⌝ ; (s) ⊦ ⌜x⌝ from n = ⌜x from n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ finp(⌜x⌝ ); (s) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) stream-fin-forward: ⊦ finp(σ) → (∃ x. ⌜x⌝ = σ); (forward) from specification stream-basic
| # σσ = ∞, # x = ii(n), ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# x = ii(n), # σσ = ∞, ii(0) = 0, # σσ[n] ≠ ∞, σσ ≠ [], mon(σσ), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used terms: n
| # x = ii(n), # σσ = ∞, ii(0) = 0, # σσ[n] ≠ ∞, σσ ≠ [], mon(σσ), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
# σσ = ∞, # x = ii(n), ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∃ n0. # σσ[n] = ⌜n0⌝ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
Used terms: # σσ[n]
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| # σσ = ∞, # x = ii(n), ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∃ n0. # σσ[n] = ⌜n0⌝ ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ m. n ≤ m → σσ[m] = σσ[n] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∀ m. n ≤ m → σσ[m] = σσ[n], ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
Used formulas: ∀ m. n ≤ m → σσ[m] = σσ[n]
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ m. n ≤ m → σσ[m] = σσ[n] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, (∀ n0. ∃ σ1. σσ[n0] + σ1 = σσ[n]) ∧ (∀ m. ¬ # σσ[n] < ⌜m⌝ → (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0]))
Used terms: σσ[n]
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, (∀ n0. ∃ σ1. σσ[n0] + σ1 = σσ[n]) ∧ (∀ m. ¬ # σσ[n] < ⌜m⌝ → (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0])) |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, (∃ σ1. σσ[n1] + σ1 = σσ[n]) ∧ (¬ n0 < m → (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0]))
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, (∃ σ1. σσ[n1] + σ1 = σσ[n]) ∧ (¬ n0 < m → (∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0])) |
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ m. n ≤ m → σσ[m] = σσ[n] ⊦ ∃ n. # σσ[n] = ∞, ∃ σ1. σσ[n1] + σ1 = σσ[n]
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ¬ n0 < m, ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ m. n ≤ m → σσ[m] = σσ[n] ⊦ ∃ n. # σσ[n] = ∞, ∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0]
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ m. n ≤ m → σσ[m] = σσ[n] ⊦ ∃ n. # σσ[n] = ∞, ∃ σ1. σσ[n1] + σ1 = σσ[n] |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), n ≤ n1 → σσ[n1] = σσ[n], ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ σ1. σσ[n1] + σ1 = σσ[n], ∃ n. # σσ[n] = ∞
Used terms: n1
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), n ≤ n1 → σσ[n1] = σσ[n], ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ σ1. σσ[n1] + σ1 = σσ[n], ∃ n. # σσ[n] = ∞ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n]
Used simplifier rules: prefix-def: ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0); ⊦ ⌜m⌝ < ∞; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → m ≤ n; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ σ0 + σ = σ0 ↔ σ = [] ∨ ¬ finp(σ0); (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: σσ, n1, n
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n] |
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ¬ n0 < m, ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ m. n ≤ m → σσ[m] = σσ[n] ⊦ ∃ n. # σσ[n] = ∞, ∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0] |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), m ≤ n0, ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0], ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), m ≤ n0, ∀ m. n ≤ m → σσ[m] = σσ[n], ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n0, σ1. (σσ[n] to m) + σ1 = σσ[n0], ∃ n. # σσ[n] = ∞ |
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) ¬ # σ < ⌜n⌝ ⊦ (σ to n) + (σ from n) = σ ↔ true; (ss) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: n, σσ[n] from m
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∀ m. n ≤ m → σσ[m] = σσ[n], ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ[m] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m, ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ[m] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m, ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ[m] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m, ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ[m] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m, ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ[m0 +1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 +1, ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ σσ, x, ii, n, n0, f_n->list. # σσ = ∞ ∧ # x = ii(n) ∧ # σσ[n] = ⌜n0⌝ ∧ ii(0) = 0 ∧ σσ[m0] ≠ σσ[n] ∧ σσ ≠ [] ∧ mon(σσ) ∧ n ≤ m0 ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0)) → (∃ n. # σσ[n] = ∞) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: nat freely generated by 0, +1;; ⊦ m ≤ 0 ↔ m = 0; (s)
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ[m0 +1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 +1, ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ σσ, x, ii, n, n0, f_n->list. # σσ = ∞ ∧ # x = ii(n) ∧ # σσ[n] = ⌜n0⌝ ∧ ii(0) = 0 ∧ σσ[m0] ≠ σσ[n] ∧ σσ ≠ [] ∧ mon(σσ) ∧ n ≤ m0 ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0)) → (∃ n. # σσ[n] = ∞) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ∀ σσ, x, ii, n, n0, f_n->list. # σσ = ∞ ∧ # x = ii(n) ∧ # σσ[n] = ⌜n0⌝ ∧ ii(0) = 0 ∧ σσ[m0] ≠ σσ[n] ∧ σσ ≠ [] ∧ mon(σσ) ∧ n ≤ m0 ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0)) → (∃ n. # σσ[n] = ∞), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ m +1 = m + 1; (s)
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ∀ σσ, x, ii, n, n0, f_n->list. # σσ = ∞ ∧ # x = ii(n) ∧ # σσ[n] = ⌜n0⌝ ∧ ii(0) = 0 ∧ σσ[m0] ≠ σσ[n] ∧ σσ ≠ [] ∧ mon(σσ) ∧ n ≤ m0 ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0)) → (∃ n. # σσ[n] = ∞), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, # σσ = ∞ ∧ # x = ii(n) ∧ # σσ[n] = ⌜n0⌝ ∧ ii(0) = 0 ∧ σσ[m0] ≠ σσ[n] ∧ σσ ≠ [] ∧ mon(σσ) ∧ n ≤ m0 ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0)) → (∃ n. # σσ[n] = ∞), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used terms: σσ, x, ii, n, n0, f_n->list
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, # σσ = ∞ ∧ # x = ii(n) ∧ # σσ[n] = ⌜n0⌝ ∧ ii(0) = 0 ∧ σσ[m0] ≠ σσ[n] ∧ σσ ≠ [] ∧ mon(σσ) ∧ n ≤ m0 ∧ (∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0)) → (∃ n. # σσ[n] = ∞), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(0) = 0, σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0 |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, ii(m0 + 1) = ii(m0) + # f_n->list(m0), (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ¬ ii(n) < ii(m0 + 1), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0
Used terms: m0
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, ii(0) = 0, ii(m0 + 1) = ii(m0) + # f_n->list(m0), (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ¬ ii(n) < ii(m0 + 1), ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0 |
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(m0 + 1) = ii(m0) + # f_n->list(m0), ii(0) = 0, (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ii(m0 + 1) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , ii(m0 + 1) = ii(m0) + # f_n->list(m0), ii(0) = 0, (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ii(m0 + 1) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0 |
# σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, σσ[m0 + 1] = σσ[m0] + ⌜f_n->list(m0)⌝ , ii(0) = 0, ii(m0 + 1) = ii(m0) + # f_n->list(m0), (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), ii(m0 + 1) ≤ ii(n), n ≤ m0 + 1, ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0
Used terms: m0
| # σσ[n] = ⌜n0⌝ , # x = ii(n), # σσ = ∞, σσ[m0 + 1] = σσ[m0] + ⌜f_n->list(m0)⌝ , ii(0) = 0, ii(m0 + 1) = ii(m0) + # f_n->list(m0), (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), ii(m0 + 1) ≤ ii(n), n ≤ m0 + 1, ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0 |
# σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , σσ[m0 + 1] = σσ[m0] + ⌜f_n->list(m0)⌝ , ii(m0 + 1) = ii(m0) + # f_n->list(m0), ii(0) = 0, (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ii(m0 + 1) ≤ ii(n), n ≤ m0 → f_n->list(m0) = [] ∧ ii(m0) = ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0
Used terms: m0
| # σσ = ∞, # x = ii(n), # σσ[n] = ⌜n0⌝ , σσ[m0 + 1] = σσ[m0] + ⌜f_n->list(m0)⌝ , ii(m0 + 1) = ii(m0) + # f_n->list(m0), ii(0) = 0, (x from ii(m0)) to # f_n->list(m0) = f_n->list(m0), σσ[m0 + 1] ≠ σσ[n], σσ ≠ [], mon(σσ), n ≤ m0 + 1, ii(m0 + 1) ≤ ii(n), n ≤ m0 → f_n->list(m0) = [] ∧ ii(m0) = ii(n), ∀ m. n ≤ m → f_n->list(m) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n0. ii(n0 + 1) = ii(n0) + # f_n->list(n0) ∧ ¬ ii(n) < ii(n0 + 1) ∧ (x from ii(n0)) to # f_n->list(n0) = f_n->list(n0) ⊦ ∃ n. # σσ[n] = ∞, σσ[m0] ≠ σσ[n] ∧ n ≤ m0 |
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → (n ≤ m + 1 ↔ n = m + 1); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ # [] = 0; (s) ⊦ x to 0 = []; (s) ⊦ ⌜[]⌝ = []; (s) ⊦ σ + [] = σ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used formulas: n ≤ m0
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ¬ finp(σ), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # f_n->list(n) = ⌜f_n->list(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ ⌜x⌝ = ⌜x0⌝ ↔ x = x0; (s) ⊦ ⌜nf⌝ to n = ⌜nf to n⌝ ; (s) ⊦ ⌜nf⌝ from n = ⌜nf from n⌝ ; (s) ⊦ ¬ finp(⌜nf⌝ ); (s) stream-inf-forward: ⊦ ¬ finp(σ) → (∃ nf. ⌜nf⌝ = σ); (forward) from specification stream-basic ⊦ ¬ ∞ < n∞; (s) ⊦ ¬ finp(σ) → # σ = ∞; (s)
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used formulas: ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, (∀ n. ∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝ ) ∧ (∀ m. ¬ #(σσ[0] + ⌜nf⌝ ) < ⌜m⌝ → (∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]))
Used terms: σσ[0] + ⌜nf⌝
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, (∀ n. ∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝ ) ∧ (∀ m. ¬ #(σσ[0] + ⌜nf⌝ ) < ⌜m⌝ → (∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n])) |
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n. # σσ[n] = ∞, (∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝ ) ∧ (∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n])
Used simplifier rules: ⊦ ¬ ∞ < n∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream 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∞ + ∞ = ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n. # σσ[n] = ∞, (∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝ ) ∧ (∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]) |
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝ |
# σσ = ∞, σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝ , ∃ n. # σσ[n] = ∞
Used terms: n
| # σσ = ∞, σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ σ1. σσ[n] + σ1 = σσ[0] + ⌜nf⌝ , ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ1. (σσ[0] + ⌜nf to ii(n)⌝ ) + σ1 = σσ[0] + ⌜nf⌝
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ σ1. (σσ[0] + ⌜nf to ii(n)⌝ ) + σ1 = σσ[0] + ⌜nf⌝ |
Used simplifier rules: ⊦ σ + σ1 = σ + σ2 ↔ σ1 = σ2 ∨ # σ = ∞; (ws) ⊦ ⌜nf to n⌝ + ⌜nf from n⌝ = ⌜nf⌝ ↔ true; (ss) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: ⌜nf from ii(n)⌝
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n] |
# σσ = ∞, ii(0) = 0, # σσ[0] ≠ ∞, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞
Used terms: 0
| # σσ = ∞, ii(0) = 0, # σσ[0] ≠ ∞, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
# σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∃ n. # σσ[0] = ⌜n⌝ ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]
Used terms: # σσ[0]
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∃ n. # σσ[0] = ⌜n⌝ ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n] |
# σσ[0] = ⌜n⌝ , # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞
| # σσ[0] = ⌜n⌝ , # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, σσ ≠ [], m < n, mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]
# σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ¬ m < n, ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]
Used formulas: m < n
| # σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, σσ ≠ [], m < n, mon(σσ), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n] |
# σσ[0] = ⌜n⌝ , # σσ = ∞, ii(0) = 0, (σσ[0] + ⌜nf⌝ to m) + (σσ[0] from m) ≠ σσ[0], σσ ≠ [], m < n, mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n. # σσ[n] = ∞
Used terms: 0, σσ[0] from m
| # σσ[0] = ⌜n⌝ , # σσ = ∞, ii(0) = 0, (σσ[0] + ⌜nf⌝ to m) + (σσ[0] from m) ≠ σσ[0], σσ ≠ [], m < n, mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n. # σσ[n] = ∞ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m < n → ¬ n < m; (s) ¬ # σ < ⌜n⌝ ⊦ (σ to n) + (σ from n) = σ ↔ true; (ss) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic Used terms: m, ⌜nf⌝ , σσ[0]
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), ¬ m < n, ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n] |
# σσ[0] = ⌜n⌝ , # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # σσ[0] = ⌜n⌝ , # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), n ≤ m, ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∃ m0. ii(m0) ≤ m - n ∧ m - n < ii(m0 + 1) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]
Used terms: m - n
| # σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, σσ ≠ [], mon(σσ), n ≤ m, ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∃ m0. ii(m0) ≤ m - n ∧ m - n < ii(m0 + 1) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n] |
# σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], m < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) + n ≤ m, n ≤ m, ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n; (s)
| # σσ = ∞, # σσ[0] = ⌜n⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], m < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) + n ≤ m, n ≤ m, ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n] |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), m < ii(m0 + 1) + n, mon(σσ), n ≤ m, ii(m0) + n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞
Used terms: m0
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), m < ii(m0 + 1) + n, mon(σσ), n ≤ m, ii(m0) + n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ ⊦ ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n], ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], m < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) + n ≤ m, n ≤ m, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n]
Used terms: m0 + 1
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], m < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) + n ≤ m, n ≤ m, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞, ∃ n, σ1. (σσ[0] + ⌜nf⌝ to m) + σ1 = σσ[n] |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, (σσ[0] + ⌜nf⌝ to m) + ((⌜nf⌝ to ii(m0 + 1)) from (m - n)) ≠ σσ[m0 + 1], ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), m < ii(m0 + 1) + n, mon(σσ), n ≤ m, ii(m0) + n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used terms: m0 + 1, (⌜nf⌝ to ii(m0 + 1)) from (m - n)
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, (σσ[0] + ⌜nf⌝ to m) + ((⌜nf⌝ to ii(m0 + 1)) from (m - n)) ≠ σσ[m0 + 1], ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), m < ii(m0 + 1) + n, mon(σσ), n ≤ m, ii(m0) + n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to m) + ⌜(nf to ii(m0 + 1)) from (m - n)⌝ ≠ σσ[m0 + 1], ii(m0 + 1) ≠ 0, σσ ≠ [], m < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) + n ≤ m, n ≤ m, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ ⌜x⌝ from n = ⌜x from n⌝ ; (s) ⊦ ⌜nf⌝ to n = ⌜nf to n⌝ ; (s)
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to m) + ⌜(nf to ii(m0 + 1)) from (m - n)⌝ ≠ σσ[m0 + 1], ii(m0 + 1) ≠ 0, σσ ≠ [], m < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) + n ≤ m, n ≤ m, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, m = n1 + n, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to m) + ⌜(nf to ii(m0 + 1)) from n1⌝ ≠ σσ[m0 + 1], ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), m < ii(m0 + 1) + n, mon(σσ), n ≤ m, ii(m0) + n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: m, n, n1
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, m = n1 + n, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to m) + ⌜(nf to ii(m0 + 1)) from n1⌝ ≠ σσ[m0 + 1], ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), m < ii(m0 + 1) + n, mon(σσ), n ≤ m, ii(m0) + n ≤ m, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ≠ σσ[m0 + 1], ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m ≤ m + n; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , σσ[m0 + 1] = σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ≠ σσ[m0 + 1], ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ≠ σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ≠ σσ[0] + ⌜nf to ii(m0 + 1)⌝ , ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n])
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), #((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ) ≠ #(σσ[0] + ⌜nf to ii(m0 + 1)⌝ ) ∨ (∃ n0. ¬ ( ⌜n0⌝ < #((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ) → ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] = (σσ[0] + ⌜nf to ii(m0 + 1)⌝ )[n0])) ⊦ ∃ n. # σσ[n] = ∞
Used terms: σσ[0] + ⌜nf to ii(m0 + 1)⌝ , (σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n]) |
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), #((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ) ≠ #(σσ[0] + ⌜nf to ii(m0 + 1)⌝ ) ∨ (∃ n0. ¬ ( ⌜n0⌝ < #((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ ) → ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] = (σσ[0] + ⌜nf to ii(m0 + 1)⌝ )[n0])) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ (σσ[0] + ⌜nf to ii(m0 + 1)⌝ )[n0], ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n0 < ii(m0 + 1) + n, mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(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 c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n < m → (m - n) + n = m; (s) ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s) ⊦ ⌜n1⌝ < ⌜n0⌝ + ⌜n⌝ + ⌜m⌝ ↔ n1 < n0 + n + m; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(nf to n) = n; (s) ¬ # x < n ⊦ #(x from n) = # x - n; (s) ⊦ m < n → ¬ n < m; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ¬ ∞ < n∞; (s) ⊦ n∞ + ∞ = ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜nf to n⌝ = ⌜n⌝ ; (s)
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ (σσ[0] + ⌜nf to ii(m0 + 1)⌝ )[n0], ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n0 < ii(m0 + 1) + n, mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ (σσ[0] + ⌜nf to ii(m0 + 1)⌝ )[n0], ii(m0 + 1) ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ¬ ⌜n0⌝ < # σσ[0], ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), ⌜n0⌝ < # σσ[0], mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used terms: n0, ⌜nf to ii(m0 + 1)⌝ , σσ[0]
| ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m] |
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ (σσ[0] + ⌜nf to ii(m0 + 1)⌝ )[n0], ii(m0 + 1) ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ¬ ⌜n0⌝ < # σσ[0], ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ nf(n0 - n), ii(m0 + 1) ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, n ≤ n0, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) m < n ⊦ (nf to n)[m] = nf(m); (s) ⊦ m < n → (n ≤ m ↔ false); (s) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ⌜n⌝ .n = n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜x⌝ [n] = x[n]; (s) ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n]; (s)
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ nf(n0 - n), ii(m0 + 1) ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, n ≤ n0, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, n0 = n2 + n, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n0 < ii(m0 + 1) + n, mon(σσ), n ≤ n0, ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n0, n, n2
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, n0 = n2 + n, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n0 < ii(m0 + 1) + n, mon(σσ), n ≤ n0, ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n2 + n] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), n2 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m ≤ m + n; (s)
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n2 + n] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), n2 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n]
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n2 + n] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], ⌜n2 + n⌝ < #(σσ[0] + ⌜nf⌝ to n1 + n), n2 < ii(m0 + 1), n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ⌜(nf to ii(m0 + 1)) from n1⌝ [n2 + n - (#(σσ[0] + ⌜nf⌝ to n1 + n)).n] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], n2 < ii(m0 + 1), n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ¬ ⌜n2 + n⌝ < #(σσ[0] + ⌜nf⌝ to n1 + n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used terms: n2 + n, ⌜(nf to ii(m0 + 1)) from n1⌝ , σσ[0] + ⌜nf⌝ to n1 + n
| ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n] |
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n2 + n] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], ⌜n2 + n⌝ < #(σσ[0] + ⌜nf⌝ to n1 + n), n2 < ii(m0 + 1), n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ )[n2 + n] ≠ nf(n2), ii(m0 + 1) ≠ 0, n1 ≠ 0, σσ ≠ [], n2 < n1, n2 < ii(m0 + 1), n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n2 + 1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ m +1 = m + 1; (s) trans: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic m < n, ¬ # σ < ⌜n⌝ ⊦ (σ to n)[m] = σ[m]; (s) ⊦ ¬ ∞ < 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) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream 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∞ + ∞ = ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜n⌝ + n∞1 < ⌜n⌝ + n∞2 ↔ n∞1 < n∞2; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]; (s)
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ )[n2 + n] ≠ nf(n2), ii(m0 + 1) ≠ 0, n1 ≠ 0, σσ ≠ [], n2 < n1, n2 < ii(m0 + 1), n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n2 + 1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n]
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ ⌜n⌝ .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 ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ¬ m + n < 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 Used terms: n2 + n, ⌜nf⌝ , σσ[0]
| ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n] |
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ⌜(nf to ii(m0 + 1)) from n1⌝ [n2 + n - (#(σσ[0] + ⌜nf⌝ to n1 + n)).n] ≠ nf(n2), ii(m0 + 1) ≠ 0, σσ ≠ [], n2 < ii(m0 + 1), n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, ¬ ⌜n2 + n⌝ < #(σσ[0] + ⌜nf⌝ to n1 + n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, nf(n1 + (n2 - n1)) ≠ nf(n2), σσ ≠ [], ii(m0) < ii(m0 + 1), n2 < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, n1 ≤ n2, ii(m0) ≤ n2, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat m < n ⊦ (nf to n)[m] = nf(m); (s) ⊦ m < n → (n ≤ m ↔ false); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n < m → (m - n) + n = m; (s) ⊦ m ≠ n → (m ≤ n ↔ m < n); (s) ⊦ m ≤ n → (n - m = 0 ↔ n = m); (s) ⊦ m < m + n ↔ n ≠ 0; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) m + m0 < # x ⊦ (x from m)[m0] = x[m + m0]; (s) ⊦ #(nf to n) = 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 ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜n⌝ + n∞1 < ⌜n⌝ + n∞2 ↔ n∞1 < n∞2; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ¬ ∞ < n∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ n∞ + ∞ = ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ ⌜x⌝ [n] = x[n]; (s) ⊦ m + n - n + n1 = m - n1; (s) ⊦ ⌜n⌝ .n = n; (s) n∞ ≠ ∞ ⊦ (⌜m⌝ + n∞).n = m + n∞.n; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ii(m0 + 1) ≠ 0, nf(n1 + (n2 - n1)) ≠ nf(n2), σσ ≠ [], ii(m0) < ii(m0 + 1), n2 < ii(m0 + 1), n1 < ii(m0 + 1), mon(σσ), ii(m0) ≤ n1, n1 ≤ n2, ii(m0) ≤ n2, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n2, n1, n3
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), ⌜n0⌝ < # σσ[0], mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, n ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), n0 < n, mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, ((σσ[0] + ⌜nf⌝ to n1 + n) + ⌜(nf to ii(m0 + 1)) from n1⌝ )[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, n ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), n0 < n, mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]
# σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to n1 + n)[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, n ≠ 0, σσ ≠ [], n0 < n, n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n0 < ii(m0 + 1) + n, ⌜n0⌝ < #(σσ[0] + ⌜nf⌝ to n1 + n), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n]; (s) ⊦ ⌜n⌝ ≠ ∞; (s) n∞ ≠ ∞ ⊦ (⌜m⌝ + n∞).n = m + n∞.n; (s) ⊦ ⌜n⌝ .n = n; (s) ⊦ ⌜x⌝ [n] = x[n]; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ n∞ + ∞ = ∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ¬ ∞ < 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 ⊦ m < n → ⌜m⌝ < ⌜n⌝ + n∞0; (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: n0, ⌜(nf to ii(m0 + 1)) from n1⌝ , σσ[0] + ⌜nf⌝ to n1 + n
| ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m] |
| # σσ = ∞, # σσ[0] = ⌜n⌝ , σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ to n1 + n)[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, n ≠ 0, σσ ≠ [], n0 < n, n1 < ii(m0 + 1), ii(m0) < ii(m0 + 1), n0 < ii(m0 + 1) + n, ⌜n0⌝ < #(σσ[0] + ⌜nf⌝ to n1 + n), mon(σσ), ii(m0) ≤ n1, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ )[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, n ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), n0 < n, mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(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 ⊦ m < n → ⌜m⌝ < ⌜n⌝ + n∞0; (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) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ¬ ∞ < n∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ n∞ + ∞ = ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) m < n, ¬ # σ < ⌜n⌝ ⊦ (σ to n)[m] = σ[m]; (s) ⊦ ¬ m + n < m; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # σσ[0] = ⌜n⌝ , # σσ = ∞, σσ[m0] = σσ[0] + ⌜nf to ii(m0)⌝ , ii(0) = 0, ii(m0 + 1) + n ≠ 0, (σσ[0] + ⌜nf⌝ )[n0] ≠ σσ[0][n0], ii(m0 + 1) ≠ 0, n ≠ 0, σσ ≠ [], n0 < ii(m0 + 1) + n, ii(m0) < ii(m0 + 1), n1 < ii(m0 + 1), n0 < n, mon(σσ), ii(m0) ≤ n1, ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]
Used simplifier rules: ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n]; (s) ⊦ ⌜nf⌝ [n] = nf(n); (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜n⌝ .n = n; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: n0, ⌜nf⌝ , σσ[0]
| ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m] |
| # σσ = ∞, ii(0) = 0, σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∀ n. σσ[n] = σσ[0] + ⌜nf to ii(n)⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, ii(0) = 0, σσ[n] ≠ σσ[0] + ⌜nf to ii(n)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞
| # σσ = ∞, ii(0) = 0, σσ[n] ≠ σσ[0] + ⌜nf to ii(n)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, σσ[n] ≠ σσ[0] + ⌜nf to ii(n)⌝ , σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
| # σσ = ∞, ii(0) = 0, σσ[n] ≠ σσ[0] + ⌜nf to ii(n)⌝ , σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, σσ[n0 +1] ≠ σσ[0] + ⌜nf to ii(n0 +1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ σσ, ii, nf, f_n->list. # σσ = ∞ ∧ ii(0) = 0 ∧ σσ[n0] ≠ σσ[0] + ⌜nf to ii(n0)⌝ ∧ σσ ≠ [] ∧ mon(σσ) ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) → (∃ n. # σσ[n] = ∞) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: nat freely generated by 0, +1;; ⊦ σ0 + σ = σ0 ↔ σ = [] ∨ ¬ finp(σ0); (s) ⊦ ⌜x⌝ = [] ↔ x = []; (s) ⊦ nf to n = [] ↔ n = 0; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream
| # σσ = ∞, ii(0) = 0, σσ[n0 +1] ≠ σσ[0] + ⌜nf to ii(n0 +1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ σσ, ii, nf, f_n->list. # σσ = ∞ ∧ ii(0) = 0 ∧ σσ[n0] ≠ σσ[0] + ⌜nf to ii(n0)⌝ ∧ σσ ≠ [] ∧ mon(σσ) ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) → (∃ n. # σσ[n] = ∞) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ σσ, ii, nf, f_n->list. # σσ = ∞ ∧ ii(0) = 0 ∧ σσ[n0] ≠ σσ[0] + ⌜nf to ii(n0)⌝ ∧ σσ ≠ [] ∧ mon(σσ) ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) → (∃ n. # σσ[n] = ∞), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ m +1 = m + 1; (s)
| # σσ = ∞, ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ σσ, ii, nf, f_n->list. # σσ = ∞ ∧ ii(0) = 0 ∧ σσ[n0] ≠ σσ[0] + ⌜nf to ii(n0)⌝ ∧ σσ ≠ [] ∧ mon(σσ) ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) → (∃ n. # σσ[n] = ∞), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), # σσ = ∞ ∧ ii(0) = 0 ∧ σσ[n0] ≠ σσ[0] + ⌜nf to ii(n0)⌝ ∧ σσ ≠ [] ∧ mon(σσ) ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) → (∃ n. # σσ[n] = ∞), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used terms: σσ, ii, nf, f_n->list
| # σσ = ∞, ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), # σσ = ∞ ∧ ii(0) = 0 ∧ σσ[n0] ≠ σσ[0] + ⌜nf to ii(n0)⌝ ∧ σσ ≠ [] ∧ mon(σσ) ∧ (∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n)) ∧ (∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ ) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) → (∃ n. # σσ[n] = ∞), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
| # σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n), ∀ n0. σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞
Used terms: n0
| # σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ii(0) = 0, σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # f_n->list(n) ∧ (nf from ii(n)) to # f_n->list(n) = f_n->list(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
Used terms: n0
| # σσ = ∞, σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
| # σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , σσ[n0 + 1] = σσ[n0] + ⌜f_n->list(n0)⌝ , ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), σσ[n0 + 1] ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), σσ[n0] + ⌜f_n->list(n0)⌝ ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
| # σσ = ∞, σσ[n0] = σσ[0] + ⌜nf to ii(n0)⌝ , ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), σσ[n0] + ⌜f_n->list(n0)⌝ ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), (σσ[0] + ⌜nf to ii(n0)⌝ ) + ⌜f_n->list(n0)⌝ ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
| # σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), (σσ[0] + ⌜nf to ii(n0)⌝ ) + ⌜f_n->list(n0)⌝ ≠ σσ[0] + ⌜nf to ii(n0 + 1)⌝ , σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), # σσ[0] ≠ ∞, (nf to ii(n0)) + f_n->list(n0) ≠ nf to ii(n0 + 1), σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜x⌝ + ⌜y⌝ = ⌜z⌝ ↔ x + y = z; (s) ⊦ σ + σ1 = σ + σ2 ↔ σ1 = σ2 ∨ # σ = ∞; (ws)
| # σσ = ∞, ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), (nf from ii(n0)) to # f_n->list(n0) = f_n->list(n0), # σσ[0] ≠ ∞, (nf to ii(n0)) + f_n->list(n0) ≠ nf to ii(n0 + 1), σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(n0 + 1) = ii(n0) + #((nf from ii(n0)) to # f_n->list(n0)), ii(0) = 0, # σσ[0] ≠ ∞, (nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)) ≠ nf to ii(n0 + 1), σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
| # σσ = ∞, ii(n0 + 1) = ii(n0) + #((nf from ii(n0)) to # f_n->list(n0)), ii(0) = 0, # σσ[0] ≠ ∞, (nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)) ≠ nf to ii(n0 + 1), σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), # σσ[0] ≠ ∞, (nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)) ≠ nf to ii(n0 + 1), σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ #(nf to n) = n; (s)
| # σσ = ∞, ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), # σσ[0] ≠ ∞, (nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)) ≠ nf to ii(n0 + 1), σσ ≠ [], mon(σσ), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n])
# σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, # σσ[0] ≠ ∞, σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), #((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0))) ≠ #(nf to ii(n0 + 1)) ∨ (∃ n. ¬ ( n < #((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0))) → ((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)))[n] = (nf to ii(n0 + 1))[n])) ⊦ ∃ n. # σσ[n] = ∞
Used terms: nf to ii(n0 + 1), (nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0))
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n]) |
| # σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, # σσ[0] ≠ ∞, σσ ≠ [], mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), #((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0))) ≠ #(nf to ii(n0 + 1)) ∨ (∃ n. ¬ ( n < #((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0))) → ((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)))[n] = (nf to ii(n0 + 1))[n])) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, # σσ[0] ≠ ∞, ((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)))[n] ≠ nf(n), ii(n0 + 1) ≠ 0, σσ ≠ [], n < ii(n0 + 1), mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic m < n ⊦ (nf to n)[m] = nf(m); (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(nf to n) = n; (s) ⊦ #(x + y) = # x + # y; (s)
| # σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, # σσ[0] ≠ ∞, ((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)))[n] ≠ nf(n), ii(n0 + 1) ≠ 0, σσ ≠ [], n < ii(n0 + 1), mon(σσ), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
⊦ n < # x → (x + y)[n] = x[n]
# σσ = ∞, ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), # σσ[0] ≠ ∞, ((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)))[n] ≠ nf(n), ii(n0 + 1) ≠ 0, σσ ≠ [], n < ii(n0 + 1), mon(σσ), ¬ n < #(nf to ii(n0)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ #(nf to n) = n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) m < n ⊦ (nf to n)[m] = nf(m); (s) Used terms: n, (nf from ii(n0)) to # f_n->list(n0), nf to ii(n0)
| ⊦ n < # x → (x + y)[n] = x[n] |
| # σσ = ∞, ii(0) = 0, ii(n0 + 1) = ii(n0) + # f_n->list(n0), # σσ[0] ≠ ∞, ((nf to ii(n0)) + ((nf from ii(n0)) to # f_n->list(n0)))[n] ≠ nf(n), ii(n0 + 1) ≠ 0, σσ ≠ [], n < ii(n0 + 1), mon(σσ), ¬ n < #(nf to ii(n0)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ ∃ n. # σσ[n] = ∞ |
# σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, # σσ[0] ≠ ∞, ((nf from ii(n0)) to # f_n->list(n0))[n - ii(n0)] ≠ nf(n), f_n->list(n0) ≠ [], ii(n0 + 1) ≠ 0, σσ ≠ [], n < ii(n0 + 1), ii(n0) < ii(n0 + 1), mon(σσ), ii(n0) ≤ n, ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ # x = 0 ↔ x = []; (s) ⊦ m < m + n ↔ n ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ #(nf to n) = n; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ¬ n < # x → (x + y)[n] = y[n - # x]; (s)
| # σσ = ∞, ii(n0 + 1) = ii(n0) + # f_n->list(n0), ii(0) = 0, # σσ[0] ≠ ∞, ((nf from ii(n0)) to # f_n->list(n0))[n - ii(n0)] ≠ nf(n), f_n->list(n0) ≠ [], ii(n0 + 1) ≠ 0, σσ ≠ [], n < ii(n0 + 1), ii(n0) < ii(n0 + 1), mon(σσ), ii(n0) ≤ n, ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ n. # σσ[n] = ∞ |
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ m + n; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m ≤ n → (n < m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic m < n ⊦ (nf to n)[m] = nf(m); (s) ⊦ ((nf from n))(m) = nf(m + n); (s) n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n, ii(n0), n1
| # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∀ n. ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝
| # σσ = ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
# σσ = ∞, σσ ≠ [], ∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used terms: σσ
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| # σσ = ∞, σσ ≠ [], ∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, σσ ≠ [], ∀ n0. ∃ σ1. σσ[n0] + σ1 = σσ[n0 + 1] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used simplifier rules: prefix-def: ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0); 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⌝ ≠ ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s)
| # σσ = ∞, σσ ≠ [], ∀ n0. ∃ σ1. σσ[n0] + σ1 = σσ[n0 + 1] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, σσ ≠ [], ∃ σ1. σσ[n] + σ1 = σσ[n + 1] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝
Used terms: n
| # σσ = ∞, σσ ≠ [], ∃ σ1. σσ[n] + σ1 = σσ[n + 1] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ |
# σσ = ∞, σσ[n] + σ1 = σσ[n + 1], σσ ≠ [] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
| # σσ = ∞, σσ[n] + σ1 = σσ[n + 1], σσ ≠ [] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ n. # σσ[n] = ∞, ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
# σσ = ∞, σσ[n] + ⌜list⌝ = σσ[n + 1], σσ ≠ [] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝
# σσ = ∞, σσ[n] + ⌜f_n->elem⌝ = σσ[n + 1], σσ ≠ [] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝
Used simplifier rules: stream freely generated by ⌜ ⌝, ⌜ ⌝;;
| # σσ = ∞, σσ[n] + ⌜list⌝ = σσ[n + 1], σσ ≠ [] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ |
Used terms: list
| # σσ = ∞, σσ[n] + ⌜f_n->elem⌝ = σσ[n + 1], σσ ≠ [] ⊦ ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])), ∃ n. # σσ[n] = ∞, ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ |
# σσ = ∞, σσ[n] + ⌜f_n->elem⌝ = σσ[n + 1], # σσ[n + 1] ≠ ∞, σσ ≠ [] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n]))
Used terms: n + 1
| # σσ = ∞, σσ[n] + ⌜f_n->elem⌝ = σσ[n + 1], # σσ[n + 1] ≠ ∞, σσ ≠ [] ⊦ ∃ x. σσ[n + 1] = σσ[n] + ⌜x⌝ , ∃ σ. (∀ n. ∃ σ1. σσ[n] + σ1 = σ) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n, σ1. (σ to m) + σ1 = σσ[n])) |
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ n∞ + ∞ = ∞; (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 append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream
| # σσ ≠ ∞, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
σσ ≠ [], mon(σσ), ∃ n. # σσ = ⌜n⌝ ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
Used terms: # σσ
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| σσ ≠ [], mon(σσ), ∃ n. # σσ = ⌜n⌝ ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
# σσ = ⌜n⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
| # σσ = ⌜n⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
# σσ = ⌜n⌝ , n = n0 +1, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
Used simplifier rules: nat freely generated by 0, +1;; ⊦ # σ = ⌜0⌝ ↔ σ = []; (s)
| # σσ = ⌜n⌝ , n = n0 +1, σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ⌜n⌝ < # σσ → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ n∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < n∞ ↔ n < m + n0); (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 ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ m +1 = m + 1; (s)
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σσ[n0])) ∧ (∀ m. ¬ # σσ[n0] < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n])))
Used terms: σσ[n0]
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σσ[n0])) ∧ (∀ m. ¬ # σσ[n0] < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]))) |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), (¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σσ[n0])) ∧ (¬ # σσ[n0] < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n])))
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ) ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), (¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σσ[n0])) ∧ (¬ # σσ[n0] < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]))) |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ n0 < n ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ σ1. σσ[n] + σ1 = σσ[n0]
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n])
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ n0 < n ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ σ1. σσ[n] + σ1 = σσ[n0] |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), n ≤ n0 ⊦ ∃ σ1. σσ[n] + σ1 = σσ[n0], ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), n ≤ n0 ⊦ ∃ σ1. σσ[n] + σ1 = σσ[n0], ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n]
Used simplifier rules: prefix-def: ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0); 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∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < n∞ ↔ n < m + n0); (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: σσ, n, n0
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ[m] ⊑ σσ[n] |
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]) |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]), ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n])))
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]), ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))) |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]), ¬ n0 < n0 ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n0])
Used terms: n0
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]), ¬ n0 < n0 ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n0]) |
# σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]), ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ σ1. (σσ[n0] to m) + σ1 = σσ[n0]
Used simplifier rules: ⊦ ¬ n < n; (s)
| # σσ = ⌜n0⌝ + ⌜1⌝ , σσ ≠ [], mon(σσ), ¬ # σσ[n0] < ⌜m⌝ ⊦ ∃ n. ¬ n0 < n ∧ (∃ σ1. (σσ[n0] to m) + σ1 = σσ[n]), ∃ σ. (∀ n. ¬ n0 < n → (∃ σ1. σσ[n] + σ1 = σ)) ∧ (∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ¬ n0 < n ∧ (∃ σ1. (σ to m) + σ1 = σσ[n]))), ∃ σ1. (σσ[n0] to m) + σ1 = σσ[n0] |
Used simplifier rules: ¬ # σ < ⌜n⌝ ⊦ (σ to n) + (σ from n) = σ ↔ true; (ss) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: σσ[n0] from m
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.