| ⊦ 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)) |
∃ c. pelem(a, c) ∧ rtc(n0, pelem)(c, b) ⊦ ∃ c. rtc(n0, pelem)(a, c) ∧ pelem(c, b)
∃ c. rtc(n0, pelem)(a, c) ∧ pelem(c, b) ⊦ ∃ c. pelem(a, c) ∧ rtc(n0, pelem)(c, b)
| ∃ c. pelem(a, c) ∧ rtc(n0, pelem)(c, b) ⊦ ∃ c. rtc(n0, pelem)(a, c) ∧ pelem(c, b) |
pelem(a, b0), rtc(n0, pelem)(b0, b) ⊦ ∃ c. rtc(n0, pelem)(a, c) ∧ pelem(c, b)
| pelem(a, b0), rtc(n0, pelem)(b0, b) ⊦ ∃ c. rtc(n0, pelem)(a, c) ∧ pelem(c, b) |
pelem(a, b0), rtc(n +1, pelem)(b0, b), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ 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, b0), rtc(n +1, pelem)(b0, b), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. rtc(n +1, pelem)(a, c) ∧ pelem(c, b) |
pelem(a, b0), pelem(b0, a0), rtc(n, pelem)(a0, b), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, 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, b0), pelem(b0, a0), rtc(n, pelem)(a0, b), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, c)) ∧ pelem(c, b) |
pelem(b0, a0), pelem(a, b0), rtc(n, pelem)(a0, b), pelem(b0, a0) ∧ rtc(n, pelem)(a0, b) → (∃ c. rtc(n, pelem)(b0, c) ∧ pelem(c, b)), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, c)) ∧ pelem(c, b)
Used terms: pelem, b0, a0, b
| pelem(b0, a0), pelem(a, b0), rtc(n, pelem)(a0, b), pelem(b0, a0) ∧ rtc(n, pelem)(a0, b) → (∃ c. rtc(n, pelem)(b0, c) ∧ pelem(c, b)), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, 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, b0), pelem(b0, a0), pelem(a1, b), rtc(n, pelem)(a0, b), rtc(n, pelem)(b0, a1), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, 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, b0), pelem(b0, a0), pelem(a1, b), rtc(n, pelem)(a0, b), rtc(n, pelem)(b0, a1), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, c)) ∧ pelem(c, b) |
pelem(a1, b), pelem(b0, a0), pelem(a, b0), rtc(n, pelem)(b0, a1), rtc(n, pelem)(a0, b), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, c)) ∧ pelem(c, b), (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, a1)) ∧ pelem(a1, b)
Used terms: a1
| pelem(a1, b), pelem(b0, a0), pelem(a, b0), rtc(n, pelem)(b0, a1), rtc(n, pelem)(a0, b), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, c)) ∧ pelem(c, b), (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, a1)) ∧ pelem(a1, b) |
pelem(a, b0), pelem(b0, a0), pelem(a1, b), rtc(n, pelem)(a0, b), rtc(n, pelem)(b0, a1), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, c)) ∧ pelem(c, b), ∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, a1)
| pelem(a, b0), pelem(b0, a0), pelem(a1, b), rtc(n, pelem)(a0, b), rtc(n, pelem)(b0, a1), ∀ pelem, a, b0, b. pelem(a, b0) ∧ rtc(n, pelem)(b0, b) → (∃ c. rtc(n, pelem)(a, c) ∧ pelem(c, b)) ⊦ ∃ c. (∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, c)) ∧ pelem(c, b), ∃ c0. pelem(a, c0) ∧ rtc(n, pelem)(c0, a1) |
Used terms: b0
| ∃ c. rtc(n0, pelem)(a, c) ∧ pelem(c, b) ⊦ ∃ c. pelem(a, c) ∧ rtc(n0, pelem)(c, b) |
pelem(b0, b), rtc(n0, pelem)(a, b0) ⊦ ∃ c. pelem(a, c) ∧ rtc(n0, pelem)(c, b)
| pelem(b0, b), rtc(n0, pelem)(a, b0) ⊦ ∃ c. pelem(a, c) ∧ rtc(n0, pelem)(c, b) |
pelem(b0, b), rtc(n +1, pelem)(a, b0), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ rtc(n +1, pelem)(c, b)
Used simplifier rules: rtc-base: ⊦ rtc(0, pelem)(a, b) ↔ a = b; nat freely generated by 0, +1;;
| pelem(b0, b), rtc(n +1, pelem)(a, b0), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ rtc(n +1, pelem)(c, b) |
pelem(b0, b), pelem(a, b1), rtc(n, pelem)(b1, b0), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, 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(b0, b), pelem(a, b1), rtc(n, pelem)(b1, b0), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b)) |
pelem(a, b1), pelem(b0, b), rtc(n, pelem)(b1, b0), pelem(b0, b) ∧ rtc(n, pelem)(b1, b0) → (∃ c. pelem(b1, c) ∧ rtc(n, pelem)(c, b)), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b))
Used terms: pelem, b0, b, b1
| pelem(a, b1), pelem(b0, b), rtc(n, pelem)(b1, b0), pelem(b0, b) ∧ rtc(n, pelem)(b1, b0) → (∃ c. pelem(b1, c) ∧ rtc(n, pelem)(c, b)), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b)) |
pelem(b0, b), pelem(a, b1), pelem(b1, a0), rtc(n, pelem)(b1, b0), rtc(n, pelem)(a0, b), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b))
| pelem(b0, b), pelem(a, b1), pelem(b1, a0), rtc(n, pelem)(b1, b0), rtc(n, pelem)(a0, b), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b)) |
pelem(b1, a0), pelem(a, b1), pelem(b0, b), rtc(n, pelem)(a0, b), rtc(n, pelem)(b1, b0), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b)), pelem(a, b1) ∧ (∃ c0. pelem(b1, c0) ∧ rtc(n, pelem)(c0, b))
Used terms: b1
| pelem(b1, a0), pelem(a, b1), pelem(b0, b), rtc(n, pelem)(a0, b), rtc(n, pelem)(b1, b0), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b)), pelem(a, b1) ∧ (∃ c0. pelem(b1, c0) ∧ rtc(n, pelem)(c0, b)) |
pelem(b0, b), pelem(a, b1), pelem(b1, a0), rtc(n, pelem)(b1, b0), rtc(n, pelem)(a0, b), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b)), ∃ c0. pelem(b1, c0) ∧ rtc(n, pelem)(c0, b)
| pelem(b0, b), pelem(a, b1), pelem(b1, a0), rtc(n, pelem)(b1, b0), rtc(n, pelem)(a0, b), ∀ pelem, b0, b, a. pelem(b0, b) ∧ rtc(n, pelem)(a, b0) → (∃ c. pelem(a, c) ∧ rtc(n, pelem)(c, b)) ⊦ ∃ c. pelem(a, c) ∧ (∃ c0. pelem(c, c0) ∧ rtc(n, pelem)(c0, b)), ∃ c0. pelem(b1, c0) ∧ rtc(n, pelem)(c0, b) |
Used terms: a0
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.