| ∀ x. x ⊑ nextli(x) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
∀ x. x ⊑ nextli(x), ∀ x. ∃ y. nextli(x) = x + y ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
∀ x. x ⊑ nextli(x) ⊦ ∀ x. ∃ y. nextli(x) = x + y, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
Used formulas: ∀ x. ∃ y. nextli(x) = x + y
| ∀ x. x ⊑ nextli(x), ∀ x. ∃ y. nextli(x) = x + y ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
∀ x. ∃ y. nextli(x) = x + y ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
| ∀ x. ∃ y. nextli(x) = x + y ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
| ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
⊦ ∃ lf. lf(0) = [] ∧ (∀ n. lf(n + 1) = nextli(lf(n)))
∀ x0. nextli(x0) = x0 + nextli0(x0), ∃ lf. lf(0) = [] ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
Used terms: nextli
| ⊦ ∃ lf. lf(0) = [] ∧ (∀ n. lf(n + 1) = nextli(lf(n))) |
| ∀ x0. nextli(x0) = x0 + nextli0(x0), ∃ lf. lf(0) = [] ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
lf(0) = [], ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
| lf(0) = [], ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# 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))
lf(0) = [], ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
Used terms: λ n. nextli0(lf(n))
| ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # lf(n) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# 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)) |
| lf(0) = [], ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
| ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
Used terms: σ, ii
| ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1))
| ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)) |
ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1))
ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ ∀ n0. lf(n0) = σ.take(ii(n0)), ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1))
Used formulas: ∀ n0. lf(n0) = σ.take(ii(n0))
| ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)) |
ii(0) = 0, lf(0) = [], # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
ii(0) = 0, lf(0) = [], σ.take(ii(n0 + 1)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1))
ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1))
| ii(0) = 0, lf(0) = [], # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(0) = 0, lf(0) = [], # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
| ii(0) = 0, lf(0) = [], # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
Used terms: n0
| ii(0) = 0, lf(0) = [], σ.take(ii(n0 + 1)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(0) = 0, lf(0) = [], lf(n0 + 1) = σ.take(ii(n0 + 1)), σ.take(ii(n0 + 1)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
Used terms: n0 + 1
| ii(0) = 0, lf(0) = [], lf(n0 + 1) = σ.take(ii(n0 + 1)), σ.take(ii(n0 + 1)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(0) = 0, lf(n0 + 1) = σ.take(ii(n0 + 1)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), σ.take(ii(n0 + 1)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used terms: n0
| ii(0) = 0, lf(n0 + 1) = σ.take(ii(n0 + 1)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), σ.take(ii(n0 + 1)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(0) = 0, lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], nextli(lf(n0)) = σ.take(ii(n0 + 1)), nextli(lf(n0)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
| ii(0) = 0, lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], nextli(lf(n0)) = σ.take(ii(n0 + 1)), nextli(lf(n0)) ≠ nextli(σ.take(ii(n0))), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
Used terms: n0
| ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) |
# σ = ⌜ii(n0)⌝ , ii(0) = 0, lf(0) = [], ii(n0) ≠ ii(n0 + 1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
ii(0) = 0, lf(0) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ ii(n0) < ii(n0 + 1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
| # σ = ⌜ii(n0)⌝ , ii(0) = 0, lf(0) = [], ii(n0) ≠ ii(n0 + 1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
# σ = ⌜ii(n0)⌝ , ii(0) = 0, lf(0) = [], ii(n0) ≠ ii(n0 + 1), (finp(σ) ⊃ ii(n0) = ii(n) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ σ.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s)
| # σ = ⌜ii(n0)⌝ , ii(0) = 0, lf(0) = [], ii(n0) ≠ ii(n0 + 1), (finp(σ) ⊃ ii(n0) = ii(n) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ σ.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)) ⊦ |
Used simplifier rules: ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (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 Used terms: n0
| ii(0) = 0, lf(0) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ ii(n0) < ii(n0 + 1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(0) = 0, lf(0) = [], # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| ii(0) = 0, lf(0) = [], # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
Used terms: n0
| ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
| ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
# nextli0(lf(n0)) = 0, ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # nextli0(lf(n0)) ≠ 0, # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
Used formulas: # nextli0(lf(n0)) = 0
| # nextli0(lf(n0)) = 0, ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
Used simplifier rules: 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; (s) ⊦ m ≤ m; (s) ⊦ σ.take(0) = []; (s) ⊦ # x = 0 ↔ x = []; (s)
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0)
Used formulas: ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0)
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦ |
# σ = ⌜ii(n)⌝ , ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , finp(σ), ¬ # σ < ⌜ii(n0)⌝ , ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n) ⊦
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , ¬ finp(σ), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦
| # σ = ⌜ii(n)⌝ , ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , finp(σ), ¬ # σ < ⌜ii(n0)⌝ , ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n) ⊦ |
# x = ii(n), ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ii(n) ≠ ii(n0), ii(n0) < ii(n), ∀ n1. lf(n1) = x.take(ii(n1)), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜x⌝ .take(n) = x.take(n); (s) ⊦ ⌜x⌝ .drop(n) = ⌜x.drop(n)⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as)
| # x = ii(n), ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ii(n) ≠ ii(n0), ii(n0) < ii(n), ∀ n1. lf(n1) = x.take(ii(n1)), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦ |
# x = ii(n), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ii(n) ≠ ii(n0), ii(n0) < ii(n), n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)), ∀ n1. lf(n1) = x.take(ii(n1)) ⊦
Used terms: n0
| # x = ii(n), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ii(n) ≠ ii(n0), ii(n0) < ii(n), n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)), ∀ n1. lf(n1) = x.take(ii(n1)) ⊦ |
# x = ii(n), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ii(n) ≠ ii(n0), n0 < n, ii(n0) < ii(n), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)), ∀ n1. lf(n1) = x.take(ii(n1)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # x = ii(n), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ii(n) ≠ ii(n0), n0 < n, ii(n0) < ii(n), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)), ∀ n1. lf(n1) = x.take(ii(n1)) ⊦ |
Used terms: n
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , ¬ finp(σ), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ⊦ |
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. lf(n) = nf.take(ii(n)) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ .take(n) = nf.take(n); (s) ⊦ ⌜nf⌝ .drop(n) = ⌜nf.drop(n)⌝ ; (s) ⊦ ¬ ∞ < n∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss)
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. lf(n) = nf.take(ii(n)) ⊦ |
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ∀ n. lf(n) = nf.take(ii(n)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∃ m. ii(m) ≤ ii(n0) + 1 ∧ ii(n0) + 1 < ii(m + 1) ⊦
Used terms: ii(n0) + 1
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ∀ n. lf(n) = nf.take(ii(n)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∃ m. ii(m) ≤ ii(n0) + 1 ∧ ii(n0) + 1 < ii(m + 1) ⊦ |
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ii(m) < ii(m + 1), ii(n0) + 1 < ii(m + 1), ii(m) ≤ ii(n0) + 1, ∀ n. lf(n) = nf.take(ii(n)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦
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
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ii(m) < ii(m + 1), ii(n0) + 1 < ii(m + 1), ii(m) ≤ ii(n0) + 1, ∀ n. lf(n) = nf.take(ii(n)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦ |
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ii(n0) + 1 < ii(m + 1), ii(m) < ii(m + 1), ii(m) ≤ ii(n0) + 1, m + 1 ≤ n0 → ii(m + 1) ≤ ii(n0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. lf(n) = nf.take(ii(n)) ⊦
Used terms: m + 1, n0
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], ii(n0) + 1 < ii(m + 1), ii(m) < ii(m + 1), ii(m) ≤ ii(n0) + 1, m + 1 ≤ n0 → ii(m + 1) ≤ ii(n0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. lf(n) = nf.take(ii(n)) ⊦ |
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ii(n0) < ii(m + 1), ii(m) < ii(m + 1), ii(n0) + 1 < ii(m + 1), n0 ≤ m, ii(m) ≤ ii(n0) + 1, ∀ n. lf(n) = nf.take(ii(n)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (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 lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ¬ m + n < m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m + 1 ≤ n ↔ m < n; (s)
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], ii(n0) < ii(m + 1), ii(m) < ii(m + 1), ii(n0) + 1 < ii(m + 1), n0 ≤ m, ii(m) ≤ ii(n0) + 1, ∀ n. lf(n) = nf.take(ii(n)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) ⊦ |
Used simplifier rules: ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m ≤ n → (n < m ↔ false); (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m.+1 < n0; (forward) from specification nat-basic trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ m.+1 = m + 1; (s) ⊦ m + m0 < n → ¬ n + n0 < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: m + 1
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∀ m. n0 < m → ii(m) = ii(n0) ∧ lf(m) = lf(n0) |
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m) = ii(n0) ∧ lf(m) = lf(n0)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m) = ii(n0) ∧ lf(m) = lf(n0) |
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m0.+1, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ ii, n0, lf, nextli0, σ, n, nextli. ii(n0 + 1) = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ # σ ≠ ⌜ii(n0)⌝ ∧ n0 < m0 ∧ ¬ # σ < ⌜ii(n0)⌝ ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n0. lf(n0) = σ.take(ii(n0))) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0) ⊦ ii(m0.+1) = ii(n0) ∧ lf(m0.+1) = lf(n0)
Used simplifier rules: Nat freely generated by 0, +1; ⊦ ¬ n < 0; (s)
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m0.+1, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ ii, n0, lf, nextli0, σ, n, nextli. ii(n0 + 1) = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ # σ ≠ ⌜ii(n0)⌝ ∧ n0 < m0 ∧ ¬ # σ < ⌜ii(n0)⌝ ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n0. lf(n0) = σ.take(ii(n0))) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0) ⊦ ii(m0.+1) = ii(n0) ∧ lf(m0.+1) = lf(n0) |
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ ii, n0, lf, nextli0, σ, n, nextli. ii(n0 + 1) = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ # σ ≠ ⌜ii(n0)⌝ ∧ n0 < m0 ∧ ¬ # σ < ⌜ii(n0)⌝ ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n0. lf(n0) = σ.take(ii(n0))) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0)
Used simplifier rules: ⊦ m.+1 = m + 1; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ ii, n0, lf, nextli0, σ, n, nextli. ii(n0 + 1) = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ # σ ≠ ⌜ii(n0)⌝ ∧ n0 < m0 ∧ ¬ # σ < ⌜ii(n0)⌝ ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n0. lf(n0) = σ.take(ii(n0))) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0) |
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , ii(n0 + 1) = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ # σ ≠ ⌜ii(n0)⌝ ∧ n0 < m0 ∧ ¬ # σ < ⌜ii(n0)⌝ ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n0. lf(n0) = σ.take(ii(n0))) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0)
Used terms: ii, n0, lf, nextli0, σ, n, nextli
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , ii(n0 + 1) = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ # σ ≠ ⌜ii(n0)⌝ ∧ n0 < m0 ∧ ¬ # σ < ⌜ii(n0)⌝ ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ n0. lf(n0) = σ.take(ii(n0))) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0) |
ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , n0 < m0 → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0)
| ii(n0 + 1) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , n0 < m0 → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0) |
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m0, n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , n0 < m0 → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0)
ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , n0 < m0 → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0)
Used formulas: n0 < m0
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m0, n0 ≤ m0, ¬ # σ < ⌜ii(n0)⌝ , n0 < m0 → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0) |
ii(m0) = ii(n0), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(m0) = lf(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → m ≤ n; (s)
| ii(m0) = ii(n0), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(m0) = lf(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0) |
ii(n0 + 1) = ii(n0), ii(0) = 0, ii(m0) = ii(n0), ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(0) = [], lf(m0) = lf(n0), nextli0(lf(n0)) = [], σ.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), # σ ≠ ⌜ii(n0)⌝ , n0 < m0, ¬ # σ < ⌜ii(m0 + 1)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0)
Used terms: m0
| ii(n0 + 1) = ii(n0), ii(0) = 0, ii(m0) = ii(n0), ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(0) = [], lf(m0) = lf(n0), nextli0(lf(n0)) = [], σ.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), # σ ≠ ⌜ii(n0)⌝ , n0 < m0, ¬ # σ < ⌜ii(m0 + 1)⌝ , ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0) |
ii(n0 + 1) = ii(n0), ii(0) = 0, ii(m0) = ii(n0), ii(m0 + 1) = ii(n0), lf(0) = [], lf(m0) = lf(n0), nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , lf(m0 + 1) ≠ lf(n0), n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used simplifier rules: ⊦ σ.take(0) = []; (s) ⊦ # [] = 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(n0 + 1) = ii(n0), ii(0) = 0, ii(m0) = ii(n0), ii(m0 + 1) = ii(n0), lf(0) = [], lf(m0) = lf(n0), nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , lf(m0 + 1) ≠ lf(n0), n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(m0 + 1) = ii(n0), ii(m0) = ii(n0), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(m0) = lf(n0), lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , lf(m0 + 1) ≠ lf(n0), n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
Used terms: m0
| ii(m0 + 1) = ii(n0), ii(m0) = ii(n0), ii(0) = 0, ii(n0 + 1) = ii(n0), lf(m0) = lf(n0), lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , lf(m0 + 1) ≠ lf(n0), n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(n0 + 1) = ii(n0), ii(0) = 0, ii(m0) = ii(n0), ii(m0 + 1) = ii(n0), lf(m0 + 1) = nextli(lf(n0)), lf(0) = [], lf(m0) = lf(n0), nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , nextli(lf(n0)) ≠ lf(n0), n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
| ii(n0 + 1) = ii(n0), ii(0) = 0, ii(m0) = ii(n0), ii(m0 + 1) = ii(n0), lf(m0 + 1) = nextli(lf(n0)), lf(0) = [], lf(m0) = lf(n0), nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , nextli(lf(n0)) ≠ lf(n0), n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: lf(n0)
| ii(0) = 0, ii(n0 + 1) = ii(n0), lf(0) = [], nextli0(lf(n0)) = [], # σ ≠ ⌜ii(n0)⌝ , n0 ≤ m0, ¬ n0 < m0, ¬ # σ < ⌜ii(n0)⌝ , n0 < m0 → ii(m0) = ii(n0) ∧ lf(m0) = lf(n0), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ii(m0 + 1) = ii(n0) ∧ lf(m0 + 1) = lf(n0) |
ii(0) = 0, ii(m0 + 1) = ii(m0), lf(0) = [], nextli0(lf(m0)) = [], # σ ≠ ⌜ii(m0)⌝ , lf(m0 + 1) ≠ lf(m0), ¬ # σ < ⌜ii(m0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
Used simplifier rules: ⊦ ¬ n < n; (s) ⊦ m ≤ m; (s) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| ii(0) = 0, ii(m0 + 1) = ii(m0), lf(0) = [], nextli0(lf(m0)) = [], # σ ≠ ⌜ii(m0)⌝ , lf(m0 + 1) ≠ lf(m0), ¬ # σ < ⌜ii(m0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(m0 + 1) = ii(m0), ii(0) = 0, lf(0) = [], lf(m0 + 1) = σ.take(ii(m0 + 1)), nextli0(lf(m0)) = [], # σ ≠ ⌜ii(m0)⌝ , lf(m0 + 1) ≠ lf(m0), ¬ # σ < ⌜ii(m0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used terms: m0 + 1
| ii(m0 + 1) = ii(m0), ii(0) = 0, lf(0) = [], lf(m0 + 1) = σ.take(ii(m0 + 1)), nextli0(lf(m0)) = [], # σ ≠ ⌜ii(m0)⌝ , lf(m0 + 1) ≠ lf(m0), ¬ # σ < ⌜ii(m0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(0) = 0, ii(m0 + 1) = ii(m0), lf(m0 + 1) = σ.take(ii(m0)), lf(0) = [], nextli0(lf(m0)) = [], # σ ≠ ⌜ii(m0)⌝ , σ.take(ii(m0)) ≠ lf(m0), ¬ # σ < ⌜ii(m0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦
| ii(0) = 0, ii(m0 + 1) = ii(m0), lf(m0 + 1) = σ.take(ii(m0)), lf(0) = [], nextli0(lf(m0)) = [], # σ ≠ ⌜ii(m0)⌝ , σ.take(ii(m0)) ≠ lf(m0), ¬ # σ < ⌜ii(m0)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
Used terms: m0
| ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # nextli0(lf(n0)) ≠ 0, # σ ≠ ⌜ii(n0)⌝ , ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ |
ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , nextli0(lf(n0)) ≠ [], ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s)
| ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), # σ ≠ ⌜ii(n0)⌝ , nextli0(lf(n0)) ≠ [], ii(n0 + 1) ≤ ii(n0), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
Used simplifier rules: ⊦ m + m0 ≤ m ↔ m0 = 0; (s) ⊦ # x = 0 ↔ x = []; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n0. lf(n0) = σ.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)) |
ii(0) = 0, lf(0) = [], finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)))
ii(0) = 0, lf(0) = [], ¬ finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)
| ii(0) = 0, lf(0) = [], finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)))
Used simplifier rules: ⊦ ⌜x⌝ = ⌜x0⌝ ↔ x = x0; (s) ⊦ ⌜x⌝ .l = x; (s) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜x⌝ .take(n) = x.take(n); (s) ⊦ ⌜x⌝ .drop(n) = ⌜x.drop(n)⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ finp(⌜x⌝ ); (s) ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as)
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)))
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)))
Used formulas: ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)))
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)))
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))), ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used formulas: ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)))
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)))
Used terms: n0
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used terms: x
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used terms: n0
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), n ≤ n0, n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
# x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), ¬ n ≤ n0, n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used formulas: n ≤ n0
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), n ≤ n0, n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# x = ii(n), ii(0) = 0, ii(n0) = ii(n), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))
| # x = ii(n), ii(0) = 0, ii(n0) = ii(n), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)) |
# x = ii(n), ii(n0) = ii(n), ii(0) = 0, ii(n + 1) = ii(n) + # nextli0(lf(n)), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], x.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), n ≤ n0, ¬ ii(n) < ii(n + 1), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))
Used terms: n
| # x = ii(n), ii(n0) = ii(n), ii(0) = 0, ii(n + 1) = ii(n) + # nextli0(lf(n)), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], x.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), n ≤ n0, ¬ ii(n) < ii(n + 1), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)) |
# x = ii(n), ii(n + 1) = ii(n) + # nextli0(lf(n)), ii(0) = 0, ii(n0) = ii(n), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], x.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), n ≤ n0, ii(n + 1) ≤ ii(n), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # x = ii(n), ii(n + 1) = ii(n) + # nextli0(lf(n)), ii(0) = 0, ii(n0) = ii(n), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], x.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), n ≤ n0, ii(n + 1) ≤ ii(n), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)) |
# x = ii(n), ii(n0) = ii(n), ii(0) = 0, ii(n + 1) = ii(n) + # nextli0(lf(n)), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], x.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ii(n + 1) ≤ ii(n), n ≤ n0, n ≤ n + 1 → ii(n) ≤ ii(n + 1), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))
Used terms: n, n + 1
| # x = ii(n), ii(n0) = ii(n), ii(0) = 0, ii(n + 1) = ii(n) + # nextli0(lf(n)), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], x.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ii(n + 1) ≤ ii(n), n ≤ n0, n ≤ n + 1 → ii(n) ≤ ii(n + 1), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)) |
# x = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))
Used simplifier rules: ⊦ x.take(0) = []; (s) ⊦ # [] = 0; (s) ⊦ m ≤ m; (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 = m + n ↔ n = 0; (s) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) ⊦ m ≤ m + n; (s)
| # x = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(x) = x + nextli0(x), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)) |
# x = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], lf(n) = x.take(ii(n)), nextli(x) = x + nextli0(x), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n ≤ n0, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))
Used terms: n
| # x = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], lf(n) = x.take(ii(n)), nextli(x) = x + nextli0(x), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n ≤ n0, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ # x = n → x.take(n) = x; (s)
| # lf(n) = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ (n0 ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], ii(m) ≠ ii(n), n ≤ n0, n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦
# lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n ≤ n0, ¬ ii(m) < ii(m + 1), ¬ n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦
| # lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], ii(m) ≠ ii(n), n ≤ n0, n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ |
# lf(n) = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], ii(m) ≠ ii(n), n0 ≤ m, n ≤ n0, n ≤ m, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat
| # lf(n) = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], ii(m) ≠ ii(n), n0 ≤ m, n ≤ n0, n ≤ m, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ |
Used terms: m
| # lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n ≤ n0, ¬ ii(m) < ii(m + 1), ¬ n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ |
# lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], m < n0, ii(m + 1) ≤ ii(m), n ≤ n0, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], m < n0, ii(m + 1) ≤ ii(m), n ≤ n0, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ |
# lf(n) = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], m < n0, n ≤ n0, ii(m + 1) ≤ ii(m), m ≤ m + 1 → ii(m) ≤ ii(m + 1), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦
Used terms: m, m + 1
| # lf(n) = ii(n), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], m < n0, n ≤ n0, ii(m + 1) ≤ ii(m), m ≤ m + 1 → ii(m) ≤ ii(m + 1), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ |
# lf(n) = ii(n), ii(m + 1) = ii(m), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], m < n0, n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| # lf(n) = ii(n), ii(m + 1) = ii(m), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], m < n0, n ≤ n0, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ |
# lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, ii(m + 1) = ii(m), ii(m + 1) = ii(m) + # nextli0(lf(m)), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], lf(n).drop(ii(m)).take(# nextli0(lf(m))) = nextli0(lf(m)), m < n0, n ≤ n0, ¬ ii(n) < ii(m + 1), ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦
Used terms: m
| # lf(n) = ii(n), ii(n + 1) = ii(n), ii(n0) = ii(n), ii(0) = 0, ii(m + 1) = ii(m), ii(m + 1) = ii(m) + # nextli0(lf(m)), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], lf(n).drop(ii(m)).take(# nextli0(lf(m))) = nextli0(lf(m)), m < n0, n ≤ n0, ¬ ii(n) < ii(m + 1), ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ |
# lf(n) = ii(n), ii(m + 1) = ii(m), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], nextli0(lf(m)) = [], m < n0, n ≤ n0, ii(m) ≤ ii(n), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦
Used simplifier rules: ⊦ x.take(0) = []; (s) ⊦ # [] = 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 = m + n ↔ n = 0; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # lf(n) = ii(n), ii(m + 1) = ii(m), ii(0) = 0, ii(n0) = ii(n), ii(n + 1) = ii(n), lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], nextli0(lf(m)) = [], m < n0, n ≤ n0, ii(m) ≤ ii(n), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ |
Used simplifier rules: ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: m
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), ¬ n ≤ n0, n ≤ n0 → nextli0(lf(n0)) = [] ∧ ii(n0) = ii(n), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), n0 < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → (n ≤ m ↔ false); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli(x) = x + nextli0(x), n0 < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], lf(n) = x.take(ii(n)), nextli(x) = x + nextli0(x), n0 < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used terms: n
| # x = ii(n), ii(0) = 0, lf(0) = [], lf(n) = x.take(ii(n)), nextli(x) = x + nextli0(x), n0 < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(x) = x ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n) + nextli0(lf(n)), n0 < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(lf(n)) = lf(n) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used simplifier rules: ⊦ # x = n → x.take(n) = x; (s)
| # lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n) + nextli0(lf(n)), n0 < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ nextli(lf(n)) = lf(n) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n) + nextli0(lf(n)), n0 < n, n ≤ n → nextli0(lf(n)) = [] ∧ ii(n) = ii(n), ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(lf(n)) = lf(n) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used terms: n
| # lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n) + nextli0(lf(n)), n0 < n, n ≤ n → nextli0(lf(n)) = [] ∧ ii(n) = ii(n), ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ nextli(lf(n)) = lf(n) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], n0 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ m ≤ m; (s)
| # lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], n0 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), nextli0(lf(n0)) = [] ↔ n0 ≤ n0, ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], n0 < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used terms: n0
| # lf(n) = ii(n), nextli0(lf(n0)) = [] ↔ n0 ≤ n0, ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], n0 < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n0 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used simplifier rules: ⊦ m ≤ m; (s)
| # lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n0 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n0 < n, nextli0(lf(n0)) = [] → (∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used terms: n0
| # lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n0 < n, nextli0(lf(n0)) = [] → (∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n0 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
| # lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n)) = [], nextli0(lf(n0)) = [], n0 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n0 < n, n0 < n → lf(n) = lf(n0) ∧ nextli0(lf(n)) = [] ∧ ii(n) = ii(n0), ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
Used terms: n
| # lf(n) = ii(n), ii(0) = 0, lf(0) = [], nextli(lf(n)) = lf(n), nextli0(lf(n0)) = [], nextli0(lf(n)) = [], n0 < n, n0 < n → lf(n) = lf(n0) ∧ nextli0(lf(n)) = [] ∧ ii(n) = ii(n0), ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ ii(n) = ii(n0) ∧ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n0) = ii(n0), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], n0 < n, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))
| # lf(n0) = ii(n0), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], n0 < n, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1)) |
# lf(n0) = ii(n0), ii(0) = 0, ii(n) = ii(n0), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], ii(m) ≠ ii(n0), n0 < n, n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦
# lf(n0) = ii(n0), ii(0) = 0, ii(n) = ii(n0), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], n0 < n, ¬ ii(m) < ii(m + 1), ¬ n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦
| # lf(n0) = ii(n0), ii(0) = 0, ii(n) = ii(n0), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], ii(m) ≠ ii(n0), n0 < n, n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦ |
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) Used terms: m
| # lf(n0) = ii(n0), ii(0) = 0, ii(n) = ii(n0), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], n0 < n, ¬ ii(m) < ii(m + 1), ¬ n0 ≤ m, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦ |
# lf(n0) = ii(n0), ii(0) = 0, ii(n) = ii(n0), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m < n, m < n0, n0 < n, m + 1 < n, ii(m + 1) ≤ ii(m), ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦
Used simplifier rules: ⊦ m.+1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m.+1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # lf(n0) = ii(n0), ii(0) = 0, ii(n) = ii(n0), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m < n, m < n0, n0 < n, m + 1 < n, ii(m + 1) ≤ ii(m), ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦ |
# lf(n0) = ii(n0), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m + 1 < n, n0 < n, m < n0, m < n, ii(m + 1) ≤ ii(m), m ≤ m + 1 → ii(m) ≤ ii(m + 1), ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦
Used terms: m, m + 1
| # lf(n0) = ii(n0), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m + 1 < n, n0 < n, m < n0, m < n, ii(m + 1) ≤ ii(m), m ≤ m + 1 → ii(m) ≤ ii(m + 1), ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ |
# lf(n0) = ii(n0), ii(m + 1) = ii(m), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m + 1 < n, n0 < n, m < n0, m < n, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| # lf(n0) = ii(n0), ii(m + 1) = ii(m), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m + 1 < n, n0 < n, m < n0, m < n, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ |
# lf(n0) = ii(n0), nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(0) = 0, ii(n) = ii(n0), ii(m + 1) = ii(m), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m < n, m < n0, n0 < n, m + 1 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦
Used terms: m
| # lf(n0) = ii(n0), nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(0) = 0, ii(n) = ii(n0), ii(m + 1) = ii(m), lf(0) = [], lf(n) = lf(n0), nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], m < n, m < n0, n0 < n, m + 1 < n, ∀ n0. lf(n0) = lf(n).take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) ⊦ |
# lf(n0) = ii(n0), ii(m + 1) = ii(m), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], nextli0(lf(m)) ≠ [], m + 1 < n, n0 < n, m < n0, m < n, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦
Used simplifier rules: ⊦ m < n → (n ≤ m ↔ false); (s)
| # lf(n0) = ii(n0), ii(m + 1) = ii(m), ii(n) = ii(n0), ii(0) = 0, lf(n) = lf(n0), lf(0) = [], nextli(lf(n0)) = lf(n0), nextli0(lf(n0)) = [], nextli0(lf(m)) ≠ [], m + 1 < n, n0 < n, m < n0, m < n, ∀ m. n0 < m → lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ lf(n).drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = lf(n).take(ii(n0)) ⊦ |
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m = m + n ↔ n = 0; (s) ⊦ # x = 0 ↔ x = []; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: m
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))), ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used simplifier rules: <; (wellfounded) Used terms: n
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∀ m. nextli0(lf(m)) = [] ↔ n ≤ m, ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used terms: n
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∀ m. nextli0(lf(m)) = [] ↔ n ≤ m, ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], ¬(nextli0(lf(m)) = [] ↔ n ≤ m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
| # x = ii(n), ii(0) = 0, lf(0) = [], ¬(nextli0(lf(m)) = [] ↔ n ≤ m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ¬ n ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) ≠ [], n ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ¬ n ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, # x = ii(m) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m0. m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0)))
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used terms: m, x, ii, lf, nextli0, nextli
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, # x = ii(m) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m0. m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(n) = ii(m) ∧ (m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(n) = ii(m) ∧ (m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, nextli0(lf(m)) = [] → (∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(n) = ii(m) ∧ (m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))
Used terms: m
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, nextli0(lf(m)) = [] → (∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(n) = ii(m) ∧ (m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(n) = ii(m) ∧ (m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ii(n) = ii(m) ∧ (m ≤ m0 → nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)) ∧ ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(m) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1)) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(n) ≠ ii(m), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, m ≤ m0, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(n1 + 1) ≠ ii(n1) + # nextli0(lf(n1)), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(m) < ii(n1 + 1), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], x.drop(ii(n1)).take(# nextli0(lf(n1))) ≠ nextli0(lf(n1)), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(n) ≠ ii(m), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
Used terms: n
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, m ≤ m0, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, m ≤ m0, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, m ≤ m0, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, m ≤ m0, m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m)
Used terms: m0
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, m ≤ m0, m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m) |
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m ≤ m; (s) ⊦ ¬ n < n; (s) ⊦ m < n → m ≤ n; (s) Used formulas: m < m0
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(n1 + 1) ≠ ii(n1) + # nextli0(lf(n1)), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
Used terms: n1
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(m) < ii(n1 + 1), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(m) < ii(n1 + 1), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(m) < ii(n1 + 1), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ii(m) < ii(n1 + 1), m < n1 + 1 → lf(n1 + 1) = lf(m) ∧ nextli0(lf(n1 + 1)) = [] ∧ ii(n1 + 1) = ii(m), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used terms: n1 + 1
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ii(m) < ii(n1 + 1), m < n1 + 1 → lf(n1 + 1) = lf(m) ∧ nextli0(lf(n1 + 1)) = [] ∧ ii(n1 + 1) = ii(m), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(m) < ii(n1 + 1), m < n, ¬ n1 < m → lf(n1 + 1) = lf(m) ∧ nextli0(lf(n1 + 1)) = [] ∧ ii(n1 + 1) = ii(m), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ii(m) < ii(n1 + 1), m < n, ¬ n1 < m → lf(n1 + 1) = lf(m) ∧ nextli0(lf(n1 + 1)) = [] ∧ ii(n1 + 1) = ii(m), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ii(m) < ii(n1 + 1), n1 < m, ¬ n1 < m → lf(n1 + 1) = lf(m) ∧ nextli0(lf(n1 + 1)) = [] ∧ ii(n1 + 1) = ii(m), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n < m ↔ false); (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s) ⊦ m < n → ¬ n < m; (s) Used formulas: n1 < m
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ii(m) < ii(n1 + 1), n1 < m, ¬ n1 < m → lf(n1 + 1) = lf(m) ∧ nextli0(lf(n1 + 1)) = [] ∧ ii(n1 + 1) = ii(m), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], n1 < n, m < n, ii(m) < ii(n1 + 1), n1 < m, n1 + 1 < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used simplifier rules: ⊦ m.+1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m.+1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], n1 < n, m < n, ii(m) < ii(n1 + 1), n1 < m, n1 + 1 < n, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: n1 + 1, m
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], x.drop(ii(n1)).take(# nextli0(lf(n1))) ≠ nextli0(lf(n1)), m < n, ∀ m0. m < m0 → lf(m0) = lf(m) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(m), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
Used terms: n1
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m
Used terms: n0
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], m < n, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ¬(nextli0(lf(m0)) = [] ↔ n0 ≤ m0), m < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) = [], ¬(nextli0(lf(m0)) = [] ↔ n0 ≤ m0), m < n, ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ |
Used terms: m0
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(m)) ≠ [], n ≤ m, ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0, x, ii, lf, nextli0, nextli. n0 < n → # x = ii(n0) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ (∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n))) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n0 ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)) ∧ (∀ n1. ii(n1 + 1) = ii(n1) + # nextli0(lf(n1)) ∧ ¬ ii(n0) < ii(n1 + 1) ∧ x.drop(ii(n1)).take(# nextli0(lf(n1))) = nextli0(lf(n1))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → (∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m) ⊦ ∃ n0. ∀ m. nextli0(lf(m)) = [] ↔ n0 ≤ m |
Used terms: m
| # x = ii(n), ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∀ n. nextli0(lf(n)) = [] → (∀ m. n < m → lf(m) = lf(n) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n)), ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 < m, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))), lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 < m, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ n0. ii(n) = ii(n0) ∧ nextli(x) = x ∧ (∀ m. (n0 ≤ m ⊃ ii(m) = ii(n0);ii(m) < ii(m + 1))), lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 < m, ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 < m, ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m) = lf(n0) ∧ nextli0(lf(m)) = [] ∧ ii(m) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 < m0.+1, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ x, ii, n, lf, nextli0, n0, nextli. # x = ii(n) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ n0 < m0 ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0) ⊦ lf(m0.+1) = lf(n0) ∧ nextli0(lf(m0.+1)) = [] ∧ ii(m0.+1) = ii(n0)
Used simplifier rules: Nat freely generated by 0, +1; ⊦ ¬ n < 0; (s)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 < m0.+1, ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ x, ii, n, lf, nextli0, n0, nextli. # x = ii(n) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ n0 < m0 ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0) ⊦ lf(m0.+1) = lf(n0) ∧ nextli0(lf(m0.+1)) = [] ∧ ii(m0.+1) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, ∀ x, ii, n, lf, nextli0, n0, nextli. # x = ii(n) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ n0 < m0 ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0)
Used simplifier rules: ⊦ m.+1 = m + 1; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, ∀ x, ii, n, lf, nextli0, n0, nextli. # x = ii(n) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ n0 < m0 ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, # x = ii(n) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ n0 < m0 ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0)
Used terms: x, ii, n, lf, nextli0, n0, nextli
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, # x = ii(n) ∧ ii(0) = 0 ∧ lf(0) = [] ∧ nextli0(lf(n0)) = [] ∧ n0 < m0 ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n)) ∧ (∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0))) ∧ (∀ n0. lf(n0) = x.take(ii(n0))) → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0)
| # x = ii(n), ii(0) = 0, lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0)
Used terms: m0
| # x = ii(n), ii(0) = 0, lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(m0 + 1) = nextli(lf(m0)), lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0)
| # x = ii(n), ii(0) = 0, lf(m0 + 1) = nextli(lf(m0)), lf(0) = [], nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), lf((m0 + 1) + 1) = nextli(lf(m0 + 1)), nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0)
Used terms: m0 + 1
| # x = ii(n), ii(0) = 0, lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), lf((m0 + 1) + 1) = nextli(lf(m0 + 1)), nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, lf(m0 + 1) = nextli(lf(m0)), lf(0) = [], lf(2 + m0) = nextli(nextli(lf(m0))), nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0)
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # x = ii(n), ii(0) = 0, lf(m0 + 1) = nextli(lf(m0)), lf(0) = [], lf(2 + m0) = nextli(nextli(lf(m0))), nextli0(lf(n0)) = [], n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(2 + m0) = nextli(nextli(lf(m0))), lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), n0 ≤ m0, ¬ ii(n) < ii(m0 + 1), n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0)
Used terms: m0
| # x = ii(n), ii(0) = 0, ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(2 + m0) = nextli(nextli(lf(m0))), lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), n0 ≤ m0, ¬ ii(n) < ii(m0 + 1), n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), ii(0) = 0, lf(m0 + 1) = nextli(lf(m0)), lf(0) = [], lf(2 + m0) = nextli(nextli(lf(m0))), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), n0 ≤ m0, ii(m0 + 1) ≤ ii(n), n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0)
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # x = ii(n), ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), ii(0) = 0, lf(m0 + 1) = nextli(lf(m0)), lf(0) = [], lf(2 + m0) = nextli(nextli(lf(m0))), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), n0 ≤ m0, ii(m0 + 1) ≤ ii(n), n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(2 + m0) = nextli(nextli(lf(m0))), lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli(lf(m0)) = lf(m0) + nextli0(lf(m0)), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), ii(m0 + 1) ≤ ii(n), n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0)
Used terms: lf(m0)
| # x = ii(n), ii(0) = 0, ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(2 + m0) = nextli(nextli(lf(m0))), lf(0) = [], lf(m0 + 1) = nextli(lf(m0)), nextli(lf(m0)) = lf(m0) + nextli0(lf(m0)), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), ii(m0 + 1) ≤ ii(n), n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ nextli(lf(m0)) = lf(n0) ∧ nextli0(nextli(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), ii(0) = 0, lf(m0 + 1) = lf(m0) + nextli0(lf(m0)), lf(0) = [], lf(2 + m0) = nextli(lf(m0) + nextli0(lf(m0))), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), n0 ≤ m0, ii(m0 + 1) ≤ ii(n), n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m0) + nextli0(lf(m0)) = lf(n0) ∧ nextli0(lf(m0) + nextli0(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0)
| # x = ii(n), ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), ii(0) = 0, lf(m0 + 1) = lf(m0) + nextli0(lf(m0)), lf(0) = [], lf(2 + m0) = nextli(lf(m0) + nextli0(lf(m0))), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), n0 ≤ m0, ii(m0 + 1) ≤ ii(n), n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ n0. lf(n0) = x.take(ii(n0)) ⊦ lf(m0) + nextli0(lf(m0)) = lf(n0) ∧ nextli0(lf(m0) + nextli0(lf(m0))) = [] ∧ ii(m0 + 1) = ii(n0) |
# x = ii(n), ii(0) = 0, ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(2 + m0) = nextli(lf(m0 + 1)), lf(0) = [], lf(m0 + 1) = lf(m0) + nextli0(lf(m0)), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), ii(m0 + 1) ≤ ii(n), n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0)
| # x = ii(n), ii(0) = 0, ii(m0 + 1) = ii(m0) + # nextli0(lf(m0)), lf(2 + m0) = nextli(lf(m0 + 1)), lf(0) = [], lf(m0 + 1) = lf(m0) + nextli0(lf(m0)), nextli0(lf(n0)) = [], x.drop(ii(m0)).take(# nextli0(lf(m0))) = nextli0(lf(m0)), ii(m0 + 1) ≤ ii(n), n0 ≤ m0, n0 < m0 → lf(m0) = lf(n0) ∧ nextli0(lf(m0)) = [] ∧ ii(m0) = ii(n0), ∀ n0. lf(n0) = x.take(ii(n0)), ∀ n0. ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)) ∧ ¬ ii(n) < ii(n0 + 1) ∧ x.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ lf(m0 + 1) = lf(n0) ∧ nextli0(lf(m0 + 1)) = [] ∧ ii(m0 + 1) = ii(n0) |
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) ⊦ m ≤ m; (s) ⊦ ¬ n < n; (s) ⊦ x.take(0) = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # [] = 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 ⊦ m < n → m ≤ n; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s) Used formulas: n0 < m0
| ii(0) = 0, lf(0) = [], ¬ finp(σ), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = σ.take(ii(n0)) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1) |
ii(0) = 0, lf(0) = [], ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = nf.take(ii(n0)) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)
Used simplifier rules: ⊦ ⌜nf⌝ .take(n) = nf.take(n); (s) ⊦ ⌜nf⌝ .drop(n) = ⌜nf.drop(n)⌝ ; (s) ⊦ ¬ ∞ < n∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ¬ finp(⌜nf⌝ ); (s) ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss)
| ii(0) = 0, lf(0) = [], ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n0. lf(n0) = nf.take(ii(n0)) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1) |
ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = nf.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)
Used terms: n1
| ii(0) = 0, lf(0) = [], ∀ n0. lf(n0) = nf.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1) |
ii(0) = 0, lf(0) = [], ii(m) < ii(m + 1), n1 < ii(m + 1), ii(m) ≤ n1, ∀ n0. lf(n0) = nf.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 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
| ii(0) = 0, lf(0) = [], ii(m) < ii(m + 1), n1 < ii(m + 1), ii(m) ≤ n1, ∀ n0. lf(n0) = nf.take(ii(n0)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ nf.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1) |
Used terms: m
| ii(0) = 0, lf(0) = [], (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ ∀ n0. lf(n0) = σ.take(ii(n0)), ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)) |
ii(0) = 0, lf(0) = [], lf(n2) ≠ σ.take(ii(n2)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1))
| ii(0) = 0, lf(0) = [], lf(n2) ≠ σ.take(ii(n2)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ ¬ # σ < ⌜ii(n0 + 1)⌝ ∧ σ.take(ii(n0 + 1)) = nextli(σ.take(ii(n0))) ∧ (# σ = ⌜ii(n0)⌝ ⊃ ii(n0) = ii(n0 + 1);ii(n0) < ii(n0 + 1)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1)));∃ m. ii(m) ≤ n1 ∧ n1 < ii(m + 1)) |
ii(0) = 0, lf(0) = [], lf(n2) ≠ σ.take(ii(n2)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
| ii(0) = 0, lf(0) = [], lf(n2) ≠ σ.take(ii(n2)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
ii(0) = 0, lf(0) = [], lf(n0.+1) ≠ σ.take(ii(n0.+1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ ii, lf, σ, n, nextli0, nextli. ¬ ( ii(0) = 0 ∧ lf(0) = [] ∧ lf(n0) ≠ σ.take(ii(n0)) ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)))) ⊦
Used simplifier rules: Nat freely generated by 0, +1; ⊦ σ.take(0) = []; (s)
| ii(0) = 0, lf(0) = [], lf(n0.+1) ≠ σ.take(ii(n0.+1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ ii, lf, σ, n, nextli0, nextli. ¬ ( ii(0) = 0 ∧ lf(0) = [] ∧ lf(n0) ≠ σ.take(ii(n0)) ∧ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∧ (∀ x0. nextli(x0) = x0 + nextli0(x0)) ∧ (∀ n. lf(n + 1) = nextli(lf(n))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)))) ⊦ |
ii(0) = 0, lf(0) = [], lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ ii0, lf0, σ0, n1, nextli1, nextli2. ii0(0) ≠ 0 ∨ lf0(0) ≠ [] ∨ lf0(n0) = σ0.take(ii0(n0)) ∨ ¬ (finp(σ0) ⊃ # σ0 = ⌜ii0(n1)⌝ ∧ (∀ m. n1 ≤ m → nextli1(lf0(m)) = [] ∧ ii0(m) = ii0(n1));∀ n. ∃ m. ii0(m) ≤ n ∧ n < ii0(m + 1)) ∨ ¬(∀ x0. nextli2(x0) = x0 + nextli1(x0)) ∨ ¬(∀ n. lf0(n + 1) = nextli2(lf0(n))) ∨ ¬(∀ m, n. m ≤ n → ii0(m) ≤ ii0(n)) ∨ ¬ (∀ n. ii0(n + 1) = ii0(n) + # nextli1(lf0(n)) ∧ ¬ # σ0 < ⌜ii0(n + 1)⌝ ∧ σ0.drop(ii0(n)).take(# nextli1(lf0(n))) = nextli1(lf0(n))) ⊦
Used simplifier rules: ⊦ m.+1 = m + 1; (s)
| ii(0) = 0, lf(0) = [], lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ ii0, lf0, σ0, n1, nextli1, nextli2. ii0(0) ≠ 0 ∨ lf0(0) ≠ [] ∨ lf0(n0) = σ0.take(ii0(n0)) ∨ ¬ (finp(σ0) ⊃ # σ0 = ⌜ii0(n1)⌝ ∧ (∀ m. n1 ≤ m → nextli1(lf0(m)) = [] ∧ ii0(m) = ii0(n1));∀ n. ∃ m. ii0(m) ≤ n ∧ n < ii0(m + 1)) ∨ ¬(∀ x0. nextli2(x0) = x0 + nextli1(x0)) ∨ ¬(∀ n. lf0(n + 1) = nextli2(lf0(n))) ∨ ¬(∀ m, n. m ≤ n → ii0(m) ≤ ii0(n)) ∨ ¬ (∀ n. ii0(n + 1) = ii0(n) + # nextli1(lf0(n)) ∧ ¬ # σ0 < ⌜ii0(n + 1)⌝ ∧ σ0.drop(ii0(n)).take(# nextli1(lf0(n))) = nextli1(lf0(n))) ⊦ |
ii(0) = 0, lf(0) = [], lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ii(0) ≠ 0 ∨ lf(0) ≠ [] ∨ lf(n0) = σ.take(ii(n0)) ∨ ¬ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∨ ¬(∀ x0. nextli(x0) = x0 + nextli0(x0)) ∨ ¬(∀ n. lf(n + 1) = nextli(lf(n))) ∨ ¬(∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∨ ¬(∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ⊦
Used terms: ii, lf, σ, n, nextli0, nextli
| ii(0) = 0, lf(0) = [], lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ii(0) ≠ 0 ∨ lf(0) ≠ [] ∨ lf(n0) = σ.take(ii(n0)) ∨ ¬ (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)) ∨ ¬(∀ x0. nextli(x0) = x0 + nextli0(x0)) ∨ ¬(∀ n. lf(n + 1) = nextli(lf(n))) ∨ ¬(∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∨ ¬(∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n))) ⊦ |
ii(0) = 0, lf(0) = [], lf(n0) = σ.take(ii(n0)), lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
| ii(0) = 0, lf(0) = [], lf(n0) = σ.take(ii(n0)), lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used terms: n0
| ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), lf(n0 + 1) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(0) = 0, lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
| ii(0) = 0, lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used terms: lf(n0)
| ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
Used terms: n0
| ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
| ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli(lf(n0)) ≠ σ.take(ii(n0 + 1)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n))
ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), # nextli(lf(n0)) ≠ # σ.take(ii(n0 + 1)) ∨ (∃ n. ¬(n < # nextli(lf(n0)) → nextli(lf(n0))(n) = σ.take(ii(n0 + 1))(n))) ⊦
Used terms: nextli(lf(n0)), σ.take(ii(n0 + 1))
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n)) |
| ii(0) = 0, ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), # nextli(lf(n0)) ≠ # σ.take(ii(n0 + 1)) ∨ (∃ n. ¬(n < # nextli(lf(n0)) → nextli(lf(n0))(n) = σ.take(ii(n0 + 1))(n))) ⊦ |
ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), # nextli(lf(n0)) ≠ ii(n0 + 1) ∨ ¬(n1 < # nextli(lf(n0)) → nextli(lf(n0))(n1) = σ(n1)) ⊦
Used simplifier rules: m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)(m) = σ(m); (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ # x = 0 ↔ x = []; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s)
| ii(n0 + 1) = ii(n0) + # nextli0(lf(n0)), ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0 + 1)⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), # nextli(lf(n0)) ≠ ii(n0 + 1) ∨ ¬(n1 < # nextli(lf(n0)) → nextli(lf(n0))(n1) = σ(n1)) ⊦ |
ii(0) = 0, lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0) + # nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), # nextli(lf(n0)) ≠ ii(n0) + # nextli0(lf(n0)) ∨ ¬(n1 < # nextli(lf(n0)) → nextli(lf(n0))(n1) = σ(n1)) ⊦
| ii(0) = 0, lf(n0 + 1) = nextli(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0) + # nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), # nextli(lf(n0)) ≠ ii(n0) + # nextli0(lf(n0)) ∨ ¬(n1 < # nextli(lf(n0)) → nextli(lf(n0))(n1) = σ(n1)) ⊦ |
ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), # nextli(lf(n0)) ≠ ii(n0) + # nextli0(lf(n0)) ∨ ¬(n1 < # nextli(lf(n0)) → nextli(lf(n0))(n1) = σ(n1)) ⊦
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)
| ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = nextli(lf(n0)), nextli(lf(n0)) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), # nextli(lf(n0)) ≠ ii(n0) + # nextli0(lf(n0)) ∨ ¬(n1 < # nextli(lf(n0)) → nextli(lf(n0))(n1) = σ(n1)) ⊦ |
ii(0) = 0, lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), #(lf(n0) + nextli0(lf(n0))) ≠ ii(n0) + # nextli0(lf(n0)) ∨ ¬(n1 < #(lf(n0) + nextli0(lf(n0))) → (lf(n0) + nextli0(lf(n0)))(n1) = σ(n1)) ⊦
| ii(0) = 0, lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), lf(0) = [], lf(n0) = σ.take(ii(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), #(lf(n0) + nextli0(lf(n0))) ≠ ii(n0) + # nextli0(lf(n0)) ∨ ¬(n1 < #(lf(n0) + nextli0(lf(n0))) → (lf(n0) + nextli0(lf(n0)))(n1) = σ(n1)) ⊦ |
ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), # lf(n0) ≠ ii(n0) ∨ ¬(n1 < # lf(n0) + # nextli0(lf(n0)) → lf(n0 + 1)(n1) = σ(n1)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s) 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)
| ii(0) = 0, lf(n0) = σ.take(ii(n0)), lf(0) = [], lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), # lf(n0) ≠ ii(n0) ∨ ¬(n1 < # lf(n0) + # nextli0(lf(n0)) → lf(n0 + 1)(n1) = σ(n1)) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n))
# lf(n0) = # σ.take(ii(n0)), ii(0) = 0, lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. n < # lf(n0) → lf(n0)(n) = σ.take(ii(n0))(n), # lf(n0) ≠ ii(n0) ∨ ¬(n1 < # lf(n0) + # nextli0(lf(n0)) → lf(n0 + 1)(n1) = σ(n1)) ⊦
Used terms: lf(n0), σ.take(ii(n0))
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n)) |
| # lf(n0) = # σ.take(ii(n0)), ii(0) = 0, lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ n. n < # lf(n0) → lf(n0)(n) = σ.take(ii(n0))(n), # lf(n0) ≠ ii(n0) ∨ ¬(n1 < # lf(n0) + # nextli0(lf(n0)) → lf(n0 + 1)(n1) = σ(n1)) ⊦ |
# lf(n0) = ii(n0), ii(0) = 0, lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), lf(n0 + 1)(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n2. n2 < ii(n0) → lf(n0)(n2) = σ(n2), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)(m) = σ(m); (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 c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ m + n < m; (s) ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ # x = 0 ↔ x = []; (s) lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m ≤ n → (n < m ↔ false); (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s)
| # lf(n0) = ii(n0), ii(0) = 0, lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), lf(n0 + 1)(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n2. n2 < ii(n0) → lf(n0)(n2) = σ(n2), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
# lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), lf(n0 + 1)(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n1 < ii(n0) → lf(n0)(n1) = σ(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used terms: n1
| # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], lf(n0 + 1) = lf(n0) + nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), lf(n0 + 1)(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n1 < ii(n0) → lf(n0)(n1) = σ(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
# lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), (lf(n0) + nextli0(lf(n0)))(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n1 < ii(n0) → lf(n0)(n1) = σ(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
| # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), (lf(n0) + nextli0(lf(n0)))(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n1 < ii(n0) → lf(n0)(n1) = σ(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
⊦ n < # x → (x + y)(n) = x(n)
# lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), (lf(n0) + nextli0(lf(n0)))(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ n1 < # lf(n0), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n1 < ii(n0) → lf(n0)(n1) = σ(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ # x = 0 ↔ x = []; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ¬ n < n; (s) Used terms: lf(n0), nextli0(lf(n0)), n1
| ⊦ n < # x → (x + y)(n) = x(n) |
| # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), (lf(n0) + nextli0(lf(n0)))(n1) ≠ σ(n1), n1 < ii(n0) + # nextli0(lf(n0)), ¬ n1 < # lf(n0), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n1 < ii(n0) → lf(n0)(n1) = σ(n1), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
# lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli0(lf(n0))(n1 - ii(n0)) ≠ σ(n1), nextli0(lf(n0)) ≠ [], n1 < ii(n0) + # nextli0(lf(n0)), ii(n0) ≤ n1, ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ # x = 0 ↔ x = []; (s) ⊦ m < m + n ↔ n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ¬ n < # x → (x + y)(n) = y(n - # x); (s)
| # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli0(lf(n0))(n1 - ii(n0)) ≠ σ(n1), nextli0(lf(n0)) ≠ [], n1 < ii(n0) + # nextli0(lf(n0)), ii(n0) ≤ n1, ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
# lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], n1 = n2 + ii(n0), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli0(lf(n0))(n2) ≠ σ(n1), nextli0(lf(n0)) ≠ [], n1 < ii(n0) + # nextli0(lf(n0)), ii(n0) ≤ n1, ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n1, ii(n0), n2
| # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], n1 = n2 + ii(n0), σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli0(lf(n0))(n2) ≠ σ(n1), nextli0(lf(n0)) ≠ [], n1 < ii(n0) + # nextli0(lf(n0)), ii(n0) ≤ n1, ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
# lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m ≤ m + n; (s)
| # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], σ.drop(ii(n0)).take(# nextli0(lf(n0))) = nextli0(lf(n0)), nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n))
# σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. n < # σ.drop(ii(n0)).take(# nextli0(lf(n0))) → σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n) = nextli0(lf(n0))(n) ⊦
Used terms: σ.drop(ii(n0)).take(# nextli0(lf(n0))), nextli0(lf(n0))
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n)) |
| # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. n < # σ.drop(ii(n0)).take(# nextli0(lf(n0))) → σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n) = nextli0(lf(n0))(n) ⊦ |
# σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. n < # nextli0(lf(n0)) → σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n) = nextli0(lf(n0))(n) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic
| # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. n < # nextli0(lf(n0)) → σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n) = nextli0(lf(n0))(n) ⊦ |
# lf(n0) = ii(n0), # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n2 < # nextli0(lf(n0)) → σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
Used terms: n2
| # lf(n0) = ii(n0), # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , n2 < # nextli0(lf(n0)) → σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
# σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
| # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)(m) = σ(m)
# lf(n0) = ii(n0), # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ n2 < # nextli0(lf(n0)) ∧ ¬ # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝
# lf(n0) = ii(n0), # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), σ.drop(ii(n0))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝ , ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦
Used terms: σ.drop(ii(n0)), # nextli0(lf(n0)), n2
| m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)(m) = σ(m) |
| # lf(n0) = ii(n0), # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ n2 < # nextli0(lf(n0)) ∧ ¬ # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝ |
# σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝ , ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
| # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), # lf(n0) = ii(n0), σ.drop(ii(n0)).take(# nextli0(lf(n0)))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝ , ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ ∧ finp(σ) → # σ.drop(n) = ⌜(# σ).n - n⌝
Used simplifier rules: m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)(m) = σ(m); (s) ⊦ ¬ # σ < ⌜n⌝ → (# σ.drop(n) < ⌜n0⌝ ↔ # σ < ⌜n + n0⌝ ); (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 ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s) ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜x⌝ .drop(n) = ⌜x.drop(n)⌝ ; (s) ⊦ ⌜x⌝ (n) = x(n); (s) ⊦ ⌜n⌝ .n = n; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → ⌜m⌝ < ⌜n⌝ + n∞0; (s) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ < ⌜m⌝ + ⌜n0⌝ ↔ n < m + n0; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (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 lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ¬ n∞ < n∞; (s) lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ¬ m + n < m; (s) Used terms: σ, ii(n0)
| ⊦ ¬ # σ < ⌜n⌝ ∧ finp(σ) → # σ.drop(n) = ⌜(# σ).n - n⌝ |
| # lf(n0) = ii(n0), # σ.drop(ii(n0)).take(# nextli0(lf(n0))) = # nextli0(lf(n0)), σ.drop(ii(n0))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝ , ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ x0. nextli(x0) = x0 + nextli0(x0), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)) ⊦ |
# lf(n0) = ii(n0), σ.drop(ii(n0))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝ , ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦
Used simplifier rules: ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s)
| # lf(n0) = ii(n0), σ.drop(ii(n0))(n2) = nextli0(lf(n0))(n2), ii(0) = 0, lf(0) = [], nextli0(lf(n0))(n2) ≠ σ(n2 + ii(n0)), nextli0(lf(n0)) ≠ [], n2 < # nextli0(lf(n0)), ¬ # σ.drop(ii(n0)) < ⌜# nextli0(lf(n0))⌝ , ¬ # σ < ⌜ii(n0)⌝ + ⌜# nextli0(lf(n0))⌝ , (finp(σ) ⊃ # σ = ⌜ii(n)⌝ ∧ (∀ m. n ≤ m → nextli0(lf(m)) = [] ∧ ii(m) = ii(n));∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1)), ∀ n. ii(n + 1) = ii(n) + # nextli0(lf(n)) ∧ ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.drop(ii(n)).take(# nextli0(lf(n))) = nextli0(lf(n)), ∀ m, n. m ≤ n → ii(m) ≤ ii(n), ∀ n. lf(n + 1) = nextli(lf(n)), ∀ x0. nextli(x0) = x0 + nextli0(x0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ ∧ finp(σ) → # σ.drop(n) = ⌜(# σ).n - n⌝
Used simplifier rules: ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ ⌜x⌝ .drop(n) = ⌜x.drop(n)⌝ ; (s) ⊦ ⌜n⌝ .n = n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) c: ⊦ m + n = n + m; from specification nat-basic ⊦ m ≤ n → (n < m ↔ false); (s) m + m0 < # x ⊦ x.drop(m)(m0) = x(m + m0); (s) ⊦ ⌜x⌝ (n) = x(n); (s) lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ¬ m + n < m; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ ¬ # σ < ⌜n⌝ → (# σ.drop(n) < ⌜n0⌝ ↔ # σ < ⌜n + n0⌝ ); (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss) ⊦ ⌜nf⌝ .drop(n) = ⌜nf.drop(n)⌝ ; (s) ⊦ nf.drop(n)(m) = nf(m + n); (s) ⊦ ⌜nf⌝ (n) = nf(n); (s) Used terms: σ, ii(n0)
| ⊦ ¬ # σ < ⌜n⌝ ∧ finp(σ) → # σ.drop(n) = ⌜(# σ).n - n⌝ |
| ∀ x. x ⊑ nextli(x) ⊦ ∀ x. ∃ y. nextli(x) = x + y, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
∀ x. x ⊑ nextli(x) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ), ∃ y. nextli(x) = x + y
| ∀ x. x ⊑ nextli(x) ⊦ ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ), ∃ y. nextli(x) = x + y |
x ⊑ nextli(x) ⊦ ∃ y. nextli(x) = x + y, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) )
Used terms: x
| x ⊑ nextli(x) ⊦ ∃ y. nextli(x) = x + y, ∃ σ, ii. ii(0) = 0 ∧ (∀ n. ¬ # σ < ⌜ii(n + 1)⌝ ∧ σ.take(ii(n + 1)) = nextli(σ.take(ii(n))) ∧ (# σ = ⌜ii(n)⌝ ⊃ ii(n) = ii(n + 1);ii(n) < ii(n + 1))) ∧ (∀ m, n. m ≤ n → ii(m) ≤ ii(n)) ∧ (finp(σ) ⊃ ∃ n. # σ = ⌜ii(n)⌝ ∧ ⌜nextli(σ.l)⌝ = σ ∧ (∀ m. (n ≤ m ⊃ ii(m) = ii(n);ii(m) < ii(m + 1))) ;∀ n. ∃ m. ii(m) ≤ n ∧ n < ii(m + 1) ) |
⊦ x ⊑ y ↔ (∃ z. x + z = y)
Used simplifier rules: ⊦ # x = # z → (x + y = z + y0 ↔ x = z ∧ y = y0); (ws) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: nextli(x), x
| ⊦ x ⊑ y ↔ (∃ z. x + z = y) |
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.