| ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
⊦ ∀ m. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
Used formulas: ∀ m. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
| ∀ m. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
| ∀ m. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m. ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ m. ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
Used formulas: ∀ m. ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m)
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m. ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(0)(0) = a ' ∧ iigen(0)(0) = n0 ∧ (∀ n. lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last))
Used terms: λ n. lfgen(n)(n), λ n. iigen(n)(n)
| ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(0)(0) = a ' ∧ iigen(0)(0) = n0 ∧ (∀ n. lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ lfgen(0)(0) = a ' ∧ iigen(0)(0) = n0 ∧ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ lfgen(0)(0) = a ' ∧ iigen(0)(0) = n0 ∧ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last) |
iigen(0)(0) = n0, lfgen(0)(0) = a ', ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. n ≤ 0 → lfgen(0)(n + 1) = nextl(iigen(0)(n), lfgen(0)(n).last) ∧ iigen(0)(n + 1) = nextj(iigen(0)(n), lfgen(0)(n).last) ⊦ lfgen(0)(0) = a ' ∧ iigen(0)(0) = n0 ∧ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)
Used terms: 0
| iigen(0)(0) = n0, lfgen(0)(0) = a ', ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. n ≤ 0 → lfgen(0)(n + 1) = nextl(iigen(0)(n), lfgen(0)(n).last) ∧ iigen(0)(n + 1) = nextj(iigen(0)(n), lfgen(0)(n).last) ⊦ lfgen(0)(0) = a ' ∧ iigen(0)(0) = n0 ∧ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last) |
iigen(0)(1) = nextj(iigen(0)(0), a), lfgen(0)(0) = a ', lfgen(0)(1) = nextl(iigen(0)(0), a), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)
Used simplifier rules: ⊦ a '.last = a; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ 0 ↔ m = 0; (s)
| iigen(0)(1) = nextj(iigen(0)(0), a), lfgen(0)(0) = a ', lfgen(0)(1) = nextl(iigen(0)(0), a), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last) |
iigen(0)(1) = nextj(iigen(0)(0), a), iigen(n + 1)(0) = iigen(0)(0), lfgen(0)(1) = nextl(iigen(0)(0), a), lfgen(0)(0) = a ', lfgen(n + 1)(0) = a ', ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ n0. n0 ≤ n + 1 → lfgen(n + 1)(n0 + 1) = nextl(iigen(n + 1)(n0), lfgen(n + 1)(n0).last) ∧ iigen(n + 1)(n0 + 1) = nextj(iigen(n + 1)(n0), lfgen(n + 1)(n0).last) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)
Used terms: n + 1
| iigen(0)(1) = nextj(iigen(0)(0), a), iigen(n + 1)(0) = iigen(0)(0), lfgen(0)(1) = nextl(iigen(0)(0), a), lfgen(0)(0) = a ', lfgen(n + 1)(0) = a ', ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ n0. n0 ≤ n + 1 → lfgen(n + 1)(n0 + 1) = nextl(iigen(n + 1)(n0), lfgen(n + 1)(n0).last) ∧ iigen(n + 1)(n0 + 1) = nextj(iigen(n + 1)(n0), lfgen(n + 1)(n0).last) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last) |
iigen(n + 1)(0) = iigen(0)(0), iigen(0)(1) = nextj(iigen(0)(0), a), lfgen(n + 1)(0) = a ', lfgen(0)(0) = a ', lfgen(0)(1) = nextl(iigen(0)(0), a), ∀ n0. n0 ≤ n + 1 → lfgen(n + 1)(n0 + 1) = nextl(iigen(n + 1)(n0), lfgen(n + 1)(n0).last) ∧ iigen(n + 1)(n0 + 1) = nextj(iigen(n + 1)(n0), lfgen(n + 1)(n0).last), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)
| iigen(n + 1)(0) = iigen(0)(0), iigen(0)(1) = nextj(iigen(0)(0), a), lfgen(n + 1)(0) = a ', lfgen(0)(0) = a ', lfgen(0)(1) = nextl(iigen(0)(0), a), ∀ n0. n0 ≤ n + 1 → lfgen(n + 1)(n0 + 1) = nextl(iigen(n + 1)(n0), lfgen(n + 1)(n0).last) ∧ iigen(n + 1)(n0 + 1) = nextj(iigen(n + 1)(n0), lfgen(n + 1)(n0).last), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last) |
iigen(0)(1) = nextj(iigen(0)(0), a), iigen(n + 1)(0) = iigen(0)(0), lfgen(0)(1) = nextl(iigen(0)(0), a), lfgen(0)(0) = a ', lfgen(n + 1)(0) = a ', n ≤ n + 1 → lfgen(n + 1)(n + 1) = nextl(iigen(n + 1)(n), lfgen(n + 1)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n + 1)(n), lfgen(n + 1)(n).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)
Used terms: n
| iigen(0)(1) = nextj(iigen(0)(0), a), iigen(n + 1)(0) = iigen(0)(0), lfgen(0)(1) = nextl(iigen(0)(0), a), lfgen(0)(0) = a ', lfgen(n + 1)(0) = a ', n ≤ n + 1 → lfgen(n + 1)(n + 1) = nextl(iigen(n + 1)(n), lfgen(n + 1)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n + 1)(n), lfgen(n + 1)(n).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last) |
iigen(n + 1)(0) = iigen(0)(0), iigen(0)(1) = nextj(iigen(0)(0), a), iigen(n + 1)(n + 1) = nextj(iigen(n + 1)(n), lfgen(n + 1)(n).last), lfgen(n + 1)(0) = a ', lfgen(0)(0) = a ', lfgen(0)(1) = nextl(iigen(0)(0), a), lfgen(n + 1)(n + 1) = nextl(iigen(n + 1)(n), lfgen(n + 1)(n).last), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| iigen(n + 1)(0) = iigen(0)(0), iigen(0)(1) = nextj(iigen(0)(0), a), iigen(n + 1)(n + 1) = nextj(iigen(n + 1)(n), lfgen(n + 1)(n).last), lfgen(n + 1)(0) = a ', lfgen(0)(0) = a ', lfgen(0)(1) = nextl(iigen(0)(0), a), lfgen(n + 1)(n + 1) = nextl(iigen(n + 1)(n), lfgen(n + 1)(n).last), ∀ m, n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(0)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n + 1)(n + 1) = nextl(iigen(n)(n), lfgen(n)(n).last) ∧ iigen(n + 1)(n + 1) = nextj(iigen(n)(n), lfgen(n)(n).last) |
Used simplifier rules: ⊦ m ≤ m + n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n, n + 1
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ m. ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m)
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ n. m ≤ n → lfgen(n)(m) = lfgen(m)(m) ∧ iigen(n)(m) = iigen(m)(m) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ n. 0 ≤ n → lfgen(n)(0) = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0)
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)) ⊦ ∀ n. m0 +1 ≤ n → lfgen(n)(m0 +1) = lfgen(m0 +1)(m0 +1) ∧ iigen(n)(m0 +1) = iigen(m0 +1)(m0 +1)
Used simplifier rules: nat freely generated by 0, +1;;
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ n. 0 ≤ n → lfgen(n)(0) = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0) |
∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(0) = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0)
Used simplifier rules: ⊦ 0 ≤ m; (s)
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(0) = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0) |
iigen(n)(0) = n0, lfgen(n)(0) = a ', ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last) ⊦ lfgen(n)(0) = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0)
Used terms: n
| iigen(n)(0) = n0, lfgen(n)(0) = a ', ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last) ⊦ lfgen(n)(0) = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0) |
lfgen(n)(0) = a ', ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ a ' = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0)
| lfgen(n)(0) = a ', ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ a ' = lfgen(0)(0) ∧ iigen(n)(0) = iigen(0)(0) |
Used simplifier rules: ⊦ m ≤ 0 ↔ m = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: 0
| ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)) ⊦ ∀ n. m0 +1 ≤ n → lfgen(n)(m0 +1) = lfgen(m0 +1)(m0 +1) ∧ iigen(n)(m0 +1) = iigen(m0 +1)(m0 +1) |
m0 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m +1 = m + 1; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s)
| m0 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
n ≠ m0 + 1, m0 < n, ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used simplifier rules: ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used formulas: n = m0 + 1
| n ≠ m0 + 1, m0 < n, ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used simplifier rules: succ-03: ⊦ m < n ∧ m + 1 ≠ n → m + 1 < n; (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
| n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ lfgen, a, iigen, n0, nextl, nextj. (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
n ≠ m0 + 1, m0 + 1 < n, m0 < n, (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used terms: lfgen, a, iigen, n0, nextl, nextj
| n ≠ m0 + 1, m0 + 1 < n, m0 < n, (∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last))) → (∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0)), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
| n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
n ≠ m0 + 1, m0 + 1 < n, m0 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1), lfgen(m)(0) = a ' ∧ iigen(m)(0) = n0 ∧ (n1 ≤ m → lfgen(m)(n1 + 1) = nextl(iigen(m)(n1), lfgen(m)(n1).last) ∧ iigen(m)(n1 + 1) = nextj(iigen(m)(n1), lfgen(m)(n1).last))
| n ≠ m0 + 1, m0 + 1 < n, m0 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1), lfgen(m)(0) = a ' ∧ iigen(m)(0) = n0 ∧ (n1 ≤ m → lfgen(m)(n1 + 1) = nextl(iigen(m)(n1), lfgen(m)(n1).last) ∧ iigen(m)(n1 + 1) = nextj(iigen(m)(n1), lfgen(m)(n1).last)) |
iigen(m)(0) = n0, lfgen(m)(0) = a ', n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m → lfgen(m)(n + 1) = nextl(iigen(m)(n), lfgen(m)(n).last) ∧ iigen(m)(n + 1) = nextj(iigen(m)(n), lfgen(m)(n).last) ⊦ lfgen(m)(0) = a ' ∧ iigen(m)(0) = n0 ∧ (n1 ≤ m → lfgen(m)(n1 + 1) = nextl(iigen(m)(n1), lfgen(m)(n1).last) ∧ iigen(m)(n1 + 1) = nextj(iigen(m)(n1), lfgen(m)(n1).last)), lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used terms: m
| iigen(m)(0) = n0, lfgen(m)(0) = a ', n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m → lfgen(m)(n + 1) = nextl(iigen(m)(n), lfgen(m)(n).last) ∧ iigen(m)(n + 1) = nextj(iigen(m)(n), lfgen(m)(n).last) ⊦ lfgen(m)(0) = a ' ∧ iigen(m)(0) = n0 ∧ (n1 ≤ m → lfgen(m)(n1 + 1) = nextl(iigen(m)(n1), lfgen(m)(n1).last) ∧ iigen(m)(n1 + 1) = nextj(iigen(m)(n1), lfgen(m)(n1).last)), lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
lfgen(m)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, n1 ≤ m, ∀ n. n ≤ m → lfgen(m)(n + 1) = nextl(iigen(m)(n), lfgen(m)(n).last) ∧ iigen(m)(n + 1) = nextj(iigen(m)(n), lfgen(m)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1), lfgen(m)(n1 + 1) = nextl(iigen(m)(n1), lfgen(m)(n1).last) ∧ iigen(m)(n1 + 1) = nextj(iigen(m)(n1), lfgen(m)(n1).last)
| lfgen(m)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, n1 ≤ m, ∀ n. n ≤ m → lfgen(m)(n + 1) = nextl(iigen(m)(n), lfgen(m)(n).last) ∧ iigen(m)(n + 1) = nextj(iigen(m)(n), lfgen(m)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1), lfgen(m)(n1 + 1) = nextl(iigen(m)(n1), lfgen(m)(n1).last) ∧ iigen(m)(n1 + 1) = nextj(iigen(m)(n1), lfgen(m)(n1).last) |
Used terms: n1
| n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(n)(0) = n0, lfgen(n)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used terms: n
| iigen(n)(0) = n0, lfgen(n)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = n0 ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
lfgen(n)(0) = a ', n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
| lfgen(n)(0) = a ', n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
lfgen(n)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, m0 ≤ n → lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last) ∧ iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used terms: m0
| lfgen(n)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, m0 ≤ n → lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last) ∧ iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used simplifier rules: ⊦ m < n → m ≤ n; (s)
| iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(0) = iigen(n)(0), lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(m0 + 1)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used terms: m0 + 1
| iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(0) = iigen(n)(0), lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(m0 + 1)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(m0 + 1)(0) = iigen(n)(0), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), lfgen(m0 + 1)(0) = a ', lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
| iigen(m0 + 1)(0) = iigen(n)(0), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), lfgen(m0 + 1)(0) = a ', lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(0) = iigen(n)(0), lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(m0 + 1)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, m0 ≤ m0 + 1 → lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last) ∧ iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used terms: m0
| iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(0) = iigen(n)(0), lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(m0 + 1)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, m0 ≤ m0 + 1 → lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last) ∧ iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(m0 + 1)(0) = iigen(n)(0), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), lfgen(m0 + 1)(0) = a ', lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| iigen(m0 + 1)(0) = iigen(n)(0), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), lfgen(m0 + 1)(0) = a ', lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(0) = iigen(n)(0), lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(m0 + 1)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, m0 ≤ m0 +1 → lfgen(m0 +1)(m0) = lfgen(m0)(m0) ∧ iigen(m0 +1)(m0) = iigen(m0)(m0), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used terms: m0 +1
| iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(0) = iigen(n)(0), lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0 + 1)(m0), lfgen(m0 + 1)(m0).last), lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(n)(0) = a ', lfgen(m0 + 1)(0) = a ', n ≠ m0 + 1, m0 + 1 < n, m0 < n, m0 ≤ m0 +1 → lfgen(m0 +1)(m0) = lfgen(m0)(m0) ∧ iigen(m0 +1)(m0) = iigen(m0)(m0), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
iigen(m0 + 1)(0) = iigen(n)(0), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0)(m0), lfgen(m0)(m0).last), iigen(m0 + 1)(m0) = iigen(m0)(m0), lfgen(m0 + 1)(0) = a ', lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0)(m0), lfgen(m0)(m0).last), lfgen(m0 + 1)(m0) = lfgen(m0)(m0), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1)
Used simplifier rules: ⊦ m +1 = m + 1; (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)
| iigen(m0 + 1)(0) = iigen(n)(0), iigen(n)(m0 + 1) = nextj(iigen(n)(m0), lfgen(n)(m0).last), iigen(m0 + 1)(m0 + 1) = nextj(iigen(m0)(m0), lfgen(m0)(m0).last), iigen(m0 + 1)(m0) = iigen(m0)(m0), lfgen(m0 + 1)(0) = a ', lfgen(n)(0) = a ', lfgen(n)(m0 + 1) = nextl(iigen(n)(m0), lfgen(n)(m0).last), lfgen(m0 + 1)(m0 + 1) = nextl(iigen(m0)(m0), lfgen(m0)(m0).last), lfgen(m0 + 1)(m0) = lfgen(m0)(m0), n ≠ m0 + 1, m0 < n, m0 + 1 < n, ∀ n. n ≤ m0 + 1 → lfgen(m0 + 1)(n + 1) = nextl(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last) ∧ iigen(m0 + 1)(n + 1) = nextj(iigen(m0 + 1)(n), lfgen(m0 + 1)(n).last), ∀ n0. n0 ≤ n → lfgen(n)(n0 + 1) = nextl(iigen(n)(n0), lfgen(n)(n0).last) ∧ iigen(n)(n0 + 1) = nextj(iigen(n)(n0), lfgen(n)(n0).last), ∀ m0. lfgen(m0)(0) = a ' ∧ iigen(m0)(0) = iigen(n)(0) ∧ (∀ n. n ≤ m0 → lfgen(m0)(n + 1) = nextl(iigen(m0)(n), lfgen(m0)(n).last) ∧ iigen(m0)(n + 1) = nextj(iigen(m0)(n), lfgen(m0)(n).last)), ∀ n. m0 ≤ n → lfgen(n)(m0) = lfgen(m0)(m0) ∧ iigen(n)(m0) = iigen(m0)(m0) ⊦ lfgen(n)(m0 + 1) = lfgen(m0 + 1)(m0 + 1) ∧ iigen(n)(m0 + 1) = iigen(m0 + 1)(m0 + 1) |
Used simplifier rules: ⊦ m < n → m ≤ n; (s) Used terms: n
| ⊦ ∀ m. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
| ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)), ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
| ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ 0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
∀ a, n0, nextl, nextj. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 +1 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
Used simplifier rules: nat freely generated by 0, +1;;
| ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ 0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ lf(1) = nextl(jj(0), lf(0).last) ∧ jj(1) = nextj(jj(0), lf(0).last)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ 0 ↔ m = 0; (s)
| ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ lf(1) = nextl(jj(0), lf(0).last) ∧ jj(1) = nextj(jj(0), lf(0).last) |
Used simplifier rules: ⊦ a ' = b ' ↔ a = b; (s) ⊦ a '.last = a; (s) Used terms: λ n. (n = 0 ⊃ a ';nextl(n0, a)), λ n. (n = 0 ⊃ n0;nextj(n0, a))
| ∀ a, n0, nextl, nextj. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 +1 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∀ a, n0, nextl, nextj. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 + 1 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
Used simplifier rules: ⊦ m +1 = m + 1; (s)
| ∀ a, n0, nextl, nextj. ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 + 1 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 + 1 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last))
Used terms: a, n0, nextl, nextj
| ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) ⊦ ∃ lf, jj. lf(0) = a ' ∧ jj(0) = n0 ∧ (∀ n. n ≤ m0 + 1 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last)) |
lf(0) = a ', ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ ∃ lf, jj0. lf(0) = a ' ∧ jj0(0) = jj(0) ∧ (∀ n. n ≤ m0 + 1 → lf(n + 1) = nextl(jj0(n), lf(n).last) ∧ jj0(n + 1) = nextj(jj0(n), lf(n).last))
| lf(0) = a ', ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ ∃ lf, jj0. lf(0) = a ' ∧ jj0(0) = jj(0) ∧ (∀ n. n ≤ m0 + 1 → lf(n + 1) = nextl(jj0(n), lf(n).last) ∧ jj0(n + 1) = nextj(jj0(n), lf(n).last)) |
lf(0) = a ', ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ (0 = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(0)) = a ' ∧ (0 = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(0)) = jj(0) ∧ (∀ n. n ≤ m0 + 1 → (n + 1 = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n + 1)) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ (n + 1 = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n + 1)) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last))
Used terms: λ n0. (n0 = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n0)), λ n0. (n0 = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n0))
| lf(0) = a ', ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ (0 = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(0)) = a ' ∧ (0 = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(0)) = jj(0) ∧ (∀ n. n ≤ m0 + 1 → (n + 1 = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n + 1)) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ (n + 1 = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n + 1)) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last)) |
lf(0) = a ', n ≤ m0 + 1, ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ (n = m0 + 1 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n + 1)) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ (n = m0 + 1 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n + 1)) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic n < n0 ⊦ m + (* n) = m0 + (* n0) ↔ m = m0 + (n0 - n); (s) n < n0 ⊦ (* n) ≠ m0 + (* n0); (s)
| lf(0) = a ', n ≤ m0 + 1, ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ (n = m0 + 1 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n + 1)) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ (n = m0 + 1 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n + 1)) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) |
lf(0) = a ', n ≠ m0 + 1, n ≤ m0 + 1, ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ (n = m0 + 1 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n + 1)) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ (n = m0 + 1 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n + 1)) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last)
Used simplifier rules: ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used formulas: n = m0 + 1
| lf(0) = a ', n ≠ m0 + 1, n ≤ m0 + 1, ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ (n = m0 + 1 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n + 1)) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ (n = m0 + 1 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n + 1)) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) |
lf(0) = a ', n ≠ m0 + 1, n ≤ m0, ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ lf(n + 1) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ jj(n + 1) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last)
Used simplifier rules: ⊦ 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) ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)
| lf(0) = a ', n ≠ m0 + 1, n ≤ m0, ∀ n. n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ lf(n + 1) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ jj(n + 1) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) |
lf(0) = a ', n ≠ m0 + 1, n ≤ m0, n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ lf(n + 1) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ jj(n + 1) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last)
Used terms: n
| lf(0) = a ', n ≠ m0 + 1, n ≤ m0, n ≤ m0 → lf(n + 1) = nextl(jj(n), lf(n).last) ∧ jj(n + 1) = nextj(jj(n), lf(n).last) ⊦ lf(n + 1) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ jj(n + 1) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) |
jj(n + 1) = nextj(jj(n), lf(n).last), lf(0) = a ', lf(n + 1) = nextl(jj(n), lf(n).last), n ≠ m0 + 1, n ≤ m0 ⊦ lf(n + 1) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ jj(n + 1) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last)
| jj(n + 1) = nextj(jj(n), lf(n).last), lf(0) = a ', lf(n + 1) = nextl(jj(n), lf(n).last), n ≠ m0 + 1, n ≤ m0 ⊦ lf(n + 1) = nextl((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) ∧ jj(n + 1) = nextj((n = m0 + 2 ⊃ nextj(jj(m0 + 1), lf(m0 + 1).last);jj(n)), (n = m0 + 2 ⊃ nextl(jj(m0 + 1), lf(m0 + 1).last);lf(n)).last) |
Used simplifier rules: ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m + m0 ≤ m ↔ m0 = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used formulas: n = m0 + 2
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.