| ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n) + 1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
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⌝ + ⌜n⌝ ; (s)
| ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
⊦ ∃ σ, 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))
∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: λ n. (n = 0 ⊃ lf(0);lf(n).tail)
| ⊦ ∃ σ, 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)) |
| ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∀ n. n ≠ 0 → ii(n) ≠ 0, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used formulas: ∀ n. n ≠ 0 → ii(n) ≠ 0
| ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used formulas: ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head
| ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ (0 = 0 ⊃ 0;ii(0) - 1) = 0 ∧ (∀ n. (n + 1 = 0 ⊃ 0;ii(n + 1) - 1) = (n = 0 ⊃ 0;ii(n) - 1) + # lf(n) - 1 ∧ ⌜(n + 1 = 0 ⊃ 0;ii(n + 1) - 1)⌝ < # σ ∧ (σ from (n = 0 ⊃ 0;ii(n) - 1)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n = 0 ⊃ 0;ii(n) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∀ n. ∃ m. (m = 0 ⊃ 0;ii(m) - 1) ≤ n ∧ n < (m + 1 = 0 ⊃ 0;ii(m + 1) - 1) )
Used terms: σ, λ n. (n = 0 ⊃ 0;ii(n) - 1)
| ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ (0 = 0 ⊃ 0;ii(0) - 1) = 0 ∧ (∀ n. (n + 1 = 0 ⊃ 0;ii(n + 1) - 1) = (n = 0 ⊃ 0;ii(n) - 1) + # lf(n) - 1 ∧ ⌜(n + 1 = 0 ⊃ 0;ii(n + 1) - 1)⌝ < # σ ∧ (σ from (n = 0 ⊃ 0;ii(n) - 1)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n = 0 ⊃ 0;ii(n) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∀ n. ∃ m. (m = 0 ⊃ 0;ii(m) - 1) ≤ n ∧ n < (m + 1 = 0 ⊃ 0;ii(m + 1) - 1) ) |
ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ii(n0 + 1) - 1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜ii(n0 + 1) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ii(n0 + 1) - 1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜ii(n0 + 1) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
ii(n0 + 1) = 0, ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ii(n0 + 1) - 1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜ii(n0 + 1) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
ii(0) = 0, ii(n0 + 1) = m1 + 1, ii(n0 + 1) ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜m1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: ii(n0 + 1), m1
| ii(n0 + 1) = 0, ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ii(n0 + 1) - 1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜ii(n0 + 1) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
ii(0) = 0, ii(n0 + 1) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ 0 - 1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜0 - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
| ii(0) = 0, ii(n0 + 1) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ 0 - 1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜0 - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
Used simplifier rules: ⊦ m + 1 ≠ 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n0 + 1
| ii(0) = 0, ii(n0 + 1) = m1 + 1, ii(n0 + 1) ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜m1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
ii(0) = 0, ii(n0 + 1) = m1 + 1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| ii(0) = 0, ii(n0 + 1) = m1 + 1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
ii(n0 + 1) = m1 + 1, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
Used terms: n0
| ii(n0 + 1) = m1 + 1, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
Used simplifier rules: add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, ii(n0 + 1) = m1 + 1, m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m1 ≠ (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
Used formulas: m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1
| m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, ii(n0 + 1) = m1 + 1, m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, ¬ (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 )
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n0 ≠ 0, (σ from (ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ σ from 0 = σ; (s)
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n0 ≠ 0, (σ from (ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
((ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # lf(n0).tail, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, (σ from (ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
| ((ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # lf(n0).tail, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, (σ from (ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
((ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0) = 0, ii(n0 + 1) = ii(n0) + # lf(n0).tail, ii(0) = 0, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, (σ from (ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
(m0 + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # lf(n0).tail, ii(0) = 0, ii(n0) = m0 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, ii(n0) ≠ 0, n0 ≠ 0, (σ from m0) to # lf(n0) ≠ lf(n0), ⌜m0 + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: ii(n0), m0
| ((ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0) = 0, ii(n0 + 1) = ii(n0) + # lf(n0).tail, ii(0) = 0, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, (σ from (ii(n0) - 1)) to # lf(n0) ≠ lf(n0), ⌜(ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
((0 - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0) = 0, ii(n0 + 1) = # lf(n0).tail, ii(0) = 0, σ to ii(n0 + 1) = lf(n0).tail, n0 ≠ 0, (σ from (0 - 1)) to # lf(n0) ≠ lf(n0), ⌜(0 - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: ⊦ σ from 0 = σ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s)
| ((0 - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0) = 0, ii(n0 + 1) = # lf(n0).tail, ii(0) = 0, σ to ii(n0 + 1) = lf(n0).tail, n0 ≠ 0, (σ from (0 - 1)) to # lf(n0) ≠ lf(n0), ⌜(0 - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
Used terms: n0
| (m0 + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # lf(n0).tail, ii(0) = 0, ii(n0) = m0 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, ii(n0) ≠ 0, n0 ≠ 0, (σ from m0) to # lf(n0) ≠ lf(n0), ⌜m0 + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
(# lf(n0).tail + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # lf(n0).tail + m0, ii(0) = 0, ii(n0) = m0 + 1, (σ from m0 + 1) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, (σ from m0) to # lf(n0) ≠ lf(n0), ⌜# lf(n0).tail⌝ + ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
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⌝ + ⌜n⌝ ; (s) eqs: ⊦ m = n + n0 ∧ m = n + n1 → n0 = n1; (forward) from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| (# lf(n0).tail + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # lf(n0).tail + m0, ii(0) = 0, ii(n0) = m0 + 1, (σ from m0 + 1) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, (σ from m0) to # lf(n0) ≠ lf(n0), ⌜# lf(n0).tail⌝ + ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
⊦ ⌜n⌝ < # σ → σ from n = σ[n] + (σ from n + 1)
(# lf(n0).tail + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # lf(n0).tail + m0, ii(n0) = m0 + 1, ii(0) = 0, (σ from m0 + 1) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, σ[m0] + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜# lf(n0).tail⌝ + ⌜m0⌝ < # σ, ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic 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: m0, σ
| ⊦ ⌜n⌝ < # σ → σ from n = σ[n] + (σ from n + 1) |
| (# lf(n0).tail + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # lf(n0).tail + m0, ii(n0) = m0 + 1, ii(0) = 0, (σ from m0 + 1) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, σ[m0] + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜# lf(n0).tail⌝ + ⌜m0⌝ < # σ, ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
(# lf(n0).tail + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # lf(n0).tail + m0, ii(0) = 0, ii(n0) = m0 + 1, (σ from m0 + 1) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜m0⌝ < # σ, ⌜# lf(n0).tail⌝ + ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| (# lf(n0).tail + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # lf(n0).tail + m0, ii(0) = 0, ii(n0) = m0 + 1, (σ from m0 + 1) to # lf(n0).tail = lf(n0).tail, n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜m0⌝ < # σ, ⌜# lf(n0).tail⌝ + ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
(# x0 + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # x0 + m0, ii(n0) = m0 + 1, ii(0) = 0, lf(n0) = a + x0, (σ from m0 + 1) to # x0 = x0, lf(n0) ≠ [], n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜# x0⌝ + ⌜m0⌝ < # σ, ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ # [] = 0; (s) ⊦ σ to 0 = []; (s) ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: lf(n0), head, tail
| (# x0 + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # x0 + m0, ii(n0) = m0 + 1, ii(0) = 0, lf(n0) = a + x0, (σ from m0 + 1) to # x0 = x0, lf(n0) ≠ [], n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜# x0⌝ + ⌜m0⌝ < # σ, ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
(# x0 + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # x0 + m0, ii(0) = 0, ii(n0) = m0 + 1, lf(n0) = a ' + x0, (σ from m0 + 1) to # x0 = x0, lf(n0) ≠ [], n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜m0⌝ < # σ, ⌜# x0⌝ + ⌜m0⌝ < # σ, a ∈ lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| (# x0 + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # x0 + m0, ii(0) = 0, ii(n0) = m0 + 1, lf(n0) = a ' + x0, (σ from m0 + 1) to # x0 = x0, lf(n0) ≠ [], n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜m0⌝ < # σ, ⌜# x0⌝ + ⌜m0⌝ < # σ, a ∈ lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
(# x0 + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # x0 + m0, σ[ii((n0 - 1) + 1) - 1] = lf((n0 - 1) + 1).head, ii(n0) = m0 + 1, ii(0) = 0, lf(n0) = a ' + x0, (σ from m0 + 1) to # x0 = x0, lf(n0) ≠ [], n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜# x0⌝ + ⌜m0⌝ < # σ, ⌜m0⌝ < # σ, a ∈ lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used terms: n0 - 1
| (# x0 + m0) + 1 = ii(n0 + 1), m0 + # lf(n0) - 1 = # x0 + m0, σ[ii((n0 - 1) + 1) - 1] = lf((n0 - 1) + 1).head, ii(n0) = m0 + 1, ii(0) = 0, lf(n0) = a ' + x0, (σ from m0 + 1) to # x0 = x0, lf(n0) ≠ [], n0 ≠ 0, ⌜σ[m0] '⌝ + (σ from m0 + 1) to # lf(n0) ≠ lf(n0), ⌜# x0⌝ + ⌜m0⌝ < # σ, ⌜m0⌝ < # σ, a ∈ lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
Used simplifier rules: ⊦ m + 1 ≠ 0; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ n + 0 = n; (s) ⊦ (a ' + x).head = a; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ m +1 = m + 1; (s) ⊦ ⌜a '⌝ + σ to n + 1 = a + (σ to n); (s) ⊦ a + x = a ' + x; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n0, m1
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, ¬ (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n1 = 0 ⊃ 0;ii(n1) - 1) < (m = 0 ⊃ 0;ii(m) - 1), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n1 = 0 ⊃ 0;ii(n1) - 1) < (m = 0 ⊃ 0;ii(m) - 1), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < (m = 0 ⊃ 0;ii(m) - 1), m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: ⊦ m ≤ 0 ↔ m = 0; (s)
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < (m = 0 ⊃ 0;ii(m) - 1), m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n1 ≠ 0, ii(n1) - 1 < (m = 0 ⊃ 0;ii(m) - 1), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n1 ≠ 0, ii(n1) - 1 < (m = 0 ⊃ 0;ii(m) - 1), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < ii(m) - 1, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s) ⊦ ¬ n < 0; (s)
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < ii(m) - 1, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < ii(m) - 1, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < ii(m) - 1, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ii(n1) - 1 < ii(m) - 1, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, m ≤ n1 → ii(m) ≤ ii(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used terms: m, n1
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ii(n1) - 1 < ii(m) - 1, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m ≤ n1, m ≤ n1 → ii(m) ≤ ii(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < ii(m) - 1, m ≤ n1, ii(m) ≤ ii(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(n1) - 1 < ii(m) - 1, m ≤ n1, ii(m) ≤ ii(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n1) = m0 + 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n1) ≠ 0, m ≠ 0, n1 ≠ 0, m0 < ii(m) - 1, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(m) ≤ ii(n1), m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: ⊦ m ≤ 0 ↔ m = 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s) ⊦ ¬ n < n; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: ii(n1), m0
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n1) = m0 + 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n1) ≠ 0, m ≠ 0, n1 ≠ 0, m0 < ii(m) - 1, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ii(m) ≤ ii(n1), m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(m) = 0, ii(n1) = m0 + 1, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m0 < 0 - 1, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ 0 ≤ m; (s) ⊦ m < n → n ≠ 0; (s) le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat leprf: ⊦ m ≤ m - 1 → m = 0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ m + 1 ≠ 0; (s)
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(m) = 0, ii(n1) = m0 + 1, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, n1 ≠ 0, ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, m0 < 0 - 1, m ≤ n1, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
Used terms: m
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1))
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ¬ finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ n1. (n1 = 0 ⊃ 0;ii(n1) - 1) + 1 = ii(n) ∧ (∀ m. n1 ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n1 = 0 ⊃ 0;ii(n1) - 1))
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic 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 eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat 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⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜x⌝ [n] = x[n]; (s) ⊦ ⌜x⌝ to n = x to n; (s) ⊦ ⌜x⌝ from n = ⌜x from n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) ⊦ finp(⌜x⌝ ); (s) ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as)
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ n1. (n1 = 0 ⊃ 0;ii(n1) - 1) + 1 = ii(n) ∧ (∀ m. n1 ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n1 = 0 ⊃ 0;ii(n1) - 1)) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ (n = 0 ⊃ 0;ii(n) - 1) + 1 = ii(n) ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1))
Used terms: n
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ (n = 0 ⊃ 0;ii(n) - 1) + 1 = ii(n) ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ (n = 0 ⊃ 0;ii(n) - 1) + 1 = ii(n) ∧ (n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1))
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ (n = 0 ⊃ 0;ii(n) - 1) + 1 = ii(n) ∧ (n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n = 0 ⊃ 0;ii(n) - 1) + 1 ≠ ii(n), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n = 0 ⊃ 0;ii(n) - 1) + 1 ≠ ii(n), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ |
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < 1 ↔ m = 0; (s) ⊦ m < n → n ≠ 0; (s) n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
Used terms: m
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
Used simplifier rules: x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: lf(m), a, y
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ ii(n), n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
Used terms: m
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ ii(n), n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, (m = 0 ⊃ lf(0);lf(m).tail) = [], ii(m) = ii(n), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(n) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, (m = 0 ⊃ lf(0);lf(m).tail) = [], ii(m) = ii(n), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(n) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, lf(m).tail = [], ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = ii(n), lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(n) - 1) = (n = 0 ⊃ 0;ii(n) - 1)
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).last = lf(m + 1).head, lf(m).tail = [], ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = ii(n), lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ (m = 0 ⊃ 0;ii(n) - 1) = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).head = lf(m + 1).head, lf(m).tail = [], ii(m) = ii(n), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ ii(n) - 1 = (n = 0 ⊃ 0;ii(n) - 1)
Used simplifier rules: ⊦ x ≠ [] ∧ x.tail = [] → x.last = x.head; (s)
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).head = lf(m + 1).head, lf(m).tail = [], ii(m) = ii(n), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ ii(n) - 1 = (n = 0 ⊃ 0;ii(n) - 1) |
# x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).head = lf(m + 1).head, lf(m).tail = [], ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = ii(n), ii(n) = m0 + 1, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n) ≠ 0, lf(m) ≠ [], m ≠ 0, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: ii(n), m0
| # x = ii(n), ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).head = lf(m + 1).head, lf(m).tail = [], ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = ii(n), ii(n) = m0 + 1, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n) ≠ 0, lf(m) ≠ [], m ≠ 0, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 < ii(n), a ∈ lf(m), ii(n0 + 1) ≤ ii(n), n ≤ m, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ ii(n) < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0) |
# x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).head = lf(m + 1).head, lf(m).tail = [], ii(n) = m0 + 1, ii(m) = m0 + 1, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, a ∈ lf(m), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ii(n0 + 1) ≤ m0 + 1, n ≤ m, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0)
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 → (n < m ↔ false); (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + 1 ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s)
| # x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), lf(m).head = lf(m + 1).head, lf(m).tail = [], ii(n) = m0 + 1, ii(m) = m0 + 1, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, a ∈ lf(m), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ii(n0 + 1) ≤ m0 + 1, n ≤ m, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0) |
# x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), a0 = lf(m + 1).head, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = m0 + 1, ii(n) = m0 + 1, lf(m) = a ' + x0, lf(m) = a0 + x1, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), x1 = [], lf(m) ≠ [], m ≠ 0, a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ m0 + 1, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0)
Used simplifier rules: x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: lf(m), a0, y
| # x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), a0 = lf(m + 1).head, ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = m0 + 1, ii(n) = m0 + 1, lf(m) = a ' + x0, lf(m) = a0 + x1, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), x1 = [], lf(m) ≠ [], m ≠ 0, a ∈ lf(m), n ≤ m, ii(n0 + 1) ≤ m0 + 1, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0) |
# x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n) = m0 + 1, ii(m) = m0 + 1, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, lf(m) = lf(m + 1).head ', (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, a ∈ lf(m), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ii(n0 + 1) ≤ m0 + 1, n ≤ m, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ a + x = a ' + x; (s)
| # x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n) = m0 + 1, ii(m) = m0 + 1, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, lf(m) = a ' + x0, lf(m) = lf(m + 1).head ', (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), lf(m) ≠ [], m ≠ 0, a ∈ lf(m), (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ii(n0 + 1) ≤ m0 + 1, n ≤ m, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0) |
# x = m0 + 1, a ' + x0 = lf(m + 1).head ', ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = m0 + 1, ii(n) = m0 + 1, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), a ' + x0 ≠ [], m ≠ 0, a ∈ a ' + x0, n ≤ m, ii(n0 + 1) ≤ m0 + 1, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0)
| # x = m0 + 1, a ' + x0 = lf(m + 1).head ', ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = m0 + 1, ii(n) = m0 + 1, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), a ' + x0 ≠ [], m ≠ 0, a ∈ a ' + x0, n ≤ m, ii(n0 + 1) ≤ m0 + 1, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ x0 = [] ∧ m0 = (n = 0 ⊃ 0;m0) |
# x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = m0 + 1, ii(n) = m0 + 1, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, m0 ≠ (n = 0 ⊃ 0;m0), n ≤ m, ii(n0 + 1) ≤ m0 + 1, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ' + x ≠ []; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws)
| # x = m0 + 1, ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) = m0 + 1, ii(n) = m0 + 1, (x from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m ≠ 0, m0 ≠ (n = 0 ⊃ 0;m0), n ≤ m, ii(n0 + 1) ≤ m0 + 1, (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ≤ m0, ∀ n1. x[ii(n1 + 1) - 1] = lf(n1 + 1).head, ∀ n1. ii(n1 + 1) = ii(n1) + # (n1 = 0 ⊃ lf(0);lf(n1).tail) ∧ ¬ m0 + 1 < ii(n1 + 1) ∧ (x from ii(n1)) to # (n1 = 0 ⊃ lf(0);lf(n1).tail) = (n1 = 0 ⊃ lf(0);lf(n1).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
Used simplifier rules: ⊦ 0 ≤ m; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ⌜(n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1⌝ < # σ, ¬ finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ ⌜nf⌝ to n = nf to n; (s) ⊦ ⌜nf⌝ from n = ⌜nf from n⌝ ; (s) ⊦ ¬ ∞ < n∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ¬ finp(⌜nf⌝ ); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss)
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∃ m. ii(m) ≤ n2 + 1 ∧ n2 + 1 < ii(m + 1) ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1
Used terms: n2 + 1
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∃ m. ii(m) ≤ n2 + 1 ∧ n2 + 1 < ii(m + 1) ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) < ii(m + 1), n2 + 1 < ii(m + 1), ii(m) ≤ n2 + 1, ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(0) = 0, ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(m) < ii(m + 1), n2 + 1 < ii(m + 1), ii(m) ≤ n2 + 1, ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n2 + 1 < ii(m + 1), ii(m) < ii(m + 1), ii(m) ≤ n2 + 1, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head ⊦ (m = 0 ⊃ 0;ii(m) - 1) ≤ n2 ∧ n2 < ii(m + 1) - 1
Used terms: m
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n2 + 1 < ii(m + 1), ii(m) < ii(m + 1), ii(m) ≤ n2 + 1, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head ⊦ (m = 0 ⊃ 0;ii(m) - 1) ≤ n2 ∧ n2 < ii(m + 1) - 1 |
((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n2 < (m = 0 ⊃ 0;ii(m) - 1), n2 + 1 < ii(m + 1), ii(m) < ii(m + 1), ii(m) ≤ (m = 0 ⊃ 0;ii(m) - 1), ii(m) ≤ n2 + 1, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head ⊦
Used simplifier rules: ⊦ 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 le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) ⊦ m < 1 ↔ m = 0; (s)
| ((n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1) + 1 = ii(n0 + 1), ii(n0 + 1) = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, (nf from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), n2 < (m = 0 ⊃ 0;ii(m) - 1), n2 + 1 < ii(m + 1), ii(m) < ii(m + 1), ii(m) ≤ (m = 0 ⊃ 0;ii(m) - 1), ii(m) ≤ n2 + 1, ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ (nf from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. nf(ii(n + 1) - 1) = lf(n + 1).head ⊦ |
Used simplifier rules: ⊦ m ≤ 0 ↔ m = 0; (s) ⊦ ¬ n < 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < 1 ↔ m = 0; (s) n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: m
| m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m1 ≠ (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ m1 = (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1 ∧ (σ from (n0 = 0 ⊃ 0;ii(n0) - 1)) to # lf(n0) = lf(n0) ∧ (m ≤ n1 → (m = 0 ⊃ 0;ii(m) - 1) ≤ (n1 = 0 ⊃ 0;ii(n1) - 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜(n = 0 ⊃ 0;ii(n) - 1)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ (m = 0 ⊃ 0;ii(m) - 1) = (n = 0 ⊃ 0;ii(n) - 1)) ;∃ m0. (m0 = 0 ⊃ 0;ii(m0) - 1) ≤ n2 ∧ n2 < ii(m0 + 1) - 1 ) |
m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m1 ≠ (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
| m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m1 ≠ (n0 = 0 ⊃ 0;ii(n0) - 1) + # lf(n0) - 1, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m1 ≠ (ii(n0) - 1) + # lf(n0) - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: ⊦ σ from 0 = σ; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| m1 + 1 = ii(n0) + # (n0 = 0 ⊃ lf(0);lf(n0).tail), ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # (n0 = 0 ⊃ lf(0);lf(n0).tail) = (n0 = 0 ⊃ lf(0);lf(n0).tail), m1 ≠ (ii(n0) - 1) + # lf(n0) - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
m1 + 1 = ii(n0) + # lf(n0).tail, ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ (ii(n0) - 1) + # lf(n0) - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
| m1 + 1 = ii(n0) + # lf(n0).tail, ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ (ii(n0) - 1) + # lf(n0) - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
(ii(n0) - 1) + # lf(n0) = 0, m1 + 1 = ii(n0) + # lf(n0).tail, ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ (ii(n0) - 1) + # lf(n0) - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
m1 + 1 = ii(n0) + # lf(n0).tail, (ii(n0) - 1) + # lf(n0) = m0 + 1, ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, (ii(n0) - 1) + # lf(n0) ≠ 0, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: (ii(n0) - 1) + # lf(n0), m0
| (ii(n0) - 1) + # lf(n0) = 0, m1 + 1 = ii(n0) + # lf(n0).tail, ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ (ii(n0) - 1) + # lf(n0) - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
m1 + 1 = ii(n0) + # [].tail, ii(n0) - 1 = 0, ii(0) = 0, ii(n0 + 1) = m1 + 1, lf(n0) = [], (σ from ii(n0)) to # [].tail = [].tail, m1 ≠ 0 - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ # [] = 0; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws)
| m1 + 1 = ii(n0) + # [].tail, ii(n0) - 1 = 0, ii(0) = 0, ii(n0 + 1) = m1 + 1, lf(n0) = [], (σ from ii(n0)) to # [].tail = [].tail, m1 ≠ 0 - 1, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
Used terms: n0
| m1 + 1 = ii(n0) + # lf(n0).tail, (ii(n0) - 1) + # lf(n0) = m0 + 1, ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, (ii(n0) - 1) + # lf(n0) ≠ 0, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
m1 + 1 = ii(n0) + # lf(n0).tail, (ii(n0) - 1) + # lf(n0) = m0 + 1, ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| m1 + 1 = ii(n0) + # lf(n0).tail, (ii(n0) - 1) + # lf(n0) = m0 + 1, ii(0) = 0, ii(n0 + 1) = m1 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
(ii(n0) - 1) + # lf(n0) = m0 + 1, m1 + 1 = ii(n0) + # lf(n0).tail, ii(n0) = 0, ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
m2 + # lf(n0) = m0 + 1, m1 + 1 = ii(n0) + # lf(n0).tail, ii(n0 + 1) = m1 + 1, ii(0) = 0, ii(n0) = m2 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, ii(n0) ≠ 0, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: ii(n0), m2
| (ii(n0) - 1) + # lf(n0) = m0 + 1, m1 + 1 = ii(n0) + # lf(n0).tail, ii(n0) = 0, ii(n0 + 1) = m1 + 1, ii(0) = 0, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
(0 - 1) + # lf(n0) = m0 + 1, ii(n0) = 0, ii(n0 + 1) = m1 + 1, ii(0) = 0, σ to m1 + 1 = lf(n0).tail, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
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) ¬ # σ < ⌜n⌝ ⊦ #(σ 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 ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ σ from 0 = σ; (s) ⊦ n + 0 = n; (s)
| (0 - 1) + # lf(n0) = m0 + 1, ii(n0) = 0, ii(n0 + 1) = m1 + 1, ii(0) = 0, σ to m1 + 1 = lf(n0).tail, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
Used terms: n0
| m2 + # lf(n0) = m0 + 1, m1 + 1 = ii(n0) + # lf(n0).tail, ii(n0 + 1) = m1 + 1, ii(0) = 0, ii(n0) = m2 + 1, (σ from ii(n0)) to # lf(n0).tail = lf(n0).tail, ii(n0) ≠ 0, m1 ≠ m0, n0 ≠ 0, ⌜m1⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
m2 + # lf(n0) = m0 + 1, ii(n0) = m2 + 1, ii(0) = 0, ii(n0 + 1) = (m2 + # lf(n0).tail) + 1, (σ from m2 + 1) to # lf(n0).tail = lf(n0).tail, m2 + # lf(n0).tail ≠ m0, n0 ≠ 0, ⌜m2⌝ + ⌜# lf(n0).tail⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
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⌝ + ⌜n⌝ ; (s) ⊦ m + 1 ≠ 0; (s) ⊦ m + n = m + n0 ↔ n = n0; (s)
| m2 + # lf(n0) = m0 + 1, ii(n0) = m2 + 1, ii(0) = 0, ii(n0 + 1) = (m2 + # lf(n0).tail) + 1, (σ from m2 + 1) to # lf(n0).tail = lf(n0).tail, m2 + # lf(n0).tail ≠ m0, n0 ≠ 0, ⌜m2⌝ + ⌜# lf(n0).tail⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
m2 + # lf(n0) = m0 + 1, ii(n0 + 1) = (m2 + # lf(n0).tail) + 1, ii(0) = 0, ii(n0) = m2 + 1, lf(n0) = [], (σ from m2 + 1) to # lf(n0).tail = lf(n0).tail, m2 + # lf(n0).tail ≠ m0, n0 ≠ 0, ⌜m2⌝ + ⌜# lf(n0).tail⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
m2 + # lf(n0) = m0 + 1, ii(n0 + 1) = (m2 + # x0) + 1, ii(0) = 0, ii(n0) = m2 + 1, lf(n0) = a + x0, (σ from m2 + 1) to # x0 = x0, m2 + # x0 ≠ m0, lf(n0) ≠ [], n0 ≠ 0, ⌜m2⌝ + ⌜# x0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: lf(n0), head, tail
| m2 + # lf(n0) = m0 + 1, ii(n0 + 1) = (m2 + # lf(n0).tail) + 1, ii(0) = 0, ii(n0) = m2 + 1, lf(n0) = [], (σ from m2 + 1) to # lf(n0).tail = lf(n0).tail, m2 + # lf(n0).tail ≠ m0, n0 ≠ 0, ⌜m2⌝ + ⌜# lf(n0).tail⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
ii(n0) = 2 + m0, ii(0) = 0, ii(n0 + 1) = 2 + m0 + # [].tail, lf(n0) = [], (σ from 2 + m0) to # [].tail = [].tail, n0 ≠ 0, (⌜m0⌝ + ⌜1⌝ ) + ⌜# [].tail⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: 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 ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ m + 1 ≠ 0; (s) ⊦ m = m + n ↔ n = 0; (s) ⊦ n + 0 = n; (s) ⊦ # [] = 0; (s)
| ii(n0) = 2 + m0, ii(0) = 0, ii(n0 + 1) = 2 + m0 + # [].tail, lf(n0) = [], (σ from 2 + m0) to # [].tail = [].tail, n0 ≠ 0, (⌜m0⌝ + ⌜1⌝ ) + ⌜# [].tail⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
Used terms: n0
| m2 + # lf(n0) = m0 + 1, ii(n0 + 1) = (m2 + # x0) + 1, ii(0) = 0, ii(n0) = m2 + 1, lf(n0) = a + x0, (σ from m2 + 1) to # x0 = x0, m2 + # x0 ≠ m0, lf(n0) ≠ [], n0 ≠ 0, ⌜m2⌝ + ⌜# x0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head ⊦ |
m2 + # lf(n0) = m0 + 1, ii(n0) = m2 + 1, ii(0) = 0, ii(n0 + 1) = (m2 + # x0) + 1, lf(n0) = a ' + x0, (σ from m2 + 1) to # x0 = x0, m2 + # x0 ≠ m0, lf(n0) ≠ [], n0 ≠ 0, ⌜m2⌝ + ⌜# x0⌝ < # σ, a ∈ lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| m2 + # lf(n0) = m0 + 1, ii(n0) = m2 + 1, ii(0) = 0, ii(n0 + 1) = (m2 + # x0) + 1, lf(n0) = a ' + x0, (σ from m2 + 1) to # x0 = x0, m2 + # x0 ≠ m0, lf(n0) ≠ [], n0 ≠ 0, ⌜m2⌝ + ⌜# x0⌝ < # σ, a ∈ lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ |
Used simplifier rules: ⊦ #(a ' + x) = (# x)+1; (s) ⊦ m +1 = m + 1; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∀ n. σ[ii(n + 1) - 1] = lf(n + 1).head, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, σ[ii(n0 + 1) - 1] ≠ lf(n0 + 1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| ii(0) = 0, σ[ii(n0 + 1) - 1] ≠ lf(n0 + 1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, σ[ii(0 + 1) - 1] ≠ lf(0 + 1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
ii(0) = 0, σ[ii(n1 +1 + 1) - 1] ≠ lf(n1 +1 + 1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ ii, σ, lf, n. ii(0) = 0 ∧ σ[ii(n1 + 1) - 1] ≠ lf(n1 + 1).head ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ []) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ n. n ≠ 0 → ii(n) ≠ 0) → (∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: nat freely generated by 0, +1;;
| ii(0) = 0, σ[ii(0 + 1) - 1] ≠ lf(0 + 1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, σ[ii(1) - 1] ≠ lf(1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| ii(0) = 0, σ[ii(1) - 1] ≠ lf(1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, ii(0 + 1) = ii(0) + # (0 = 0 ⊃ lf(0);lf(0).tail), (σ from ii(0)) to # (0 = 0 ⊃ lf(0);lf(0).tail) = (0 = 0 ⊃ lf(0);lf(0).tail), σ[ii(1) - 1] ≠ lf(1).head, ¬ # σ < ⌜ii(0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: 0
| ii(0) = 0, ii(0 + 1) = ii(0) + # (0 = 0 ⊃ lf(0);lf(0).tail), (σ from ii(0)) to # (0 = 0 ⊃ lf(0);lf(0).tail) = (0 = 0 ⊃ lf(0);lf(0).tail), σ[ii(1) - 1] ≠ lf(1).head, ¬ # σ < ⌜ii(0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, ii(1) = # lf(0), σ to ii(1) = lf(0), σ[ii(1) - 1] ≠ lf(1).head, ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ σ from 0 = σ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s)
| ii(0) = 0, ii(1) = # lf(0), σ to ii(1) = lf(0), σ[ii(1) - 1] ≠ lf(1).head, ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(0 + 1).head, ii(1) = # lf(0), ii(0) = 0, σ to ii(1) = lf(0), σ[ii(1) - 1] ≠ lf(1).head, lf(0) ≠ [], ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: 0
| lf(0).last = lf(0 + 1).head, ii(1) = # lf(0), ii(0) = 0, σ to ii(1) = lf(0), σ[ii(1) - 1] ≠ lf(1).head, lf(0) ≠ [], ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(1).head, ii(0) = 0, ii(1) = # lf(0), σ to ii(1) = lf(0), σ[ii(1) - 1] ≠ lf(1).head, lf(0) ≠ [], ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| lf(0).last = lf(1).head, ii(0) = 0, ii(1) = # lf(0), σ to ii(1) = lf(0), σ[ii(1) - 1] ≠ lf(1).head, lf(0) ≠ [], ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(1).head, ii(1) = # lf(0), ii(0) = 0, ii(1) = m0 + 1, σ to ii(1) = lf(0), σ[m0] ≠ lf(1).head, ii(1) ≠ 0, lf(0) ≠ [], ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ # [] = 0; (s) ⊦ σ to 0 = []; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: ii(1), m0
| lf(0).last = lf(1).head, ii(1) = # lf(0), ii(0) = 0, ii(1) = m0 + 1, σ to ii(1) = lf(0), σ[m0] ≠ lf(1).head, ii(1) ≠ 0, lf(0) ≠ [], ¬ # σ < ⌜ii(1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
m0 + 1 = # lf(0), lf(0).last = lf(1).head, ii(0) = 0, ii(1) = m0 + 1, σ to m0 + 1 = lf(0), σ[m0] ≠ lf(1).head, lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ m + 1 ≠ 0; (s)
| m0 + 1 = # lf(0), lf(0).last = lf(1).head, ii(0) = 0, ii(1) = m0 + 1, σ to m0 + 1 = lf(0), σ[m0] ≠ lf(1).head, lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
m0 + 1 = # lf(0), lf(0).last = lf(1).head, ii(1) = m0 + 1, ii(0) = 0, lf(1) = [], σ to m0 + 1 = lf(0), σ[m0] ≠ lf(1).head, lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
m0 + 1 = # lf(0), lf(0).last = a, ii(1) = m0 + 1, ii(0) = 0, lf(1) = a + x0, σ to m0 + 1 = lf(0), σ[m0] ≠ a, lf(1) ≠ [], lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: lf(1), head, tail
| m0 + 1 = # lf(0), lf(0).last = lf(1).head, ii(1) = m0 + 1, ii(0) = 0, lf(1) = [], σ to m0 + 1 = lf(0), σ[m0] ≠ lf(1).head, lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
m0 + 1 = # lf(0), lf(0).last = [].head, ii(0) = 0, ii(1) = m0 + 1, lf(1) = [], σ to m0 + 1 = lf(0), σ[m0] ≠ [].head, lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| m0 + 1 = # lf(0), lf(0).last = [].head, ii(0) = 0, ii(1) = m0 + 1, lf(1) = [], σ to m0 + 1 = lf(0), σ[m0] ≠ [].head, lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
Used terms: 1
| m0 + 1 = # lf(0), lf(0).last = a, ii(1) = m0 + 1, ii(0) = 0, lf(1) = a + x0, σ to m0 + 1 = lf(0), σ[m0] ≠ a, lf(1) ≠ [], lf(0) ≠ [], ⌜m0⌝ < # σ, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
m0 + 1 = # lf(0), ii(0) = 0, ii(1) = m0 + 1, lf(1) = lf(0).last ' + x0, σ to m0 + 1 = lf(0), σ[m0] ≠ lf(0).last, lf(1) ≠ [], lf(0) ≠ [], ⌜m0⌝ < # σ, lf(0).last ∈ lf(1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| m0 + 1 = # lf(0), ii(0) = 0, ii(1) = m0 + 1, lf(1) = lf(0).last ' + x0, σ to m0 + 1 = lf(0), σ[m0] ≠ lf(0).last, lf(1) ≠ [], lf(0) ≠ [], ⌜m0⌝ < # σ, lf(0).last ∈ lf(1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
⌜n⌝ < # σ ⊦ σ to n + 1 = (σ to n) + σ[n] '
(σ to m0) + σ[m0] ' = lf(0), m0 + 1 = # lf(0), ii(1) = m0 + 1, ii(0) = 0, lf(1) = lf(0).last ' + x0, σ[m0] ≠ lf(0).last, lf(1) ≠ [], lf(0) ≠ [], ⌜m0⌝ < # σ, lf(0).last ∈ lf(1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: σ, m0
| ⌜n⌝ < # σ ⊦ σ to n + 1 = (σ to n) + σ[n] ' |
| (σ to m0) + σ[m0] ' = lf(0), m0 + 1 = # lf(0), ii(1) = m0 + 1, ii(0) = 0, lf(1) = lf(0).last ' + x0, σ[m0] ≠ lf(0).last, lf(1) ≠ [], lf(0) ≠ [], ⌜m0⌝ < # σ, lf(0).last ∈ lf(1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
Used simplifier rules: eq-03: ⊦ x = y + a ' ∧ x = z + a0 ' → a = a0 ∧ y = z; (forward) from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list a: ⊦ (x + y) + z = x + y + z; from specification list x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: lf(0), a, y
| ii(0) = 0, σ[ii(n1 +1 + 1) - 1] ≠ lf(n1 +1 + 1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ ii, σ, lf, n. ii(0) = 0 ∧ σ[ii(n1 + 1) - 1] ≠ lf(n1 + 1).head ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ []) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ n. n ≠ 0 → ii(n) ≠ 0) → (∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ ii, σ, lf, n. ii(0) = 0 ∧ σ[ii(n1 + 1) - 1] ≠ lf(n1 + 1).head ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ []) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ n. n ≠ 0 → ii(n) ≠ 0) → (∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m +1 = m + 1; (s)
| ii(0) = 0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ ii, σ, lf, n. ii(0) = 0 ∧ σ[ii(n1 + 1) - 1] ≠ lf(n1 + 1).head ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ []) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ n. n ≠ 0 → ii(n) ≠ 0) → (∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ii(0) = 0 ∧ σ[ii(n1 + 1) - 1] ≠ lf(n1 + 1).head ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ []) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ n. n ≠ 0 → ii(n) ≠ 0) → (∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: ii, σ, lf, n
| ii(0) = 0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ii(0) = 0 ∧ σ[ii(n1 + 1) - 1] ≠ lf(n1 + 1).head ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ []) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail)) ∧ (∀ n. n ≠ 0 → ii(n) ≠ 0) → (∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(0) = 0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(0) = 0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(0) = 0, ii((n1 + 1) + 1) = ii(n1 + 1) + # (n1 + 1 = 0 ⊃ lf(0);lf(n1 + 1).tail), (σ from ii(n1 + 1)) to # (n1 + 1 = 0 ⊃ lf(0);lf(n1 + 1).tail) = (n1 + 1 = 0 ⊃ lf(0);lf(n1 + 1).tail), σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii((n1 + 1) + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: n1 + 1
| σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(0) = 0, ii((n1 + 1) + 1) = ii(n1 + 1) + # (n1 + 1 = 0 ⊃ lf(0);lf(n1 + 1).tail), (σ from ii(n1 + 1)) to # (n1 + 1 = 0 ⊃ lf(0);lf(n1 + 1).tail) = (n1 + 1 = 0 ⊃ lf(0);lf(n1 + 1).tail), σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii((n1 + 1) + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(0) = 0, ii(2 + n1) = ii(n1 + 1) + # lf(n1 + 1).tail, (σ from ii(n1 + 1)) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(0) = 0, ii(2 + n1) = ii(n1 + 1) + # lf(n1 + 1).tail, (σ from ii(n1 + 1)) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(n1 + 1) = 0, ii(2 + n1) = ii(n1 + 1) + # lf(n1 + 1).tail, ii(0) = 0, (σ from ii(n1 + 1)) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
σ[m0] = lf(n1 + 1).head, ii(2 + n1) = ii(n1 + 1) + # lf(n1 + 1).tail, ii(0) = 0, ii(n1 + 1) = m0 + 1, (σ from ii(n1 + 1)) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ii(n1 + 1) ≠ 0, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: ii(n1 + 1), m0
| σ[ii(n1 + 1) - 1] = lf(n1 + 1).head, ii(n1 + 1) = 0, ii(2 + n1) = ii(n1 + 1) + # lf(n1 + 1).tail, ii(0) = 0, (σ from ii(n1 + 1)) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[0 - 1] = lf(n1 + 1).head, ii(0) = 0, ii(n1 + 1) = 0, σ to ii(2 + n1) = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = n; (s) ⊦ σ from 0 = σ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s)
| σ[0 - 1] = lf(n1 + 1).head, ii(0) = 0, ii(n1 + 1) = 0, σ to ii(2 + n1) = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
Used simplifier rules: ⊦ m + 1 ≠ 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n1 + 1
| σ[m0] = lf(n1 + 1).head, ii(2 + n1) = ii(n1 + 1) + # lf(n1 + 1).tail, ii(0) = 0, ii(n1 + 1) = m0 + 1, (σ from ii(n1 + 1)) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ii(n1 + 1) ≠ 0, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[m0] = lf(n1 + 1).head, ii(2 + n1) = (m0 + 1) + # lf(n1 + 1).tail, ii(0) = 0, ii(n1 + 1) = m0 + 1, (σ from m0 + 1) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| σ[m0] = lf(n1 + 1).head, ii(2 + n1) = (m0 + 1) + # lf(n1 + 1).tail, ii(0) = 0, ii(n1 + 1) = m0 + 1, (σ from m0 + 1) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[m0] = lf(n1 + 1).head, ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # lf(n1 + 1).tail, lf(n1 + 1) = [], (σ from m0 + 1) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
σ[m0] = a, ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = a + x0, (σ from m0 + 1) to # x0 = x0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, lf(n1 + 1) ≠ [], ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: lf(n1 + 1), head, tail
| σ[m0] = lf(n1 + 1).head, ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # lf(n1 + 1).tail, lf(n1 + 1) = [], (σ from m0 + 1) to # lf(n1 + 1).tail = lf(n1 + 1).tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
σ[m0] = [].head, ii(2 + n1) = (m0 + 1) + # [].tail, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(n1 + 1) = [], (σ from m0 + 1) to # [].tail = [].tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| σ[m0] = [].head, ii(2 + n1) = (m0 + 1) + # [].tail, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(n1 + 1) = [], (σ from m0 + 1) to # [].tail = [].tail, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
Used terms: n1 + 1
| σ[m0] = a, ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = a + x0, (σ from m0 + 1) to # x0 = x0, σ[ii(2 + n1) - 1] ≠ lf(2 + n1).head, lf(n1 + 1) ≠ [], ¬ # σ < ⌜ii(2 + n1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ lf(2 + n1).head, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
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⌝ + ⌜n⌝ ; (s) ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ lf(2 + n1).head, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = [], lf(n1 + 1) = σ[m0] ' + x0, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ lf(2 + n1).head, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = a + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ a, lf(2 + n1) ≠ [], lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: lf(2 + n1), head, tail
| ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = [], lf(n1 + 1) = σ[m0] ' + x0, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ lf(2 + n1).head, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = [], (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ [].head, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = [], (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ [].head, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
Used terms: 2 + n1
| ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = a + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ a, lf(2 + n1) ≠ [], lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = a ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ a, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ' + x ≠ []; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = a ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ a, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(n1 + 1).last = lf((n1 + 1) + 1).head, ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = a ' + x1, lf(n1 + 1) = σ[m0] ' + x0, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ a, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: n1 + 1
| lf(n1 + 1).last = lf((n1 + 1) + 1).head, ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = a ' + x1, lf(n1 + 1) = σ[m0] ' + x0, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ a, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = lf(n1 + 1).last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ lf(n1 + 1).last, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), lf(n1 + 1).last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ (a ' + x).head = a; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(n1 + 1) = σ[m0] ' + x0, lf(2 + n1) = lf(n1 + 1).last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ lf(n1 + 1).last, lf(n1 + 1) ≠ [], σ[m0] ∈ lf(n1 + 1), lf(n1 + 1).last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = (σ[m0] ' + x0).last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0] ' + x0 ≠ [], σ[m0 + # x0] ≠ (σ[m0] ' + x0).last, (σ[m0] ' + x0).last ∈ lf(2 + n1), σ[m0] ∈ σ[m0] ' + x0, ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = (σ[m0] ' + x0).last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0] ' + x0 ≠ [], σ[m0 + # x0] ≠ (σ[m0] ' + x0).last, (σ[m0] ' + x0).last ∈ lf(2 + n1), σ[m0] ∈ σ[m0] ' + x0, ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(2 + n1) = (σ[m0] ' + x0).last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ (σ[m0] ' + x0).last, (σ[m0] ' + x0).last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ' + x ≠ []; (s)
| ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(2 + n1) = (σ[m0] ' + x0).last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ (σ[m0] ' + x0).last, (σ[m0] ' + x0).last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
⊦ y ≠ [] → (x + y).last = y.last
ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = x0.last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ x0.last, x0 ≠ [], x0.last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ σ to 0 = []; (s) ⊦ # [] = 0; (s) ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a '.last = a; (s) Used terms: x0, σ[m0] '
| ⊦ y ≠ [] → (x + y).last = y.last |
| ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = x0.last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ x0.last, x0 ≠ [], x0.last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(2 + n1) = x0.last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ x0.last, x0 ≠ [], x0.last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = (m0 + 1) + # x0, lf(2 + n1) = x0.last ' + x1, (σ from m0 + 1) to # x0 = x0, σ[m0 + # x0] ≠ x0.last, x0 ≠ [], x0.last ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = a ' + x1, (σ from m0 + 1) to # x0 = x0, x0 = x2 + a ', σ[m0 + # x0] ≠ a, x0 ≠ [], a ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x0, a, y
| ii(2 + n1) = (m0 + 1) + # x0, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = a ' + x1, (σ from m0 + 1) to # x0 = x0, x0 = x2 + a ', σ[m0 + # x0] ≠ a, x0 ≠ [], a ∈ lf(2 + n1), ¬ # σ < ⌜m0⌝ + ⌜1⌝ + ⌜# x0⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = 2 + m0 + # x2, lf(2 + n1) = a ' + x1, (σ from m0 + 1) to # x2 + 1 = x2 + a ', σ[m0 + # x2 + 1] ≠ a, ¬ # σ < ⌜2⌝ + ⌜m0⌝ + ⌜# x2⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list 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 c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜(* n)⌝ + ⌜(* m)⌝ = ⌜n + m⌝ ; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ # a ' = 0 +1; (s) ⊦ #(x + y) = # x + # y; (s) ⊦ x + a ' ≠ []; (s)
| ii(n1 + 1) = m0 + 1, ii(0) = 0, ii(2 + n1) = 2 + m0 + # x2, lf(2 + n1) = a ' + x1, (σ from m0 + 1) to # x2 + 1 = x2 + a ', σ[m0 + # x2 + 1] ≠ a, ¬ # σ < ⌜2⌝ + ⌜m0⌝ + ⌜# x2⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. n ≠ 0 → ii(n) ≠ 0 ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
⌜n⌝ < # σ ⊦ σ to n + 1 = (σ to n) + σ[n] '
((σ from m0 + 1) to # x2) + (σ from m0 + 1)[# x2] ' = x2 + a ', ii(2 + n1) = 2 + m0 + # x2, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = a ' + x1, σ[m0 + # x2 + 1] ≠ a, ⌜# x2⌝ < #(σ from m0 + 1), ¬ # σ < ⌜2⌝ + ⌜m0⌝ + ⌜# x2⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ¬ m + n < m; (s) ⌜n⌝ < # σ ⊦ ⌜n0⌝ < #(σ from n) ↔ ⌜n0 + 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 lele-trans: ⊦ ¬ n∞1 < n∞ ∧ ¬ n∞2 < n∞1 → ¬ n∞2 < n∞; (forward) from specification nat-inf ⊦ m ≤ n → (⌜(* m)⌝ + n∞2 < ⌜(* n)⌝ + n∞1 ↔ n∞2 < ⌜n - m⌝ + n∞1); (s) ⊦ ⌜n⌝ + n∞1 < ⌜n⌝ + n∞2 ↔ n∞1 < n∞2; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < 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 Used terms: σ from m0 + 1, # x2
| ⌜n⌝ < # σ ⊦ σ to n + 1 = (σ to n) + σ[n] ' |
| ((σ from m0 + 1) to # x2) + (σ from m0 + 1)[# x2] ' = x2 + a ', ii(2 + n1) = 2 + m0 + # x2, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = a ' + x1, σ[m0 + # x2 + 1] ≠ a, ⌜# x2⌝ < #(σ from m0 + 1), ¬ # σ < ⌜2⌝ + ⌜m0⌝ + ⌜# x2⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(2 + n1) = 2 + m0 + # x2, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = (σ from m0 + 1)[# x2] ' + x1, (σ from m0 + 1) to # x2 = x2, σ[m0 + # x2 + 1] ≠ (σ from m0 + 1)[# x2], ⌜# x2⌝ + ⌜m0⌝ + ⌜1⌝ < # σ, (σ from m0 + 1)[# x2] ∈ lf(2 + n1), ¬ # σ < ⌜2⌝ + ⌜m0⌝ + ⌜# x2⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list 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⌝ < # σ ⊦ ⌜n0⌝ < #(σ from n) ↔ ⌜n0 + 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; (s) ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ m ≤ n → (⌜(* m)⌝ + n∞2 < ⌜(* n)⌝ + n∞1 ↔ n∞2 < ⌜n - m⌝ + n∞1); (s) lele-trans: ⊦ ¬ n∞1 < n∞ ∧ ¬ n∞2 < n∞1 → ¬ n∞2 < n∞; (forward) from specification nat-inf ⊦ x + a ' = y + a0 ' ↔ x = y ∧ a = a0; (ws)
| ii(2 + n1) = 2 + m0 + # x2, ii(0) = 0, ii(n1 + 1) = m0 + 1, lf(2 + n1) = (σ from m0 + 1)[# x2] ' + x1, (σ from m0 + 1) to # x2 = x2, σ[m0 + # x2 + 1] ≠ (σ from m0 + 1)[# x2], ⌜# x2⌝ + ⌜m0⌝ + ⌜1⌝ < # σ, (σ from m0 + 1)[# x2] ∈ lf(2 + n1), ¬ # σ < ⌜2⌝ + ⌜m0⌝ + ⌜# x2⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. n ≠ 0 → ii(n) ≠ 0, ∀ m, n. m ≤ n → ii(m) ≤ ii(n) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
⊦ ⌜n⌝ + ⌜m⌝ < # σ → (σ from n)[m] = σ[n + m]
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜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 Used terms: σ, m0 + 1, # x2
| ⊦ ⌜n⌝ + ⌜m⌝ < # σ → (σ from n)[m] = σ[n + m] |
| ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∀ n. n ≠ 0 → ii(n) ≠ 0, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(n0) = 0, ii(0) = 0, n0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| ii(n0) = 0, ii(0) = 0, n0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, ii(n0) = 0, ii((n0 - 1) + 1) = ii(n0 - 1) + # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), (σ from ii(n0 - 1)) to # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail) = (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), n0 ≠ 0, ¬ # σ < ⌜ii((n0 - 1) + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: n0 - 1
| ii(0) = 0, ii(n0) = 0, ii((n0 - 1) + 1) = ii(n0 - 1) + # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), (σ from ii(n0 - 1)) to # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail) = (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), n0 ≠ 0, ¬ # σ < ⌜ii((n0 - 1) + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii((n0 - 1) + 1) = ii(n0 - 1) + # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), ii(n0) = 0, ii(0) = 0, (σ from ii(n0 - 1)) to # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail) = (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), n0 ≠ 0, ¬ # σ < ⌜ii((n0 - 1) + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| ii((n0 - 1) + 1) = ii(n0 - 1) + # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), ii(n0) = 0, ii(0) = 0, (σ from ii(n0 - 1)) to # (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail) = (n0 - 1 = 0 ⊃ lf(0);lf(n0 - 1).tail), n0 ≠ 0, ¬ # σ < ⌜ii((n0 - 1) + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, ii(n0) = 0, ii(m0 + 1) = ii(m0) + # (m0 = 0 ⊃ lf(0);lf(m0).tail), n0 = m0 + 1, (σ from ii(m0)) to # (m0 = 0 ⊃ lf(0);lf(m0).tail) = (m0 = 0 ⊃ lf(0);lf(m0).tail), n0 ≠ 0, ¬ # σ < ⌜ii(m0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n0, m0
| ii(0) = 0, ii(n0) = 0, ii(m0 + 1) = ii(m0) + # (m0 = 0 ⊃ lf(0);lf(m0).tail), n0 = m0 + 1, (σ from ii(m0)) to # (m0 = 0 ⊃ lf(0);lf(m0).tail) = (m0 = 0 ⊃ lf(0);lf(m0).tail), n0 ≠ 0, ¬ # σ < ⌜ii(m0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
(m0 = 0 ⊃ lf(0);lf(m0).tail) = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: ⊦ σ to 0 = []; (s) ⊦ # [] = 0; (s) ⊦ σ from 0 = σ; (s) ⊦ ¬ n∞ < ⌜0⌝ ; (s) 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 + n = 0 ↔ m = 0 ∧ n = 0; (ws) ⊦ m + 1 ≠ 0; (s)
| (m0 = 0 ⊃ lf(0);lf(m0).tail) = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) = [], m0 = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) = [], m0 = 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
ii(1) = 0, ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m ≠ 0 → [] = lf(m).tail) ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ [];lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ [];lf(n).tail) = (n = 0 ⊃ [];lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| ii(1) = 0, ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m ≠ 0 → [] = lf(m).tail) ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ [];lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ [];lf(n).tail) = (n = 0 ⊃ [];lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
Used terms: 0
| lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(m0).tail = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
| lf(m0).tail = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(0 + 1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: 0
| lf(0).last = lf(0 + 1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(1).head, lf(m0).tail = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| lf(0).last = lf(1).head, lf(m0).tail = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(1).head, lf(0).last = lf(0 + 1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: 0
| lf(0).last = lf(1).head, lf(0).last = lf(0 + 1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(1).head, lf(m0).tail = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| lf(0).last = lf(1).head, lf(m0).tail = [], ii(m0) = 0, ii(m0 + 1) = 0, ii(0) = 0, lf(0) ≠ [], m0 ≠ 0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [] ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) ≠ [], m0 ≠ 0, 1 ≤ m0 → ii(1) ≤ ii(m0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used terms: 1, m0
| lf(0).last = lf(1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, lf(0) ≠ [], m0 ≠ 0, 1 ≤ m0 → ii(1) ≤ ii(m0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
lf(0).last = lf(1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, ii(1) = 0, lf(0) ≠ [], m0 ≠ 0, 1 ≤ m0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1))
Used simplifier rules: not-zero: 0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward) from specification nat ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m ≤ 0 ↔ m = 0; (s)
| lf(0).last = lf(1).head, lf(m0).tail = [], ii(0) = 0, ii(m0 + 1) = 0, ii(m0) = 0, ii(1) = 0, lf(0) ≠ [], m0 ≠ 0, 1 ≤ m0, (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → (m = 0 ⊃ lf(0);lf(m).tail) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. lf(n).last = lf(n + 1).head ∧ lf(n) ≠ [], ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # (n = 0 ⊃ lf(0);lf(n).tail) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ (σ from ii(n)) to # (n = 0 ⊃ lf(0);lf(n).tail) = (n = 0 ⊃ lf(0);lf(n).tail) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) - 1 ∧ ⌜ii(n + 1)⌝ < # σ ∧ (σ from ii(n)) to # lf(n) = lf(n)) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ + ⌜1⌝ ∧ (∀ m. n ≤ m → lf(m).tail = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) |
Used simplifier rules: ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ # x = 0 ↔ x = []; (s) Used terms: 0
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.