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