| ⊦ ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n))) |
∀ n. ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n)))
⊦ ∀ n. ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1)), ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n)))
Used formulas: ∀ n. ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1))
| ∀ n. ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n))) |
∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n)))
| ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n))) |
∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ nfgen(0)(0) = a ∧ (∀ n. nfgen(n + 1)(n + 1) = f(nfgen(n)(n)))
Used terms: λ n. nfgen(n)(n)
| ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ nfgen(0)(0) = a ∧ (∀ n. nfgen(n + 1)(n + 1) = f(nfgen(n)(n))) |
∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ nfgen(0)(0) = a ∧ nfgen(n + 1)(n + 1) = f(nfgen(n)(n))
| ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ nfgen(0)(0) = a ∧ nfgen(n + 1)(n + 1) = f(nfgen(n)(n)) |
nfgen(0)(0) ≠ a, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
| nfgen(0)(0) ≠ a, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
Used terms: 0
| nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m) ⊦
nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m)
Used formulas: ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m)
| nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m) ⊦ |
nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), n ≤ n ∧ n ≤ n + 1 → nfgen(n)(n) = nfgen(n + 1)(n), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
Used terms: n, n, n + 1
| nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), n ≤ n ∧ n ≤ n + 1 → nfgen(n)(n) = nfgen(n + 1)(n), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n)(n) = nfgen(n + 1)(n), nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(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 ≤ m + n; (s) ⊦ m ≤ m; (s)
| nfgen(n)(n) = nfgen(n + 1)(n), nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m) ⊦ |
nfgen(n)(n) = nfgen(n + 1)(n), nfgen(n + 1)(0) = a, nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m. m < n + 1 → f(nfgen(n + 1)(m)) = nfgen(n + 1)(m + 1) ⊦
Used terms: n + 1
| nfgen(n)(n) = nfgen(n + 1)(n), nfgen(n + 1)(0) = a, nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m. m < n + 1 → f(nfgen(n + 1)(m)) = nfgen(n + 1)(m + 1) ⊦ |
nfgen(n)(n) = nfgen(n + 1)(n), nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = nfgen(n + 1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m), ∀ m. ¬ n < m → f(nfgen(n + 1)(m)) = nfgen(n + 1)(m + 1) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| nfgen(n)(n) = nfgen(n + 1)(n), nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = nfgen(n + 1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m), ∀ m. ¬ n < m → f(nfgen(n + 1)(m)) = nfgen(n + 1)(m + 1) ⊦ |
Used simplifier rules: ⊦ ¬ n < n; (s) Used terms: n
| nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ ∀ m, n1, n2. m ≤ n1 ∧ m ≤ n2 → nfgen(n1)(m) = nfgen(n2)(m) |
nfgen(n1)(m) ≠ nfgen(n2)(m), nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), m ≤ n1, m ≤ n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
| nfgen(n1)(m) ≠ nfgen(n2)(m), nfgen(n + 1)(n + 1) ≠ f(nfgen(n)(n)), m ≤ n1, m ≤ n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n1)(m) ≠ nfgen(n2)(m), m ≤ n2, m ≤ n1, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
| nfgen(n1)(m) ≠ nfgen(n2)(m), m ≤ n2, m ≤ n1, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n1)(0) ≠ nfgen(n2)(0), 0 ≤ n1, 0 ≤ n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
nfgen(n1)(m0 +1) ≠ nfgen(n2)(m0 +1), m0 +1 ≤ n1, m0 +1 ≤ n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ nfgen, n1, n2, a, f. ¬(nfgen(n1)(m0) ≠ nfgen(n2)(m0) ∧ m0 ≤ n2 ∧ m0 ≤ n1 ∧ (∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)))) ⊦
Used simplifier rules: nat freely generated by 0, +1;;
| nfgen(n1)(0) ≠ nfgen(n2)(0), 0 ≤ n1, 0 ≤ n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n1)(0) ≠ nfgen(n2)(0), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s)
| nfgen(n1)(0) ≠ nfgen(n2)(0), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n1)(0) = a, nfgen(n1)(0) ≠ nfgen(n2)(0), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1) ⊦
Used terms: n1
| nfgen(n1)(0) = a, nfgen(n1)(0) ≠ nfgen(n2)(0), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1) ⊦ |
nfgen(n1)(0) ≠ nfgen(n2)(0), ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1), ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
| nfgen(n1)(0) ≠ nfgen(n2)(0), ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1), ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
Used terms: n2
| nfgen(n1)(m0 +1) ≠ nfgen(n2)(m0 +1), m0 +1 ≤ n1, m0 +1 ≤ n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ nfgen, n1, n2, a, f. ¬(nfgen(n1)(m0) ≠ nfgen(n2)(m0) ∧ m0 ≤ n2 ∧ m0 ≤ n1 ∧ (∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)))) ⊦ |
nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ nfgen0, n, n0, a0, f0. nfgen0(n)(m0) = nfgen0(n0)(m0) ∨ ¬ m0 ≤ n0 ∨ ¬ m0 ≤ n ∨ ¬(∀ n0. nfgen0(n0)(0) = a0 ∧ (∀ m. m < n0 → f0(nfgen0(n0)(m)) = nfgen0(n0)(m + 1))), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
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 +1 = m + 1; (s)
| nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ nfgen0, n, n0, a0, f0. nfgen0(n)(m0) = nfgen0(n0)(m0) ∨ ¬ m0 ≤ n0 ∨ ¬ m0 ≤ n ∨ ¬(∀ n0. nfgen0(n0)(0) = a0 ∧ (∀ m. m < n0 → f0(nfgen0(n0)(m)) = nfgen0(n0)(m + 1))), ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), nfgen(n1)(m0) = nfgen(n2)(m0) ∨ ¬ m0 ≤ n2 ∨ ¬ m0 ≤ n1 ∨ ¬(∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1))) ⊦
Used terms: nfgen, n1, n2, a, f
| nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), nfgen(n1)(m0) = nfgen(n2)(m0) ∨ ¬ m0 ≤ n2 ∨ ¬ m0 ≤ n1 ∨ ¬(∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1))) ⊦ |
nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s)
| nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(0) = a, nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1) ⊦
Used terms: n1
| nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(0) = a, nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, ∀ n0. nfgen(n0)(0) = a ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)), ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1) ⊦ |
nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1), ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
| nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ m. m < n1 → f(nfgen(n1)(m)) = nfgen(n1)(m + 1), ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, m0 < n1 → f(nfgen(n1)(m0)) = nfgen(n1)(m0 + 1), ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
Used terms: m0
| nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, m0 < n1 → f(nfgen(n1)(m0)) = nfgen(n1)(m0 + 1), ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
f(nfgen(n2)(m0)) = nfgen(n1)(m0 + 1), nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦
| f(nfgen(n2)(m0)) = nfgen(n1)(m0 + 1), nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n1, m0 < n2, ∀ n0. nfgen(n0)(0) = nfgen(n1)(0) ∧ (∀ m. m < n0 → f(nfgen(n0)(m)) = nfgen(n0)(m + 1)) ⊦ |
f(nfgen(n2)(m0)) = nfgen(n1)(m0 + 1), nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n2)(0) = nfgen(n1)(0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, ∀ m. m < n2 → f(nfgen(n2)(m)) = nfgen(n2)(m + 1) ⊦
Used terms: n2
| f(nfgen(n2)(m0)) = nfgen(n1)(m0 + 1), nfgen(n1)(m0) = nfgen(n2)(m0), nfgen(n2)(0) = nfgen(n1)(0), nfgen(n1)(m0 + 1) ≠ nfgen(n2)(m0 + 1), m0 < n2, m0 < n1, ∀ m. m < n2 → f(nfgen(n2)(m)) = nfgen(n2)(m + 1) ⊦ |
Used terms: m0
| ⊦ ∀ n. ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1)), ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n))) |
⊦ ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n))), ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1))
| ⊦ ∃ nf. nf(0) = a ∧ (∀ n. nf(n + 1) = f(nf(n))), ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1)) |
⊦ ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1))
| ⊦ ∃ nf. nf(0) = a ∧ (∀ m. m < n → f(nf(m)) = nf(m + 1)) |
⊦ ∃ nf. nf(0) = a ∧ (∀ m. m < 0 → f(nf(m)) = nf(m + 1))
∀ a, f. ∃ nf. nf(0) = a ∧ (∀ m. m < n0 → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ m. m < n0 +1 → f(nf(m)) = nf(m + 1))
Used simplifier rules: nat freely generated by 0, +1;;
| ⊦ ∃ nf. nf(0) = a ∧ (∀ m. m < 0 → f(nf(m)) = nf(m + 1)) |
⊦ ∃ nf. nf(0) = a
Used simplifier rules: ⊦ ¬ n < 0; (s)
| ⊦ ∃ nf. nf(0) = a |
Used terms: λ n. a
| ∀ a, f. ∃ nf. nf(0) = a ∧ (∀ m. m < n0 → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ m. m < n0 +1 → f(nf(m)) = nf(m + 1)) |
∀ a, f. ∃ nf. nf(0) = a ∧ (∀ m. m < n0 → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ m. ¬ n0 < m → f(nf(m)) = nf(m + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s)
| ∀ a, f. ∃ nf. nf(0) = a ∧ (∀ m. m < n0 → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ m. ¬ n0 < m → f(nf(m)) = nf(m + 1)) |
∃ nf. nf(0) = a ∧ (∀ m. m < n0 → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ m. ¬ n0 < m → f(nf(m)) = nf(m + 1))
Used terms: a, f
| ∃ nf. nf(0) = a ∧ (∀ m. m < n0 → f(nf(m)) = nf(m + 1)) ⊦ ∃ nf. nf(0) = a ∧ (∀ m. ¬ n0 < m → f(nf(m)) = nf(m + 1)) |
∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ ∃ nf0. nf0(0) = nf(0) ∧ (∀ m. ¬ n0 < m → f(nf0(m)) = nf0(m + 1))
| ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ ∃ nf0. nf0(0) = nf(0) ∧ (∀ m. ¬ n0 < m → f(nf0(m)) = nf0(m + 1)) |
∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ (0 = n0 + 1 ⊃ f(nf(n0));nf(0)) = nf(0) ∧ (∀ m. ¬ n0 < m → f((m = n0 + 1 ⊃ f(nf(n0));nf(m))) = (m + 1 = n0 + 1 ⊃ f(nf(n0));nf(m + 1)))
Used terms: λ m. (m = n0 + 1 ⊃ f(nf(n0));nf(m))
| ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ (0 = n0 + 1 ⊃ f(nf(n0));nf(0)) = nf(0) ∧ (∀ m. ¬ n0 < m → f((m = n0 + 1 ⊃ f(nf(n0));nf(m))) = (m + 1 = n0 + 1 ⊃ f(nf(n0));nf(m + 1))) |
f((m = n0 + 1 ⊃ f(nf(n0));nf(m))) ≠ (m = n0 ⊃ f(nf(n0));nf(m + 1)), m ≤ n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦
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)
| f((m = n0 + 1 ⊃ f(nf(n0));nf(m))) ≠ (m = n0 ⊃ f(nf(n0));nf(m + 1)), m ≤ n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ |
f(nf(m)) ≠ (m = n0 ⊃ f(nf(n0));nf(m + 1)), m ≠ n0 + 1, m ≤ n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦
Used simplifier rules: ⊦ m = m + n ↔ n = 0; (s) ⊦ 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
| f(nf(m)) ≠ (m = n0 ⊃ f(nf(n0));nf(m + 1)), m ≠ n0 + 1, m ≤ n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ |
f(nf(m)) ≠ nf(m + 1), m ≠ n0, m ≠ n0 + 1, m ≤ n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦
| f(nf(m)) ≠ nf(m + 1), m ≠ n0, m ≠ n0 + 1, m ≤ n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ |
f(nf(m)) ≠ nf(m + 1), m ≠ n0 + 1, m ≠ n0, m < n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦
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)
| f(nf(m)) ≠ nf(m + 1), m ≠ n0 + 1, m ≠ n0, m < n0, ∀ m. m < n0 → f(nf(m)) = nf(m + 1) ⊦ |
Used terms: m
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.