| ⊦ p+(a, b) ↔ (∃ c. p*(a, c) ∧ p(c, b)) |
p+(a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
¬ p+(a, b), ∃ c. p*(a, c) ∧ p(c, b) ⊦
| p+(a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
⊦ p+(a, b) ↔ (∃ n. n ≠ 0 ∧ rtc(n, a, b))
∃ n. n ≠ 0 ∧ rtc(n, a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
Used terms: b, a
| ⊦ p+(a, b) ↔ (∃ n. n ≠ 0 ∧ rtc(n, a, b)) |
| ∃ n. n ≠ 0 ∧ rtc(n, a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
n ≠ 0, rtc(n, a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
| n ≠ 0, rtc(n, a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
n0 +1 ≠ 0, rtc(n0 +1, a, b), ∀ a, b. n0 ≠ 0 ∧ rtc(n0, a, b) → (∃ c. p*(a, c) ∧ p(c, b)) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
Used simplifier rules: nat freely generated by 0, +1;;
| n0 +1 ≠ 0, rtc(n0 +1, a, b), ∀ a, b. n0 ≠ 0 ∧ rtc(n0, a, b) → (∃ c. p*(a, c) ∧ p(c, b)) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
p(a, b0), rtc(n0, b0, b), ∀ a, b. n0 ≠ 0 ∧ rtc(n0, a, b) → (∃ c. p*(a, c) ∧ p(c, b)) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
Used simplifier rules: rtc-rec: ⊦ rtc(n + 1, a, b) ↔ (∃ c. p(a, c) ∧ rtc(n, 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) ⊦ m + 1 ≠ 0; (s)
| p(a, b0), rtc(n0, b0, b), ∀ a, b. n0 ≠ 0 ∧ rtc(n0, a, b) → (∃ c. p*(a, c) ∧ p(c, b)) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
p(a, b0), rtc(n0, b0, b), n0 ≠ 0 ∧ rtc(n0, b0, b) → (∃ c. p*(b0, c) ∧ p(c, b)) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
Used terms: b0, b
| p(a, b0), rtc(n0, b0, b), n0 ≠ 0 ∧ rtc(n0, b0, b) → (∃ c. p*(b0, c) ∧ p(c, b)) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
p(a, b0), rtc(n0, b0, b), n0 ≠ 0 → p*(b0, a0) ∧ p(a0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
| p(a, b0), rtc(n0, b0, b), n0 ≠ 0 → p*(b0, a0) ∧ p(a0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
n0 = 0, p(a, b0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
p(a, b0), p(a0, b), p*(b0, a0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
| n0 = 0, p(a, b0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
p(a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
Used simplifier rules: rtc-base: ⊦ rtc(0, a, b) ↔ a = b;
| p(a, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
Used simplifier rules: rtc-refl: ⊦ p*(a, a); Used terms: a
| p(a, b0), p(a0, b), p*(b0, a0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
p(a0, b), p(a, b0), p*(b0, a0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
| p(a0, b), p(a, b0), p*(b0, a0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
p(a, b0), p(a0, b), p*(b0, a0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b), p*(a, a0) ∧ p(a0, b)
Used terms: a0
| p(a, b0), p(a0, b), p*(b0, a0), rtc(n0, b0, b) ⊦ ∃ c. p*(a, c) ∧ p(c, b), p*(a, a0) ∧ p(a0, b) |
p(a0, b), p(a, b0), p*(b0, a0), rtc(n0, b0, b), ¬ p*(a, a0) ⊦ ∃ c. p*(a, c) ∧ p(c, b)
| p(a0, b), p(a, b0), p*(b0, a0), rtc(n0, b0, b), ¬ p*(a, a0) ⊦ ∃ c. p*(a, c) ∧ p(c, b) |
⊦ p*(a, b) ∧ p*(b, c) → p*(a, c)
Used simplifier rules: rtc-one: ⊦ p(a, b) → (p*(a, b) ↔ true); Used terms: b0, a0, a
| ⊦ p*(a, b) ∧ p*(b, c) → p*(a, c) |
| ¬ p+(a, b), ∃ c. p*(a, c) ∧ p(c, b) ⊦ |
p(b0, b), p*(a, b0), ¬ p+(a, b) ⊦
| p(b0, b), p*(a, b0), ¬ p+(a, b) ⊦ |
⊦ p+(a, b) ↔ (∃ n. n ≠ 0 ∧ rtc(n, a, b))
p(b0, b), p*(a, b0), ∀ n. ¬(n ≠ 0 ∧ rtc(n, a, b)) ⊦
Used terms: b, a
| ⊦ p+(a, b) ↔ (∃ n. n ≠ 0 ∧ rtc(n, a, b)) |
| p(b0, b), p*(a, b0), ∀ n. ¬(n ≠ 0 ∧ rtc(n, a, b)) ⊦ |
⊦ p*(a, b) ↔ (∃ n. rtc(n, a, b))
p(b0, b), ∀ n. ¬(n ≠ 0 ∧ rtc(n, a, b)), ∃ n. rtc(n, a, b0) ⊦
Used terms: b0, a
| ⊦ p*(a, b) ↔ (∃ n. rtc(n, a, b)) |
| p(b0, b), ∀ n. ¬(n ≠ 0 ∧ rtc(n, a, b)), ∃ n. rtc(n, a, b0) ⊦ |
p(b0, b), rtc(n, a, b0), ∀ n0. n0 = 0 ∨ ¬ rtc(n0, a, b) ⊦
| p(b0, b), rtc(n, a, b0), ∀ n0. n0 = 0 ∨ ¬ rtc(n0, a, b) ⊦ |
p(b0, b), rtc(n, a, b0), n + 1 = 0 ∨ ¬ rtc(n + 1, a, b) ⊦
Used terms: n + 1
| p(b0, b), rtc(n, a, b0), n + 1 = 0 ∨ ¬ rtc(n + 1, a, b) ⊦ |
p(b0, b), rtc(n, a, b0) ⊦ ∃ c. p(a, c) ∧ rtc(n, c, b)
Used simplifier rules: rtc-rec: ⊦ rtc(n + 1, a, b) ↔ (∃ c. p(a, c) ∧ rtc(n, 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)
| p(b0, b), rtc(n, a, b0) ⊦ ∃ c. p(a, c) ∧ rtc(n, c, b) |
p(b0, b), rtc(n0 +1, a, b0), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ rtc(n0 +1, c, b)
Used simplifier rules: rtc-base: ⊦ rtc(0, a, b) ↔ a = b; nat freely generated by 0, +1;;
| p(b0, b), rtc(n0 +1, a, b0), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ rtc(n0 +1, c, b) |
p(b0, b), p(a, b1), rtc(n0, b1, b0), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b))
Used simplifier rules: rtc-rec: ⊦ rtc(n + 1, a, b) ↔ (∃ c. p(a, c) ∧ rtc(n, 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)
| p(b0, b), p(a, b1), rtc(n0, b1, b0), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b)) |
p(a, b1), p(b0, b), rtc(n0, b1, b0), p(b0, b) ∧ rtc(n0, b1, b0) → (∃ c. p(b1, c) ∧ rtc(n0, c, b)), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b))
Used terms: b0, b, b1
| p(a, b1), p(b0, b), rtc(n0, b1, b0), p(b0, b) ∧ rtc(n0, b1, b0) → (∃ c. p(b1, c) ∧ rtc(n0, c, b)), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b)) |
p(b0, b), p(a, b1), p(b1, a0), rtc(n0, b1, b0), rtc(n0, a0, b), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b))
| p(b0, b), p(a, b1), p(b1, a0), rtc(n0, b1, b0), rtc(n0, a0, b), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b)) |
p(b1, a0), p(a, b1), p(b0, b), rtc(n0, a0, b), rtc(n0, b1, b0), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b)), p(a, b1) ∧ (∃ c0. p(b1, c0) ∧ rtc(n0, c0, b))
Used terms: b1
| p(b1, a0), p(a, b1), p(b0, b), rtc(n0, a0, b), rtc(n0, b1, b0), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b)), p(a, b1) ∧ (∃ c0. p(b1, c0) ∧ rtc(n0, c0, b)) |
p(b0, b), p(a, b1), p(b1, a0), rtc(n0, b1, b0), rtc(n0, a0, b), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b)), ∃ c0. p(b1, c0) ∧ rtc(n0, c0, b)
| p(b0, b), p(a, b1), p(b1, a0), rtc(n0, b1, b0), rtc(n0, a0, b), ∀ b0, b, a. p(b0, b) ∧ rtc(n0, a, b0) → (∃ c. p(a, c) ∧ rtc(n0, c, b)) ⊦ ∃ c. p(a, c) ∧ (∃ c0. p(c, c0) ∧ rtc(n0, c0, b)), ∃ c0. p(b1, c0) ∧ rtc(n0, 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.