| ⊦ reachable(r, r0, h) ↔ r ≠ null ∧ r ∈ h ∧ reachable*(h, r, r0) |
¬(reachable(r, r0, h) ↔ r ≠ null ∧ r ∈ h ∧ reachable*(h, r, r0)) ⊦
| ¬(reachable(r, r0, h) ↔ r ≠ null ∧ r ∈ h ∧ reachable*(h, r, r0)) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
⊦ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ↔ r ≠ null ∧ r ∈ h ∧ reachable*(h, r, r0)
Used terms: h, r0, r
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| ⊦ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ↔ r ≠ null ∧ r ∈ h ∧ reachable*(h, r, r0) |
⊦ reachable*(h, r, r0) ↔ (∃ n. reachable-n(h, n, r, r0))
⊦ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ↔ r ≠ null ∧ r ∈ h ∧ (∃ n. reachable-n(h, n, r, r0))
Used terms: r0, r, h
| ⊦ reachable*(h, r, r0) ↔ (∃ n. reachable-n(h, n, r, r0)) |
| ⊦ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ↔ r ≠ null ∧ r ∈ h ∧ (∃ n. reachable-n(h, n, r, r0)) |
∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ⊦ r ≠ null ∧ r ∈ h ∧ (∃ n. reachable-n(h, n, r, r0))
r ≠ null, r ∈ h, ∃ n. reachable-n(h, n, r, r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
| ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ⊦ r ≠ null ∧ r ∈ h ∧ (∃ n. reachable-n(h, n, r, r0)) |
r ≠ null, path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, (r ' + x).last)
Used simplifier rules: path-first-in-H: ⊦ path(r ' + x, h) → (r ∈ h ↔ true); null-not-start-of-path: ⊦ ¬ path(null ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| r ≠ null, path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, (r ' + x).last) |
x = [], r ≠ null, path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, (r ' + x).last)
r ≠ null, x ≠ [], path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, (r ' + x).last)
Used formulas: x = []
| x = [], r ≠ null, path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, (r ' + x).last) |
r ≠ null, r ∈ h ⊦ ∃ n. reachable-n(h, n, r, r)
Used simplifier rules: path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ a '.last = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s)
| r ≠ null, r ∈ h ⊦ ∃ n. reachable-n(h, n, r, r) |
Used simplifier rules: reachable-n-base: ⊦ reachable-n(h, 0, r, r0) ↔ r = r0; Used terms: 0
| r ≠ null, x ≠ [], path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, (r ' + x).last) |
r ≠ null, x ≠ [], path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, x.last)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ y ≠ [] → (x + y).last = y.last; (s)
| r ≠ null, x ≠ [], path(r ' + x, h) ⊦ ∃ n. reachable-n(h, n, r, x.last) |
r0 + x0 ≠ [], r ≠ null, path(r ' + (r0 + x0), h), ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (r0 + x0).last)
Used simplifier rules: reflist freely generated by [], +;;
| r0 + x0 ≠ [], r ≠ null, path(r ' + (r0 + x0), h), ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (r0 + x0).last) |
r ≠ null, path(h[r].nxt ' + x0, h), r ∈ h, ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (h[r].nxt ' + x0).last)
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ h[r].nxt = r0 ∧ path(r0 ' + x, h); ⊦ a + x = a ' + x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ' + x ≠ []; (s)
| r ≠ null, path(h[r].nxt ' + x0, h), r ∈ h, ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (h[r].nxt ' + x0).last) |
x0 = [], r ≠ null, path(h[r].nxt ' + x0, h), r ∈ h, ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (h[r].nxt ' + x0).last)
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (h[r].nxt ' + x0).last)
Used formulas: x0 = []
| x0 = [], r ≠ null, path(h[r].nxt ' + x0, h), r ∈ h, ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (h[r].nxt ' + x0).last) |
h[r].nxt ≠ null, r ≠ null, r ∈ h, h[r].nxt ∈ h ⊦ ∃ n. reachable-n(h, n, r, h[r].nxt)
Used simplifier rules: path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ a '.last = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s)
| h[r].nxt ≠ null, r ≠ null, r ∈ h, h[r].nxt ∈ h ⊦ ∃ n. reachable-n(h, n, r, h[r].nxt) |
Used simplifier rules: reachable-n-1: ⊦ reachable-n(h, 1, r, r0) ↔ reachable-1(h, r, r0); reachable-1-def: ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ h[r].nxt = r0; Used terms: 0 +1
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, ∀ r, h. r ≠ null ∧ x0 ≠ [] ∧ path(r ' + x0, h) → (∃ n. reachable-n(h, n, r, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, (h[r].nxt ' + x0).last) |
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, ∀ r0, h0. r0 ≠ null ∧ path(r0 ' + x0, h0) → (∃ n. reachable-n(h0, n, r0, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, x0.last)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ y ≠ [] → (x + y).last = y.last; (s)
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, ∀ r0, h0. r0 ≠ null ∧ path(r0 ' + x0, h0) → (∃ n. reachable-n(h0, n, r0, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, x0.last) |
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null ∧ path(h[r].nxt ' + x0, h) → (∃ n. reachable-n(h, n, h[r].nxt, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, x0.last)
Used terms: h[r].nxt, h
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null ∧ path(h[r].nxt ' + x0, h) → (∃ n. reachable-n(h, n, h[r].nxt, x0.last)) ⊦ ∃ n. reachable-n(h, n, r, x0.last) |
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ ∃ n. reachable-n(h, n, r, x0.last)
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ ∃ n. reachable-n(h, n, r, x0.last) |
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, ¬ reachable-n(h, n +1, r, x0.last), h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦
Used terms: n +1
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, ¬ reachable-n(h, n +1, r, x0.last), h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ |
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ ∃ r1. reachable-1(h, r, r1) ∧ reachable-n(h, n, r1, x0.last)
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 ⊦ m +1 = m + 1; (s)
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ ∃ r1. reachable-1(h, r, r1) ∧ reachable-n(h, n, r1, x0.last) |
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ reachable-1(h, r, h[r].nxt) ∧ reachable-n(h, n, h[r].nxt, x0.last)
Used terms: h[r].nxt
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ reachable-1(h, r, h[r].nxt) ∧ reachable-n(h, n, h[r].nxt, x0.last) |
⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ h[r].nxt = r0
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ (r ≠ null ∧ h[r].nxt ≠ null ∧ r ∈ h ∧ h[r].nxt ∈ h ∧ h[r].nxt = h[r].nxt) ∧ reachable-n(h, n, h[r].nxt, x0.last)
Used terms: h, r, h[r].nxt
| ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ h[r].nxt = r0 |
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ (r ≠ null ∧ h[r].nxt ≠ null ∧ r ∈ h ∧ h[r].nxt ∈ h ∧ h[r].nxt = h[r].nxt) ∧ reachable-n(h, n, h[r].nxt, x0.last) |
r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ h[r].nxt ≠ null ∧ reachable-n(h, n, h[r].nxt, x0.last)
Used simplifier rules: path-first-in-H: ⊦ path(r ' + x, h) → (r ∈ h ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| r ≠ null, x0 ≠ [], path(h[r].nxt ' + x0, h), r ∈ h, h[r].nxt ≠ null → reachable-n(h, n, h[r].nxt, x0.last) ⊦ h[r].nxt ≠ null ∧ reachable-n(h, n, h[r].nxt, x0.last) |
Used simplifier rules: null-not-start-of-path: ⊦ ¬ path(null ' + x, h); null-not-start-of-path: ⊦ ¬ path(null ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| r ≠ null, r ∈ h, ∃ n. reachable-n(h, n, r, r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
r ≠ null, reachable-n(h, n, r, r0), r ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
| r ≠ null, reachable-n(h, n, r, r0), r ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
n = 0, r ≠ null, reachable-n(h, n, r, r0), r ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
n ≠ 0, r ≠ null, reachable-n(h, n, r, r0), r ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
Used formulas: n = 0
| n = 0, r ≠ null, reachable-n(h, n, r, r0), r ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
r0 ≠ null, r0 ∈ h ⊦ ∃ x. path(r0 ' + x, h) ∧ (r0 ' + x).last = r0
Used simplifier rules: reachable-n-base: ⊦ reachable-n(h, 0, r, r0) ↔ r = r0;
| r0 ≠ null, r0 ∈ h ⊦ ∃ x. path(r0 ' + x, h) ∧ (r0 ' + x).last = r0 |
Used simplifier rules: path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: []
| n ≠ 0, r ≠ null, reachable-n(h, n, r, r0), r ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
n0 +1 ≠ 0, r ≠ null, reachable-n(h, n0 +1, r, r0), r ∈ h, ∀ r, h, r0. n0 ≠ 0 ∧ r ≠ null ∧ reachable-n(h, n0, r, r0) ∧ r ∈ h → (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
Used simplifier rules: nat freely generated by 0, +1;;
| n0 +1 ≠ 0, r ≠ null, reachable-n(h, n0 +1, r, r0), r ∈ h, ∀ r, h, r0. n0 ≠ 0 ∧ r ≠ null ∧ reachable-n(h, n0, r, r0) ∧ r ∈ h → (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), h[r].nxt ∈ h, r ∈ h, ∀ r, h, r0. n0 ≠ 0 ∧ r ≠ null ∧ reachable-n(h, n0, r, r0) ∧ r ∈ h → (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = 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)); reachable-1-def: ⊦ reachable-1(h, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ h ∧ r0 ∈ h ∧ h[r].nxt = r0; 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)
| h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), h[r].nxt ∈ h, r ∈ h, ∀ r, h, r0. n0 ≠ 0 ∧ r ≠ null ∧ reachable-n(h, n0, r, r0) ∧ r ∈ h → (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), r ∈ h, h[r].nxt ∈ h, n0 ≠ 0 ∧ h[r].nxt ≠ null ∧ reachable-n(h, n0, h[r].nxt, r0) ∧ h[r].nxt ∈ h → (∃ x. path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
Used terms: h[r].nxt, h, r0
| h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), r ∈ h, h[r].nxt ∈ h, n0 ≠ 0 ∧ h[r].nxt ≠ null ∧ reachable-n(h, n0, h[r].nxt, r0) ∧ h[r].nxt ∈ h → (∃ x. path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0) ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), h[r].nxt ∈ h, r ∈ h, n0 ≠ 0 → path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0 ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
| h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), h[r].nxt ∈ h, r ∈ h, n0 ≠ 0 → path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0 ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
n0 = 0, h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), r ∈ h, h[r].nxt ∈ h, n0 ≠ 0 → path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0 ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
h[r].nxt ≠ null, n0 ≠ 0, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), r ∈ h, h[r].nxt ∈ h, n0 ≠ 0 → path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0 ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0
Used formulas: n0 = 0
| n0 = 0, h[r].nxt ≠ null, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), r ∈ h, h[r].nxt ∈ h, n0 ≠ 0 → path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0 ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
h[r].nxt ≠ null, r ≠ null, r ∈ h, h[r].nxt ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = h[r].nxt
Used simplifier rules: reachable-n-base: ⊦ reachable-n(h, 0, r, r0) ↔ r = r0;
| h[r].nxt ≠ null, r ≠ null, r ∈ h, h[r].nxt ∈ h ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = h[r].nxt |
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ h[r].nxt = r0; ⊦ (x + a ').last = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: h[r].nxt '
| h[r].nxt ≠ null, n0 ≠ 0, r ≠ null, reachable-n(h, n0, h[r].nxt, r0), r ∈ h, h[r].nxt ∈ h, n0 ≠ 0 → path(h[r].nxt ' + x, h) ∧ (h[r].nxt ' + x).last = r0 ⊦ ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 |
h[r].nxt ≠ null, n0 ≠ 0, r ≠ null, path(h[r].nxt ' + x, h), reachable-n(h, n0, h[r].nxt, (h[r].nxt ' + x).last), r ∈ h, h[r].nxt ∈ h ⊦ ∃ x0. path(r ' + x0, h) ∧ (r ' + x0).last = (h[r].nxt ' + x).last
| h[r].nxt ≠ null, n0 ≠ 0, r ≠ null, path(h[r].nxt ' + x, h), reachable-n(h, n0, h[r].nxt, (h[r].nxt ' + x).last), r ∈ h, h[r].nxt ∈ h ⊦ ∃ x0. path(r ' + x0, h) ∧ (r ' + x0).last = (h[r].nxt ' + x).last |
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ h[r].nxt = r0 ∧ path(r0 ' + x, h); ⊦ (x + a ' + y).last = (a ' + y).last; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: h[r].nxt ' + x
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.