| ⊦ reachable-n(h, n + 2, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)) |
⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, r0))
reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ reachable-n(h, n + 2, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0))
Used terms: h, n + 1, r, r0
| ⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, r0)) |
| reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ reachable-n(h, n + 2, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)) |
reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ reachable-n(h, n + 2, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0))
| reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ reachable-n(h, n + 2, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)) |
reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)
¬ reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)), ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) ⊦
| reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) |
reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)
| reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) |
reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), ∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)
Used simplifier rules: reachable-n-rec: ⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-1(h, r, r1) ∧ reachable-n(h, n, r1, r0)); a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), ∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) |
reachable-1(h, r1, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0), reachable-n(h, n + 1, r, r1) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)
| reachable-1(h, r1, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0), reachable-n(h, n + 1, r, r1) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) |
⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, r0))
reachable-1(h, r1, r0), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), ∃ r2. reachable-n(h, n, r, r2) ∧ reachable-1(h, r2, r1) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)
Used terms: r1, r, n, h
| ⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, r0)) |
| reachable-1(h, r1, r0), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), ∃ r2. reachable-n(h, n, r, r2) ∧ reachable-1(h, r2, r1) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) |
reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)
| reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) |
reachable-1(h, r1, r0), reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2) ⊦ reachable-n(h, n, r, r2) ∧ reachable-1(h, r2, (h(r2)).nxt) ∧ reachable-1(h, (h(r2)).nxt, r0)
Used terms: r2
| reachable-1(h, r1, r0), reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2) ⊦ reachable-n(h, n, r, r2) ∧ reachable-1(h, r2, (h(r2)).nxt) ∧ reachable-1(h, (h(r2)).nxt, r0) |
reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ reachable-1(h, r2, (h(r2)).nxt) ∧ reachable-1(h, (h(r2)).nxt, r0)
| reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ reachable-1(h, r2, (h(r2)).nxt) ∧ reachable-1(h, (h(r2)).nxt, r0) |
⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0
reachable-1(h, r1, r0), reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2) ⊦ (r2 ≠ null ∧ (h(r2)).nxt ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ∈ h ∧ (h(r2)).nxt = (h(r2)).nxt) ∧ reachable-1(h, (h(r2)).nxt, r0)
Used terms: (h(r2)).nxt, r2, h
| ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0 |
| reachable-1(h, r1, r0), reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2) ⊦ (r2 ≠ null ∧ (h(r2)).nxt ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ∈ h ∧ (h(r2)).nxt = (h(r2)).nxt) ∧ reachable-1(h, (h(r2)).nxt, r0) |
reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ r2 ≠ null ∧ (h(r2)).nxt ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ∈ h ∧ reachable-1(h, (h(r2)).nxt, r0)
| reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ r2 ≠ null ∧ (h(r2)).nxt ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ∈ h ∧ reachable-1(h, (h(r2)).nxt, r0) |
⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0
reachable-1(h, r1, r0), reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2) ⊦ r2 ≠ null ∧ (h(r2)).nxt ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ∈ h ∧ (h(r2)).nxt ≠ null ∧ r0 ≠ null ∧ (h(r2)).nxt ∈ h ∧ r0 ∈ h ∧ (h((h(r2)).nxt)).nxt = r0
Used terms: r0, (h(r2)).nxt, h
| ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0 |
| reachable-1(h, r1, r0), reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2) ⊦ r2 ≠ null ∧ (h(r2)).nxt ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ∈ h ∧ (h(r2)).nxt ≠ null ∧ r0 ≠ null ∧ (h(r2)).nxt ∈ h ∧ r0 ∈ h ∧ (h((h(r2)).nxt)).nxt = r0 |
reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ r2 ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ≠ null ∧ (h((h(r2)).nxt)).nxt ≠ null ∧ (h(r2)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt = r0
| reachable-1(h, r2, r1), reachable-1(h, r1, r0), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n + 2, r, r0) ⊦ r2 ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ≠ null ∧ (h((h(r2)).nxt)).nxt ≠ null ∧ (h(r2)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt = r0 |
⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0
(h(r1)).nxt = r0, r0 ≠ null, r1 ≠ null, reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2), r1 ∈ h, r0 ∈ h ⊦ r2 ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ≠ null ∧ (h((h(r2)).nxt)).nxt ≠ null ∧ (h(r2)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt = r0
Used terms: r0, r1, h
| ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0 |
| (h(r1)).nxt = r0, r0 ≠ null, r1 ≠ null, reachable-1(h, r2, r1), reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0), reachable-n(h, n, r, r2), r1 ∈ h, r0 ∈ h ⊦ r2 ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ≠ null ∧ (h((h(r2)).nxt)).nxt ≠ null ∧ (h(r2)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt = r0 |
(h(r1)).nxt ≠ null, r1 ≠ null, reachable-1(h, r2, r1), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, (h(r1)).nxt), reachable-n(h, n + 2, r, (h(r1)).nxt), (h(r1)).nxt ∈ h, r1 ∈ h ⊦ r2 ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ≠ null ∧ (h((h(r2)).nxt)).nxt ≠ null ∧ (h(r2)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt = (h(r1)).nxt
| (h(r1)).nxt ≠ null, r1 ≠ null, reachable-1(h, r2, r1), reachable-n(h, n, r, r2), reachable-n(h, (n + 1) + 1, r, (h(r1)).nxt), reachable-n(h, n + 2, r, (h(r1)).nxt), (h(r1)).nxt ∈ h, r1 ∈ h ⊦ r2 ≠ null ∧ r2 ∈ h ∧ (h(r2)).nxt ≠ null ∧ (h((h(r2)).nxt)).nxt ≠ null ∧ (h(r2)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt ∈ h ∧ (h((h(r2)).nxt)).nxt = (h(r1)).nxt |
⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0
Used terms: r1, r2, h
| ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ (h(r)).nxt = r0 |
| ¬ reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)), ∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) ⊦ |
reachable-1(h, r1, (h(r1)).nxt), reachable-1(h, (h(r1)).nxt, r0), reachable-n(h, n, r, r1), ¬ reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦
| reachable-1(h, r1, (h(r1)).nxt), reachable-1(h, (h(r1)).nxt, r0), reachable-n(h, n, r, r1), ¬ reachable-n(h, n + 2, r, r0), reachable-n(h, (n + 1) + 1, r, r0) ↔ (∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)) ⊦ |
reachable-1(h, (h(r1)).nxt, r0), reachable-1(h, r1, (h(r1)).nxt), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0) ⊦ ∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0)
Used simplifier rules: reachable-n-rec: ⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-1(h, r, r1) ∧ reachable-n(h, n, r1, r0)); c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| reachable-1(h, (h(r1)).nxt, r0), reachable-1(h, r1, (h(r1)).nxt), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0) ⊦ ∃ r1. reachable-n(h, n + 1, r, r1) ∧ reachable-1(h, r1, r0) |
reachable-1(h, r1, (h(r1)).nxt), reachable-1(h, (h(r1)).nxt, r0), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0) ⊦ reachable-n(h, n + 1, r, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0)
Used terms: (h(r1)).nxt
| reachable-1(h, r1, (h(r1)).nxt), reachable-1(h, (h(r1)).nxt, r0), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0) ⊦ reachable-n(h, n + 1, r, (h(r1)).nxt) ∧ reachable-1(h, (h(r1)).nxt, r0) |
reachable-1(h, (h(r1)).nxt, r0), reachable-1(h, r1, (h(r1)).nxt), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0), ¬ reachable-n(h, n + 1, r, (h(r1)).nxt) ⊦
| reachable-1(h, (h(r1)).nxt, r0), reachable-1(h, r1, (h(r1)).nxt), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0), ¬ reachable-n(h, n + 1, r, (h(r1)).nxt) ⊦ |
⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, r0))
reachable-1(h, r1, (h(r1)).nxt), reachable-1(h, (h(r1)).nxt, r0), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0), ∀ r2. ¬(reachable-n(h, n, r, r2) ∧ reachable-1(h, r2, (h(r1)).nxt)) ⊦
Used terms: (h(r1)).nxt, r, n, h
| ⊦ reachable-n(h, n + 1, r, r0) ↔ (∃ r1. reachable-n(h, n, r, r1) ∧ reachable-1(h, r1, r0)) |
| reachable-1(h, r1, (h(r1)).nxt), reachable-1(h, (h(r1)).nxt, r0), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0), ∀ r2. ¬(reachable-n(h, n, r, r2) ∧ reachable-1(h, r2, (h(r1)).nxt)) ⊦ |
reachable-1(h, (h(r1)).nxt, r0), reachable-1(h, r1, (h(r1)).nxt), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0), ∀ r2. ¬ reachable-n(h, n, r, r2) ∨ ¬ reachable-1(h, r2, (h(r1)).nxt) ⊦
| reachable-1(h, (h(r1)).nxt, r0), reachable-1(h, r1, (h(r1)).nxt), reachable-n(h, n, r, r1), ¬ reachable-n(h, (n + 1) + 1, r, r0), ¬ reachable-n(h, n + 2, r, r0), ∀ r2. ¬ reachable-n(h, n, r, r2) ∨ ¬ reachable-1(h, r2, (h(r1)).nxt) ⊦ |
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic Used terms: r1
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.