| ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∀ n. ∃ nf. nf(0) = a ∧ ok(nf(n)) ∧ (∀ m. m < n → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m))) |
ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n)) ∧ (∀ m. m < n → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))
| ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n)) ∧ (∀ m. m < n → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m))) |
ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(0)) ∧ (∀ m. m < 0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))
ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ a, elemf. ok(a) ∧ (∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b))) → (∃ nf. nf(0) = a ∧ ok(nf(n0)) ∧ (∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n0 +1)) ∧ (∀ m. m < n0 +1 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))
Used simplifier rules: nat freely generated by 0, +1;;
| ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(0)) ∧ (∀ m. m < 0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m))) |
ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a
Used simplifier rules: ⊦ ¬ n < 0; (s)
| ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a |
Used terms: λ n. a
| ok(a), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ a, elemf. ok(a) ∧ (∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b))) → (∃ nf. nf(0) = a ∧ ok(nf(n0)) ∧ (∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n0 +1)) ∧ (∀ m. m < n0 +1 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m))) |
ok(a), ∀ a, elemf. ok(a) ∧ (∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b))) → (∃ nf. nf(0) = a ∧ ok(nf(n0)) ∧ (∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(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)
| ok(a), ∀ a, elemf. ok(a) ∧ (∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b))) → (∃ nf. nf(0) = a ∧ ok(nf(n0)) ∧ (∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m))) |
ok(a), ok(a) ∧ (∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b))) → (∃ nf. nf(0) = a ∧ ok(nf(n0)) ∧ (∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))
Used terms: a, elemf
| ok(a), ok(a) ∧ (∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b))) → (∃ nf. nf(0) = a ∧ ok(nf(n0)) ∧ (∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf. nf(0) = a ∧ ok(nf(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m))) |
ok(nf(n0)), ok(nf(0)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf0. nf0(0) = nf(0) ∧ ok(nf0(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf0(m)) ∧ nf0(m + 1) = elemf(nf0(m)))
| ok(nf(n0)), ok(nf(0)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ∃ nf0. nf0(0) = nf(0) ∧ ok(nf0(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf0(m)) ∧ nf0(m + 1) = elemf(nf0(m))) |
ok(nf(0)), ok(nf(n0)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ nf(n0 + 1; elemf(nf(n0)))(0) = nf(0) ∧ ok(nf(n0 + 1; elemf(nf(n0)))(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf(n0 + 1; elemf(nf(n0)))(m)) ∧ nf(n0 + 1; elemf(nf(n0)))(m + 1) = elemf(nf(n0 + 1; elemf(nf(n0)))(m)))
Used terms: nf(n0 + 1; elemf(nf(n0)))
| ok(nf(0)), ok(nf(n0)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ nf(n0 + 1; elemf(nf(n0)))(0) = nf(0) ∧ ok(nf(n0 + 1; elemf(nf(n0)))(n0 + 1)) ∧ (∀ m. ¬ n0 < m → ok(nf(n0 + 1; elemf(nf(n0)))(m)) ∧ nf(n0 + 1; elemf(nf(n0)))(m + 1) = elemf(nf(n0 + 1; elemf(nf(n0)))(m))) |
ok(nf(n0)), ok(nf(0)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ok(elemf(nf(n0))) ∧ (¬ n0 < m → ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))) ∧ (n0 = m ⊃ elemf(nf(m));nf(m + 1)) = elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(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 = m + n0 ↔ n = n0; (s) ⊦ m + 1 ≠ 0; (s)
| ok(nf(n0)), ok(nf(0)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ok(elemf(nf(n0))) ∧ (¬ n0 < m → ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))) ∧ (n0 = m ⊃ elemf(nf(m));nf(m + 1)) = elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m)))) |
ok(nf(0)), ok(nf(n0)), ok(nf(n0)) → rel(nf(n0), elemf(nf(n0))) ∧ ok(elemf(nf(n0))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ ok(elemf(nf(n0))) ∧ (¬ n0 < m → ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))) ∧ (n0 = m ⊃ elemf(nf(m));nf(m + 1)) = elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))))
Used terms: nf(n0)
| ok(nf(0)), ok(nf(n0)), ok(nf(n0)) → rel(nf(n0), elemf(nf(n0))) ∧ ok(elemf(nf(n0))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ ok(elemf(nf(n0))) ∧ (¬ n0 < m → ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))) ∧ (n0 = m ⊃ elemf(nf(m));nf(m + 1)) = elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m)))) |
ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))) ∧ (n0 = m ⊃ elemf(nf(m));nf(m + 1)) = elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m)))
| ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))) ∧ (n0 = m ⊃ elemf(nf(m));nf(m + 1)) = elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))) |
ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ¬ ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦
(n0 = m ⊃ elemf(nf(m));nf(m + 1)) ≠ elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦
| ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ¬ ok((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ |
n0 + 1 ≠ m, ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ¬ ok(nf(m)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦
| n0 + 1 ≠ m, ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ¬ ok(nf(m)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ |
n0 + 1 ≠ m, ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ¬ ok(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦
| n0 + 1 ≠ m, ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ¬ ok(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ |
Used simplifier rules: ⊦ ¬ m < n → (n < m ↔ n ≠ m); (ss) Used terms: m
| (n0 = m ⊃ elemf(nf(m));nf(m + 1)) ≠ elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ |
n0 ≠ m, nf(m + 1) ≠ elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦
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
| n0 ≠ m, nf(m + 1) ≠ elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ¬ n0 < m, ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ |
n0 ≠ m, nf(m + 1) ≠ elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), m < n0, ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss)
| n0 ≠ m, nf(m + 1) ≠ elemf((n0 + 1 = m ⊃ elemf(nf(n0));nf(m))), m < n0, ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ |
n0 + 1 ≠ m, n0 ≠ m, nf(m + 1) ≠ elemf(nf(m)), m < n0, ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦
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
| n0 + 1 ≠ m, n0 ≠ m, nf(m + 1) ≠ elemf(nf(m)), m < n0, ok(elemf(nf(n0))), ok(nf(0)), ok(nf(n0)), rel(nf(n0), elemf(nf(n0))), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)) ⊦ |
n0 + 1 ≠ m, n0 ≠ m, nf(m + 1) ≠ elemf(nf(m)), m < n0, ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦
| n0 + 1 ≠ m, n0 ≠ m, nf(m + 1) ≠ elemf(nf(m)), m < n0, ok(nf(n0)), ok(nf(0)), ok(elemf(nf(n0))), rel(nf(n0), elemf(nf(n0))), ∀ m. m < n0 → ok(nf(m)) ∧ nf(m + 1) = elemf(nf(m)), ∀ b. ok(b) → rel(b, elemf(b)) ∧ ok(elemf(b)) ⊦ |
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.