| ⊦ n ≠ 0 → (rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))) |
n ≠ 0 ⊦ rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))
| n ≠ 0 ⊦ rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)) |
n ≠ 0 ⊦ rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2))
| n ≠ 0 ⊦ rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n - 1, pelem)(a1, a) ∧ pelem(a, a2)) |
n = n0 + 1, n ≠ 0 ⊦ rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n0, pelem)(a1, a) ∧ pelem(a, a2))
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, n0
| n = n0 + 1, n ≠ 0 ⊦ rtc(n, pelem)(a1, a2) ↔ (∃ a. rtc(n0, pelem)(a1, a) ∧ pelem(a, a2)) |
⊦ (∃ a. pelem(a1, a) ∧ rtc(n0, pelem)(a, a2)) ↔ (∃ a. rtc(n0, pelem)(a1, a) ∧ pelem(a, a2))
Used simplifier rules: rtc-rec: ⊦ rtc(n + 1, pelem)(a1, a2) ↔ (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)); c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| ⊦ (∃ a. pelem(a1, a) ∧ rtc(n0, pelem)(a, a2)) ↔ (∃ a. rtc(n0, pelem)(a1, a) ∧ pelem(a, a2)) |
∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ (∃ a. pelem(a1, a) ∧ rtc(n.+1, pelem)(a, a2)) ↔ (∃ a. rtc(n.+1, pelem)(a1, a) ∧ pelem(a, a2))
Used simplifier rules: rtc-base: ⊦ rtc(0, pelem)(a1, a2) ↔ a1 = a2; Nat freely generated by 0, +1;
| ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ (∃ a. pelem(a1, a) ∧ rtc(n.+1, pelem)(a, a2)) ↔ (∃ a. rtc(n.+1, pelem)(a1, a) ∧ pelem(a, a2)) |
∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ (∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2))) ↔ (∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2))
Used simplifier rules: rtc-rec: ⊦ rtc(n + 1, pelem)(a1, a2) ↔ (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)); c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m.+1 = m + 1; (s)
| ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ (∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2))) ↔ (∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2)) |
∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)), ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2)
∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)), ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2))
| ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)), ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2) |
pelem(a1, a), pelem(a, a0), rtc(n, pelem)(a0, a2), ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2)
| pelem(a1, a), pelem(a, a0), rtc(n, pelem)(a0, a2), ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2) |
pelem(a, a0), pelem(a1, a), rtc(n, pelem)(a0, a2), (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) ↔ (∃ a0. rtc(n, pelem)(a, a0) ∧ pelem(a0, a2)) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2)
Used terms: pelem, a, a2
| pelem(a, a0), pelem(a1, a), rtc(n, pelem)(a0, a2), (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) ↔ (∃ a0. rtc(n, pelem)(a, a0) ∧ pelem(a0, a2)) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2) |
pelem(a1, a), pelem(a, a0), rtc(n, pelem)(a0, a2) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2), ∃ a0. rtc(n, pelem)(a, a0) ∧ pelem(a0, a2), ∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)
pelem(a1, a), pelem(a, a0), rtc(n, pelem)(a0, a2), ∃ a0. rtc(n, pelem)(a, a0) ∧ pelem(a0, a2), ∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2)
| pelem(a1, a), pelem(a, a0), rtc(n, pelem)(a0, a2) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2), ∃ a0. rtc(n, pelem)(a, a0) ∧ pelem(a0, a2), ∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2) |
Used terms: a0
| pelem(a1, a), pelem(a, a0), rtc(n, pelem)(a0, a2), ∃ a0. rtc(n, pelem)(a, a0) ∧ pelem(a0, a2), ∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2) |
pelem(a, a4), pelem(a3, a2), pelem(a, a0), pelem(a1, a), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a, a3), rtc(n, pelem)(a0, a2) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2)
| pelem(a, a4), pelem(a3, a2), pelem(a, a0), pelem(a1, a), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a, a3), rtc(n, pelem)(a0, a2) ⊦ ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2) |
pelem(a1, a), pelem(a, a0), pelem(a3, a2), pelem(a, a4), rtc(n, pelem)(a0, a2), rtc(n, pelem)(a, a3), rtc(n, pelem)(a4, a2) ⊦ (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a3)) ∧ pelem(a3, a2)
Used terms: a3
| pelem(a1, a), pelem(a, a0), pelem(a3, a2), pelem(a, a4), rtc(n, pelem)(a0, a2), rtc(n, pelem)(a, a3), rtc(n, pelem)(a4, a2) ⊦ (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a3)) ∧ pelem(a3, a2) |
pelem(a, a4), pelem(a3, a2), pelem(a, a0), pelem(a1, a), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a, a3), rtc(n, pelem)(a0, a2) ⊦ ∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a3)
| pelem(a, a4), pelem(a3, a2), pelem(a, a0), pelem(a1, a), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a, a3), rtc(n, pelem)(a0, a2) ⊦ ∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a3) |
Used terms: a
| ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)), ∃ a. (∃ a0. pelem(a1, a0) ∧ rtc(n, pelem)(a0, a)) ∧ pelem(a, a2) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) |
pelem(a1, a0), pelem(a, a2), rtc(n, pelem)(a0, a), ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2))
| pelem(a1, a0), pelem(a, a2), rtc(n, pelem)(a0, a), ∀ pelem, a1, a2. (∃ a. pelem(a1, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a1, a) ∧ pelem(a, a2)) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) |
pelem(a, a2), pelem(a1, a0), rtc(n, pelem)(a0, a), (∃ a. pelem(a0, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a0, a) ∧ pelem(a, a2)) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2))
Used terms: pelem, a0, a2
| pelem(a, a2), pelem(a1, a0), rtc(n, pelem)(a0, a), (∃ a. pelem(a0, a) ∧ rtc(n, pelem)(a, a2)) ↔ (∃ a. rtc(n, pelem)(a0, a) ∧ pelem(a, a2)) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) |
pelem(a1, a0), pelem(a, a2), rtc(n, pelem)(a0, a) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)), ∃ a. rtc(n, pelem)(a0, a) ∧ pelem(a, a2), ∃ a. pelem(a0, a) ∧ rtc(n, pelem)(a, a2)
pelem(a1, a0), pelem(a, a2), rtc(n, pelem)(a0, a), ∃ a. rtc(n, pelem)(a0, a) ∧ pelem(a, a2), ∃ a. pelem(a0, a) ∧ rtc(n, pelem)(a, a2) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2))
| pelem(a1, a0), pelem(a, a2), rtc(n, pelem)(a0, a) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)), ∃ a. rtc(n, pelem)(a0, a) ∧ pelem(a, a2), ∃ a. pelem(a0, a) ∧ rtc(n, pelem)(a, a2) |
Used terms: a
| pelem(a1, a0), pelem(a, a2), rtc(n, pelem)(a0, a), ∃ a. rtc(n, pelem)(a0, a) ∧ pelem(a, a2), ∃ a. pelem(a0, a) ∧ rtc(n, pelem)(a, a2) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) |
pelem(a0, a4), pelem(a3, a2), pelem(a, a2), pelem(a1, a0), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a0, a3), rtc(n, pelem)(a0, a) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2))
| pelem(a0, a4), pelem(a3, a2), pelem(a, a2), pelem(a1, a0), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a0, a3), rtc(n, pelem)(a0, a) ⊦ ∃ a. pelem(a1, a) ∧ (∃ a0. pelem(a, a0) ∧ rtc(n, pelem)(a0, a2)) |
pelem(a1, a0), pelem(a, a2), pelem(a3, a2), pelem(a0, a4), rtc(n, pelem)(a0, a), rtc(n, pelem)(a0, a3), rtc(n, pelem)(a4, a2) ⊦ pelem(a1, a0) ∧ (∃ a1. pelem(a0, a1) ∧ rtc(n, pelem)(a1, a2))
Used terms: a0
| pelem(a1, a0), pelem(a, a2), pelem(a3, a2), pelem(a0, a4), rtc(n, pelem)(a0, a), rtc(n, pelem)(a0, a3), rtc(n, pelem)(a4, a2) ⊦ pelem(a1, a0) ∧ (∃ a1. pelem(a0, a1) ∧ rtc(n, pelem)(a1, a2)) |
pelem(a0, a4), pelem(a3, a2), pelem(a, a2), pelem(a1, a0), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a0, a3), rtc(n, pelem)(a0, a) ⊦ ∃ a1. pelem(a0, a1) ∧ rtc(n, pelem)(a1, a2)
| pelem(a0, a4), pelem(a3, a2), pelem(a, a2), pelem(a1, a0), rtc(n, pelem)(a4, a2), rtc(n, pelem)(a0, a3), rtc(n, pelem)(a0, a) ⊦ ∃ a1. pelem(a0, a1) ∧ rtc(n, pelem)(a1, a2) |
Used terms: a4
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.