| ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ []) |
∀ n, a. nextl(n, a) ≠ [], ∀ n. ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ [])
∀ n, a. nextl(n, a) ≠ [] ⊦ ∀ n. ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []), ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ [])
Used formulas: ∀ n. ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])
| ∀ n, a. nextl(n, a) ≠ [], ∀ n. ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ []) |
∀ n. ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ [])
| ∀ n. ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ []) |
∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ [])
| ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ []) |
∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ lfgen(0)(0) = a ' ∧ (∀ n. lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [])
Used terms: λ n. lfgen(n)(n)
| ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ lfgen(0)(0) = a ' ∧ (∀ n. lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []) |
∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(0)(0) = a ' ∧ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
| ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(0)(0) = a ' ∧ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < 0 → lfgen(0)(m + 1) = nextl(m, lfgen(0)(m).last) ∧ lfgen(0)(m) ≠ [] ⊦ lfgen(0)(0) = a ' ∧ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used terms: 0
| lfgen(0)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < 0 → lfgen(0)(m + 1) = nextl(m, lfgen(0)(m).last) ∧ lfgen(0)(m) ≠ [] ⊦ lfgen(0)(0) = a ' ∧ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used simplifier rules: ⊦ ¬ n < 0; (s)
| lfgen(0)(0) = a ', ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
lfgen(0)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used formulas: ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m)
| lfgen(0)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
| lfgen(0)(0) = a ', ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', n ≤ n ∧ n ≤ n + 1 → lfgen(n)(n) = lfgen(n + 1)(n), ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used terms: n, n, n + 1
| lfgen(0)(0) = a ', n ≤ n ∧ n ≤ n + 1 → lfgen(n)(n) = lfgen(n + 1)(n), ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', lfgen(n)(n) = lfgen(n + 1)(n), ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s) ⊦ m ≤ m; (s)
| lfgen(0)(0) = a ', lfgen(n)(n) = lfgen(n + 1)(n), ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(n)(n) = lfgen(n + 1)(n), lfgen(0)(0) = a ', lfgen(n + 1)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ m. m < n + 1 → lfgen(n + 1)(m + 1) = nextl(m, lfgen(n + 1)(m).last) ∧ lfgen(n + 1)(m) ≠ [] ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used terms: n + 1
| lfgen(n)(n) = lfgen(n + 1)(n), lfgen(0)(0) = a ', lfgen(n + 1)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ m. m < n + 1 → lfgen(n + 1)(m + 1) = nextl(m, lfgen(n + 1)(m).last) ∧ lfgen(n + 1)(m) ≠ [] ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(n + 1)(0) = a ', lfgen(0)(0) = a ', lfgen(n)(n) = lfgen(n + 1)(n), ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ m. ¬ n < m → lfgen(n + 1)(m + 1) = nextl(m, lfgen(n + 1)(m).last) ∧ lfgen(n + 1)(m) ≠ [] ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| lfgen(n + 1)(0) = a ', lfgen(0)(0) = a ', lfgen(n)(n) = lfgen(n + 1)(n), ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ m. ¬ n < m → lfgen(n + 1)(m + 1) = nextl(m, lfgen(n + 1)(m).last) ∧ lfgen(n + 1)(m) ≠ [] ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
Used simplifier rules: ⊦ ¬ n < n; (s) Used terms: n
| lfgen(0)(0) = a ', ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∀ m, n1, n2. m ≤ n1 ∧ n1 ≤ n2 → lfgen(n1)(m) = lfgen(n2)(m), lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', lfgen(n1)(m) ≠ lfgen(n2)(m), m ≤ n1, n1 ≤ n2, m ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ []
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat
| lfgen(0)(0) = a ', lfgen(n1)(m) ≠ lfgen(n2)(m), m ≤ n1, n1 ≤ n2, m ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ lfgen(n + 1)(n + 1) = nextl(n, lfgen(n)(n).last) ∧ lfgen(n)(n) ≠ [] |
lfgen(0)(0) = a ', lfgen(n1)(m) ≠ lfgen(n2)(m), m ≤ n2, n1 ≤ n2, m ≤ n1, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦
| lfgen(0)(0) = a ', lfgen(n1)(m) ≠ lfgen(n2)(m), m ≤ n2, n1 ≤ n2, m ≤ n1, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ |
lfgen(0)(0) = a ', lfgen(n1)(0) ≠ lfgen(n2)(0), 0 ≤ n1, n1 ≤ n2, 0 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦
lfgen(0)(0) = a ', lfgen(n1)(m0 +1) ≠ lfgen(n2)(m0 +1), m0 +1 ≤ n1, n1 ≤ n2, m0 +1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ lfgen, a, n1, n2, nextl. ¬ ( lfgen(0)(0) = a ' ∧ lfgen(n1)(m0) ≠ lfgen(n2)(m0) ∧ m0 ≤ n2 ∧ n1 ≤ n2 ∧ m0 ≤ n1 ∧ (∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ [])) ∧ (∀ n, a. nextl(n, a) ≠ [])) ⊦
Used simplifier rules: nat freely generated by 0, +1;;
| lfgen(0)(0) = a ', lfgen(n1)(0) ≠ lfgen(n2)(0), 0 ≤ n1, n1 ≤ n2, 0 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ |
lfgen(0)(0) = a ', lfgen(n1)(0) ≠ lfgen(n2)(0), n1 ≤ n2, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s)
| lfgen(0)(0) = a ', lfgen(n1)(0) ≠ lfgen(n2)(0), n1 ≤ n2, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ |
lfgen(0)(0) = a ', lfgen(n2)(0) = a ', lfgen(n1)(0) ≠ lfgen(n2)(0), n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [] ⊦
Used terms: n2
| lfgen(0)(0) = a ', lfgen(n2)(0) = a ', lfgen(n1)(0) ≠ lfgen(n2)(0), n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [] ⊦ |
lfgen(n2)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(0) ≠ a ', n1 ≤ n2, ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦
| lfgen(n2)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(0) ≠ a ', n1 ≤ n2, ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ |
Used terms: n1
| lfgen(0)(0) = a ', lfgen(n1)(m0 +1) ≠ lfgen(n2)(m0 +1), m0 +1 ≤ n1, n1 ≤ n2, m0 +1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ lfgen, a, n1, n2, nextl. ¬ ( lfgen(0)(0) = a ' ∧ lfgen(n1)(m0) ≠ lfgen(n2)(m0) ∧ m0 ≤ n2 ∧ n1 ≤ n2 ∧ m0 ≤ n1 ∧ (∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ [])) ∧ (∀ n, a. nextl(n, a) ≠ [])) ⊦ |
lfgen(0)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n1, m0 < n2, n1 ≤ n2, ∀ lfgen0, a0, n, n0, nextl0. lfgen0(0)(0) ≠ a0 ' ∨ lfgen0(n)(m0) = lfgen0(n0)(m0) ∨ ¬ m0 ≤ n0 ∨ ¬ n ≤ n0 ∨ ¬ m0 ≤ n ∨ ¬(∀ n0. lfgen0(n0)(0) = a0 ' ∧ (∀ m. m < n0 → lfgen0(n0)(m + 1) = nextl0(m, lfgen0(n0)(m).last) ∧ lfgen0(n0)(m) ≠ [])) ∨ ¬(∀ n, a. nextl0(n, a) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m +1 = m + 1; (s)
| lfgen(0)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n1, m0 < n2, n1 ≤ n2, ∀ lfgen0, a0, n, n0, nextl0. lfgen0(0)(0) ≠ a0 ' ∨ lfgen0(n)(m0) = lfgen0(n0)(m0) ∨ ¬ m0 ≤ n0 ∨ ¬ n ≤ n0 ∨ ¬ m0 ≤ n ∨ ¬(∀ n0. lfgen0(n0)(0) = a0 ' ∧ (∀ m. m < n0 → lfgen0(n0)(m + 1) = nextl0(m, lfgen0(n0)(m).last) ∧ lfgen0(n0)(m) ≠ [])) ∨ ¬(∀ n, a. nextl0(n, a) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ |
lfgen(0)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n2, m0 < n1, n1 ≤ n2, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], lfgen(0)(0) ≠ a ' ∨ lfgen(n1)(m0) = lfgen(n2)(m0) ∨ ¬ m0 ≤ n2 ∨ ¬ n1 ≤ n2 ∨ ¬ m0 ≤ n1 ∨ ¬(∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ [])) ∨ ¬(∀ n, a. nextl(n, a) ≠ []) ⊦
Used terms: lfgen, a, n1, n2, nextl
| lfgen(0)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n2, m0 < n1, n1 ≤ n2, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], lfgen(0)(0) ≠ a ' ∨ lfgen(n1)(m0) = lfgen(n2)(m0) ∨ ¬ m0 ≤ n2 ∨ ¬ n1 ≤ n2 ∨ ¬ m0 ≤ n1 ∨ ¬(∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ [])) ∨ ¬(∀ n, a. nextl(n, a) ≠ []) ⊦ |
lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n1, m0 < n2, n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s)
| lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n1, m0 < n2, n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ |
lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(0)(0) = a ', lfgen(n1)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n2, m0 < n1, n1 ≤ n2, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n1 → lfgen(n1)(m + 1) = nextl(m, lfgen(n1)(m).last) ∧ lfgen(n1)(m) ≠ [] ⊦
Used terms: n1
| lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(0)(0) = a ', lfgen(n1)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n2, m0 < n1, n1 ≤ n2, ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n1 → lfgen(n1)(m + 1) = nextl(m, lfgen(n1)(m).last) ∧ lfgen(n1)(m) ≠ [] ⊦ |
lfgen(n1)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n1, m0 < n2, n1 ≤ n2, ∀ m. m < n1 → lfgen(n1)(m + 1) = nextl(m, lfgen(n1)(m).last) ∧ lfgen(n1)(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦
| lfgen(n1)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n1, m0 < n2, n1 ≤ n2, ∀ m. m < n1 → lfgen(n1)(m + 1) = nextl(m, lfgen(n1)(m).last) ∧ lfgen(n1)(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ |
lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(0)(0) = a ', lfgen(n1)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n2, m0 < n1, n1 ≤ n2, m0 < n1 → lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n1)(m0).last) ∧ lfgen(n1)(m0) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦
Used terms: m0
| lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(0)(0) = a ', lfgen(n1)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), m0 < n2, m0 < n1, n1 ≤ n2, m0 < n1 → lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n1)(m0).last) ∧ lfgen(n1)(m0) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []), ∀ n, a. nextl(n, a) ≠ [] ⊦ |
lfgen(n1)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n2)(m0).last), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), lfgen(n2)(m0) ≠ [], m0 < n1, m0 < n2, n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦
| lfgen(n1)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n2)(m0).last), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), lfgen(n2)(m0) ≠ [], m0 < n1, m0 < n2, n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ n0. lfgen(n0)(0) = a ' ∧ (∀ m. m < n0 → lfgen(n0)(m + 1) = nextl(m, lfgen(n0)(m).last) ∧ lfgen(n0)(m) ≠ []) ⊦ |
lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n2)(m0).last), lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(0)(0) = a ', lfgen(n1)(0) = a ', lfgen(n2)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), lfgen(n2)(m0) ≠ [], m0 < n2, m0 < n1, n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [] ⊦
Used terms: n2
| lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n2)(m0).last), lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(0)(0) = a ', lfgen(n1)(0) = a ', lfgen(n2)(0) = a ', lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), lfgen(n2)(m0) ≠ [], m0 < n2, m0 < n1, n1 ≤ n2, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [] ⊦ |
lfgen(n2)(0) = a ', lfgen(n1)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n2)(m0).last), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), lfgen(n2)(m0) ≠ [], m0 < n1, m0 < n2, n1 ≤ n2, ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦
| lfgen(n2)(0) = a ', lfgen(n1)(0) = a ', lfgen(0)(0) = a ', lfgen(n1)(m0) = lfgen(n2)(m0), lfgen(n1)(m0 + 1) = nextl(m0, lfgen(n2)(m0).last), lfgen(n1)(m0 + 1) ≠ lfgen(n2)(m0 + 1), lfgen(n2)(m0) ≠ [], m0 < n1, m0 < n2, n1 ≤ n2, ∀ m. m < n2 → lfgen(n2)(m + 1) = nextl(m, lfgen(n2)(m).last) ∧ lfgen(n2)(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ |
Used terms: m0
| ∀ n, a. nextl(n, a) ≠ [] ⊦ ∀ n. ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []), ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ []) |
∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ []), ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])
| ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ n. lf(n + 1) = nextl(n, lf(n).last) ∧ lf(n) ≠ []), ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) |
∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])
| ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. m < n → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) |
∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. m < 0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])
∀ n, a. nextl(n, a) ≠ [], ∀ nextl, a. (∀ n, a. nextl(n, a) ≠ []) → (∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])) ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 +1 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])
Used simplifier rules: nat freely generated by 0, +1;;
| ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. m < 0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) |
∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a '
Used simplifier rules: ⊦ ¬ n < 0; (s)
| ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' |
Used terms: λ n. a '
| ∀ n, a. nextl(n, a) ≠ [], ∀ nextl, a. (∀ n, a. nextl(n, a) ≠ []) → (∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])) ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 +1 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) |
∀ nextl, a. (∀ n, a. nextl(n, a) ≠ []) → (∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. ¬ n0 < m → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(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) ⊦ m +1 = m + 1; (s)
| ∀ nextl, a. (∀ n, a. nextl(n, a) ≠ []) → (∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. ¬ n0 < m → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) |
(∀ n, a. nextl(n, a) ≠ []) → (∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. ¬ n0 < m → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])
Used terms: nextl, a
| (∀ n, a. nextl(n, a) ≠ []) → (∃ lf. lf(0) = a ' ∧ (∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])), ∀ n, a. nextl(n, a) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. ¬ n0 < m → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) |
lf(0) = a ', ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. ¬ n0 < m → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [])
| lf(0) = a ', ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ ∃ lf. lf(0) = a ' ∧ (∀ m. ¬ n0 < m → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ []) |
lf(0) = a ', ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ (0 = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(0)) = a ' ∧ (∀ m. ¬ n0 < m → (m + 1 = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m + 1)) = nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last) ∧ (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) ≠ [])
Used terms: λ n1. (n1 = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(n1))
| lf(0) = a ', ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ (0 = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(0)) = a ' ∧ (∀ m. ¬ n0 < m → (m + 1 = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m + 1)) = nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last) ∧ (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) ≠ []) |
lf(0) = a ', m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ (m = n0 ⊃ nextl(n0, lf(n0).last);lf(m + 1)) = nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last) ∧ (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) ≠ []
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 = m + n0 ↔ n = n0; (s) ⊦ m + 1 ≠ 0; (s)
| lf(0) = a ', m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ (m = n0 ⊃ nextl(n0, lf(n0).last);lf(m + 1)) = nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last) ∧ (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) ≠ [] |
lf(0) = a ', (m = n0 ⊃ nextl(n0, lf(n0).last);lf(m + 1)) ≠ nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last), m ≤ n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦
(m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) = [], lf(0) = a ', m ≤ n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦
| lf(0) = a ', (m = n0 ⊃ nextl(n0, lf(n0).last);lf(m + 1)) ≠ nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last), m ≤ n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ |
lf(0) = a ', lf(m + 1) ≠ nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last), m ≠ n0, m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦
Used simplifier rules: ⊦ m = m + n ↔ n = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| lf(0) = a ', lf(m + 1) ≠ nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last), m ≠ n0, m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ |
lf(0) = a ', lf(m + 1) ≠ nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last), m ≠ n0, m < n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)
| lf(0) = a ', lf(m + 1) ≠ nextl(m, (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)).last), m ≠ n0, m < n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ |
lf(0) = a ', lf(m + 1) ≠ nextl(m, lf(m).last), m ≠ n0 + 1, m ≠ n0, m < n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦
Used simplifier rules: ⊦ m = 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
| lf(0) = a ', lf(m + 1) ≠ nextl(m, lf(m).last), m ≠ n0 + 1, m ≠ n0, m < n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ |
lf(0) = a ', lf(m + 1) ≠ nextl(m, lf(m).last), m ≠ n0 + 1, m ≠ n0, m < n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦
| lf(0) = a ', lf(m + 1) ≠ nextl(m, lf(m).last), m ≠ n0 + 1, m ≠ n0, m < n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ |
Used terms: m
| (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) = [], lf(0) = a ', m ≤ n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ |
(m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) = [], lf(0) = a ', m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦
| (m = n0 + 1 ⊃ nextl(n0, lf(n0).last);lf(m)) = [], lf(0) = a ', m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ |
lf(0) = a ', lf(m) = [], m ≠ n0 + 1, m ≤ n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| lf(0) = a ', lf(m) = [], m ≠ n0 + 1, m ≤ n0, ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ |
lf(m) = [], lf(0) = a ', m ≠ n0 + 1, m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦
| lf(m) = [], lf(0) = a ', m ≠ n0 + 1, m ≤ n0, ∀ n, a. nextl(n, a) ≠ [], ∀ m. m < n0 → lf(m + 1) = nextl(m, lf(m).last) ∧ lf(m) ≠ [] ⊦ |
lf(0) = a ', lf(m) = [], m ≠ n0 + 1, m ≤ n0, m - 1 < n0 → lf((m - 1) + 1) = nextl(m - 1, lf(m - 1).last) ∧ lf(m - 1) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦
Used terms: m - 1
| lf(0) = a ', lf(m) = [], m ≠ n0 + 1, m ≤ n0, m - 1 < n0 → lf((m - 1) + 1) = nextl(m - 1, lf(m - 1).last) ∧ lf(m - 1) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ |
lf(m) = [], lf(0) = a ', m = m0 + 1, m ≠ 0, m ≠ n0 + 1, m ≤ n0, m0 < n0 → lf(m0 + 1) = nextl(m0, lf(m0).last) ∧ lf(m0) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦
Used simplifier rules: ⊦ m + 1 ≠ 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ 0 ≤ m; (s) ⊦ a ' ≠ []; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: m, m0
| lf(m) = [], lf(0) = a ', m = m0 + 1, m ≠ 0, m ≠ n0 + 1, m ≤ n0, m0 < n0 → lf(m0 + 1) = nextl(m0, lf(m0).last) ∧ lf(m0) ≠ [], ∀ n, a. nextl(n, a) ≠ [] ⊦ |
[] = nextl(m0, lf(m0).last), lf(m0 + 1) = [], lf(0) = a ', lf(m0) ≠ [], m0 ≠ n0, m0 < n0, ∀ n, a. nextl(n, a) ≠ [] ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (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 + 1 ≤ n ↔ m < n; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m + 1 ≠ 0; (s)
| [] = nextl(m0, lf(m0).last), lf(m0 + 1) = [], lf(0) = a ', lf(m0) ≠ [], m0 ≠ n0, m0 < n0, ∀ n, a. nextl(n, a) ≠ [] ⊦ |
Used terms: m0, lf(m0).last
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.