| reachable(r, r0, h), (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h ⊦ (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) |
(h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, reachable(r, r0, h) ⊦ (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x)
| (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, reachable(r, r0, h) ⊦ (∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)) ↔ (∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x) |
(h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, reachable(r, r0, h), ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h) ⊦ ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x
(h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, reachable(r, r0, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)
| (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, reachable(r, r0, h), ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h) ⊦ ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x |
(h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ∈ h, reachable(r, r1, h), reachable(r, r0, h), ¬ reachable(r0, r1, h) ⊦ ∃ x. path(r ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x
| (h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ∈ h, reachable(r, r1, h), reachable(r, r0, h), ¬ reachable(r0, r1, h) ⊦ ∃ x. path(r ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
(h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ∈ h, reachable(r, r0, h), ¬ reachable(r0, r1, h), ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r1 ⊦ ∃ x. path(r ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x
Used terms: h, r1, r
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| (h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ∈ h, reachable(r, r0, h), ¬ reachable(r0, r1, h), ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r1 ⊦ ∃ x. path(r ' + x + (h(r1)).nxt ', h) ∧ ¬ r0 ∈ x |
(h(r0)).nxt = (h((r ' + x).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, (r ' + x).last, h) ⊦ ∃ x0. path(r ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0
| (h(r0)).nxt = (h((r ' + x).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, (r ' + x).last, h) ⊦ ∃ x0. path(r ' + x0 + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x0 |
(h(r0)).nxt = (h((r ' + x).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, (r ' + x).last, h) ⊦ path(r ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x
Used terms: x
| (h(r0)).nxt = (h((r ' + x).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, (r ' + x).last, h) ⊦ path(r ' + x + (h(r0)).nxt ', h) ∧ ¬ r0 ∈ x |
⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null
(h(r0)).nxt = (h((r ' + x).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, (r ' + x).last, h) ⊦ (path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = (h(r0)).nxt ∧ (h(r0)).nxt ∈ h ∧ (h(r0)).nxt ≠ null) ∧ ¬ r0 ∈ x
Used terms: h, (h(r0)).nxt, x, r
| ⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null |
| (h(r0)).nxt = (h((r ' + x).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, (r ' + x).last, h) ⊦ (path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = (h(r0)).nxt ∧ (h(r0)).nxt ∈ h ∧ (h(r0)).nxt ≠ null) ∧ ¬ r0 ∈ x |
(h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), r0 ∈ x, reachable(r, r0, h), ¬ reachable(r0, x.last, h) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ x → (b ' + x).last = x.last; (s)
| (h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), r0 ∈ x, reachable(r, r0, h), ¬ reachable(r0, x.last, h) ⊦ |
(h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), r0 ∈ x, reachable(r, r0, h), ¬ reachable(r0, x.last, h) ⊦
Used formulas: (h(r0)).nxt ∈ h
| (h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), r0 ∈ x, reachable(r, r0, h), ¬ reachable(r0, x.last, h) ⊦ |
(h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), r0 ∈ x, reachable(r, r0, h), ¬ reachable(r0, x.last, h) ⊦
| (h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), r0 ∈ x, reachable(r, r0, h), ¬ reachable(r0, x.last, h) ⊦ |
⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z))
(h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, x.last, h), ∃ y, z. x = y + (r0 + z) ⊦
Used terms: x, r0
| ⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z)) |
| (h(r0)).nxt = (h(x.last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x, h), reachable(r, r0, h), ¬ reachable(r0, x.last, h), ∃ y, z. x = y + (r0 + z) ⊦ |
(h(r0)).nxt = (h((r0 ' + x1).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r0 ' + x1, h), reachable(r, r0, h), ¬ reachable(r0, (r0 ' + x1).last, h) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ (x + a ' + y).last = (a ' + y).last; (s) ⊦ a + x = a ' + x; (s)
| (h(r0)).nxt = (h((r0 ' + x1).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r0 ' + x1, h), reachable(r, r0, h), ¬ reachable(r0, (r0 ' + x1).last, h) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
(h(r0)).nxt = (h((r0 ' + x1).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r0 ' + x1, h), reachable(r, r0, h), ∀ x. ¬(path(r0 ' + x, h) ∧ (r0 ' + x).last = (r0 ' + x1).last) ⊦
Used terms: h, (r0 ' + x1).last, r0
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| (h(r0)).nxt = (h((r0 ' + x1).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r0 ' + x1, h), reachable(r, r0, h), ∀ x. ¬(path(r0 ' + x, h) ∧ (r0 ' + x).last = (r0 ' + x1).last) ⊦ |
(h(r0)).nxt = (h((r0 ' + x1).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r0 ' + x1, h), reachable(r, r0, h), ∀ x. ¬ path(r0 ' + x, h) ∨ (r0 ' + x).last ≠ (r0 ' + x1).last ⊦
| (h(r0)).nxt = (h((r0 ' + x1).last)).nxt, (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r0 ' + x1, h), reachable(r, r0, h), ∀ x. ¬ path(r0 ' + x, h) ∨ (r0 ' + x).last ≠ (r0 ' + x1).last ⊦ |
Used simplifier rules: path-postfix: ⊦ path(x + r ' + y, h) → (path(r ' + y, h) ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: x1
| (h(r0)).nxt ≠ null, (h(r0)).nxt ∈ h, reachable(r, r0, h), ∃ x. path(r ' + x + (h(r0)).nxt ', h) ∧ r0 ≠ r ∧ ¬ r0 ∈ x ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h) |
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h)
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x ⊦ ∃ r1. reachable(r, r1, h) ∧ (h(r0)).nxt = (h(r1)).nxt ∧ ¬ reachable(r0, r1, h) |
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x ⊦ reachable(r, (r ' + x).last, h) ∧ (h(r0)).nxt = (h((r ' + x).last)).nxt ∧ ¬ reachable(r0, (r ' + x).last, h)
Used terms: (r ' + x).last
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x ⊦ reachable(r, (r ' + x).last, h) ∧ (h(r0)).nxt = (h((r ' + x).last)).nxt ∧ ¬ reachable(r0, (r ' + x).last, h) |
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x ⊦ reachable(r, (r ' + x).last, h) ∧ ¬ reachable(r0, (r ' + x).last, h)
Used simplifier rules: path-last-nxt: ⊦ path(r ' + x + r0 ', h) → ((h((r ' + x).last)).nxt = r0 ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x ⊦ reachable(r, (r ' + x).last, h) ∧ ¬ reachable(r0, (r ' + x).last, h) |
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), reachable(r, (r ' + x).last, h), ¬ r0 ∈ x ⊦ reachable(r, (r ' + x).last, h) ∧ ¬ reachable(r0, (r ' + x).last, h)
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ¬ reachable(r, (r ' + x).last, h) ⊦ reachable(r, (r ' + x).last, h) ∧ ¬ reachable(r0, (r ' + x).last, h)
Used formulas: reachable(r, (r ' + x).last, h)
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), reachable(r, (r ' + x).last, h), ¬ r0 ∈ x ⊦ reachable(r, (r ' + x).last, h) ∧ ¬ reachable(r0, (r ' + x).last, h) |
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, (r ' + x).last, h), reachable(r, r0, h), reachable(r0, (r ' + x).last, h), ¬ r0 ∈ x ⊦
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, (r ' + x).last, h), reachable(r, r0, h), reachable(r0, (r ' + x).last, h), ¬ r0 ∈ x ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x))
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), reachable(r, (r ' + x).last, h), ¬ r0 ∈ x, ∃ x0. path(r0 ' + x0, h) ∧ (r0 ' + x0).last = (r ' + x).last ∧ ¬ dups(r0 ' + x0) ⊦
Used terms: h, (r ' + x).last, r0
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x)) |
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), reachable(r, (r ' + x).last, h), ¬ r0 ∈ x, ∃ x0. path(r0 ' + x0, h) ∧ (r0 ' + x0).last = (r ' + x).last ∧ ¬ dups(r0 ' + x0) ⊦ |
(r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r0 ' + x0, h), path(r ' + x + (h(r0)).nxt ', h), reachable(r, (r ' + x).last, h), reachable(r, r0, h), ¬ dups(x0), ¬ r0 ∈ x, ¬ r0 ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r0 ' + x0, h), path(r ' + x + (h(r0)).nxt ', h), reachable(r, (r ' + x).last, h), reachable(r, r0, h), ¬ dups(x0), ¬ r0 ∈ x, ¬ r0 ∈ x0 ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x))
(r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), path(r0 ' + x0, h), reachable(r, r0, h), ¬ dups(x0), ¬ r0 ∈ x, ¬ r0 ∈ x0, ∃ x0. path(r ' + x0, h) ∧ (r ' + x0).last = (r ' + x).last ∧ ¬ dups(r ' + x0) ⊦
Used terms: h, (r ' + x).last, r
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x)) |
| (r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), path(r0 ' + x0, h), reachable(r, r0, h), ¬ dups(x0), ¬ r0 ∈ x, ¬ r0 ∈ x0, ∃ x0. path(r ' + x0, h) ∧ (r ' + x0).last = (r ' + x).last ∧ ¬ dups(r ' + x0) ⊦ |
(r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r0 ∈ x, ¬ r0 ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r0 ∈ x, ¬ r0 ∈ x0 ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x))
(r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r0 ∈ x, ¬ r0 ∈ x0, ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x) ⊦
Used terms: h, r0, r
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x)) |
| (r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r0 ∈ x, ¬ r0 ∈ x0, ∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0 ∧ ¬ dups(r ' + x) ⊦ |
((r ' + x2).last ' + x0).last = (r ' + x).last, (r ' + x1).last = (r ' + x).last, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path((r ' + x2).last ' + x0, h), path(r ' + x + (h((r ' + x2).last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| ((r ' + x2).last ' + x0).last = (r ' + x).last, (r ' + x1).last = (r ' + x).last, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path((r ' + x2).last ' + x0, h), path(r ' + x + (h((r ' + x2).last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦ |
path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0)
(r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2, x2 = x + (h((r ' + x2).last)).nxt ' ∨ (∃ r0, y0. x2 = (x + (h((r ' + x2).last)).nxt ') + r0 ' + y0) ∨ (∃ r0, x0. x + (h((r ' + x2).last)).nxt ' = x2 + r0 ' + x0) ⊦
Used terms: r, x2, h, x + (h((r ' + x2).last)).nxt '
| path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0) |
| (r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2, x2 = x + (h((r ' + x2).last)).nxt ' ∨ (∃ r0, y0. x2 = (x + (h((r ' + x2).last)).nxt ') + r0 ' + y0) ∨ (∃ r0, x0. x + (h((r ' + x2).last)).nxt ' = x2 + r0 ' + x0) ⊦ |
((r ' + x2).last ' + x0).last = (r ' + x).last, (r ' + x1).last = (r ' + x).last, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path((r ' + x2).last ' + x0, h), path(r ' + x + (h((r ' + x2).last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2, x2 = x + (h((r ' + x2).last)).nxt ' ∨ x2 = (x + (h((r ' + x2).last)).nxt ') + r0 ' + x3 ∨ x + (h((r ' + x2).last)).nxt ' = x2 + r1 ' + x4 ⊦
| ((r ' + x2).last ' + x0).last = (r ' + x).last, (r ' + x1).last = (r ' + x).last, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path((r ' + x2).last ' + x0, h), path(r ' + x + (h((r ' + x2).last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2, x2 = x + (h((r ' + x2).last)).nxt ' ∨ x2 = (x + (h((r ' + x2).last)).nxt ') + r0 ' + x3 ∨ x + (h((r ' + x2).last)).nxt ' = x2 + r1 ' + x4 ⊦ |
(r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, x2 = x + (h((r ' + x2).last)).nxt ', (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦
(r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, x2 = (x + (h((r ' + x2).last)).nxt ') + r0 ' + x3, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦
(r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, x + (h((r ' + x2).last)).nxt ' = x2 + r1 ' + x4, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦
| (r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, x2 = x + (h((r ' + x2).last)).nxt ', (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦ |
(r ' + x1).last = (r ' + x).last, x2 = x + (h(x2.last)).nxt ', (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2.last ≠ r, (h(x2.last)).nxt ∈ h, (h(x2.last)).nxt ∈ x2, path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x1, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ x → (b ' + x).last = x.last; (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list[reflist]
| (r ' + x1).last = (r ' + x).last, x2 = x + (h(x2.last)).nxt ', (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2.last ≠ r, (h(x2.last)).nxt ∈ h, (h(x2.last)).nxt ∈ x2, path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x1, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, x2 = x + (h(r0)).nxt ', x2 = x3 + r0 ', (h(r0)).nxt ≠ null, r0 ≠ r, x2 ≠ [], (h(r0)).nxt ∈ x2, (h(r0)).nxt ∈ h, path(r ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x, ¬ r0 ∈ x0 ⊦
Used simplifier rules: ⊦ x + y = [] ↔ x = [] ∧ y = []; (as) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x2, r0, x3
| (r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, x2 = x + (h(r0)).nxt ', x2 = x3 + r0 ', (h(r0)).nxt ≠ null, r0 ≠ r, x2 ≠ [], (h(r0)).nxt ∈ x2, (h(r0)).nxt ∈ h, path(r ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x, ¬ r0 ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, r0 = (h(r0)).nxt, (r0 ' + x0).last = (r ' + x).last, r0 ≠ r, r0 ≠ null, path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s) ⊦ x + a ' = y + b ' ↔ x = y ∧ a = b; (ws)
| (r ' + x1).last = (r ' + x).last, r0 = (h(r0)).nxt, (r0 ' + x0).last = (r ' + x).last, r0 ≠ r, r0 ≠ null, path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, r0 = (h(r0)).nxt, x1 = [], r0 ≠ r, r0 ≠ null, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦
(r0 ' + x0).last = (r ' + x).last, r0 = (h(r0)).nxt, x1.last = (r ' + x).last, r0 ≠ r, r0 ≠ null, x1 ≠ [], path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦
Used terms: x1, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, r0 = (h(r0)).nxt, x1 = [], r0 ≠ r, r0 ≠ null, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦ |
(r0 ' + x0).last = ((r0 ' + x0).last ' + x).last, r0 = (h(r0)).nxt, (r0 ' + x0).last ≠ null, r0 ≠ null, r0 ≠ (r0 ' + x0).last, path(r0 ' + x0, h), path((r0 ' + x0).last ' + x + r0 ', h), (r0 ' + x0).last ∈ h, r0 ∈ h, ¬ dups(x0), ¬ dups(x), ¬ r0 ∈ x, ¬ r0 ∈ x0, ¬ (r0 ' + x0).last ∈ x ⊦
Used simplifier rules: path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ ¬ a ∈ []; (s) ⊦ ¬ dups([]); (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ a '.last = a; (s)
| (r0 ' + x0).last = ((r0 ' + x0).last ' + x).last, r0 = (h(r0)).nxt, (r0 ' + x0).last ≠ null, r0 ≠ null, r0 ≠ (r0 ' + x0).last, path(r0 ' + x0, h), path((r0 ' + x0).last ' + x + r0 ', h), (r0 ' + x0).last ∈ h, r0 ∈ h, ¬ dups(x0), ¬ dups(x), ¬ r0 ∈ x, ¬ r0 ∈ x0, ¬ (r0 ' + x0).last ∈ x ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
r0 = (h(r0)).nxt, x0.last = (x0.last ' + x).last, r0 ≠ null, r0 ≠ x0.last, x0 ≠ [], x0.last ≠ null, path(x0.last ' + x + r0 ', h), path(r0 ' + x0, h), r0 ∈ h, x0.last ∈ h, ¬ dups(x0), ¬ dups(x), ¬ r0 ∈ x, ¬ r0 ∈ x0, ¬ x0.last ∈ x ⊦
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: r0 ', x0
| ⊦ y ≠ [] → (x + y).last = y.last |
| r0 = (h(r0)).nxt, x0.last = (x0.last ' + x).last, r0 ≠ null, r0 ≠ x0.last, x0 ≠ [], x0.last ≠ null, path(x0.last ' + x + r0 ', h), path(r0 ' + x0, h), r0 ∈ h, x0.last ∈ h, ¬ dups(x0), ¬ dups(x), ¬ r0 ∈ x, ¬ r0 ∈ x0, ¬ x0.last ∈ x ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
r0 = (h(r0)).nxt, x = [], x0.last = (x0.last ' + x).last, r0 ≠ null, r0 ≠ x0.last, x0 ≠ [], x0.last ≠ null, path(r0 ' + x0, h), path(x0.last ' + x + r0 ', h), r0 ∈ h, x0.last ∈ h, ¬ dups(x0), ¬ dups(x), ¬ r0 ∈ x, ¬ r0 ∈ x0, ¬ x0.last ∈ x ⊦
Used simplifier rules: ⊦ x.last = a ∧ x ≠ [] → a ∈ x; (s) Used terms: x0.last ', x
| ⊦ y ≠ [] → (x + y).last = y.last |
| r0 = (h(r0)).nxt, x = [], x0.last = (x0.last ' + x).last, r0 ≠ null, r0 ≠ x0.last, x0 ≠ [], x0.last ≠ null, path(r0 ' + x0, h), path(x0.last ' + x + r0 ', h), r0 ∈ h, x0.last ∈ h, ¬ dups(x0), ¬ dups(x), ¬ r0 ∈ x, ¬ r0 ∈ x0, ¬ x0.last ∈ x ⊦ |
(h(x0.last)).nxt = (h((h(x0.last)).nxt)).nxt, (h(x0.last)).nxt ≠ x0.last, (h(x0.last)).nxt ≠ null, x0.last ≠ null, x0 ≠ [], (h(x0.last)).nxt ∈ h, path((h(x0.last)).nxt ' + x0, h), x0.last ∈ h, ¬ dups(x0), ¬ (h(x0.last)).nxt ∈ x0 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; ⊦ ¬ a ∈ []; (s) ⊦ ¬ dups([]); (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ [] + x = x; (s) ⊦ a '.last = a; (s) ⊦ x + [] = x; (s)
| (h(x0.last)).nxt = (h((h(x0.last)).nxt)).nxt, (h(x0.last)).nxt ≠ x0.last, (h(x0.last)).nxt ≠ null, x0.last ≠ null, x0 ≠ [], (h(x0.last)).nxt ∈ h, path((h(x0.last)).nxt ' + x0, h), x0.last ∈ h, ¬ dups(x0), ¬ (h(x0.last)).nxt ∈ x0 ⊦ |
(h(r)).nxt = (h((h(r)).nxt)).nxt, x0 = x1 + r ', (h(r)).nxt ≠ r, (h(r)).nxt ≠ null, r ≠ null, x0 ≠ [], (h(r)).nxt ∈ h, path((h(r)).nxt ' + x0, h), r ∈ h, ¬ dups(x0), ¬ (h(r)).nxt ∈ x0 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x0, r, x1
| (h(r)).nxt = (h((h(r)).nxt)).nxt, x0 = x1 + r ', (h(r)).nxt ≠ r, (h(r)).nxt ≠ null, r ≠ null, x0 ≠ [], (h(r)).nxt ∈ h, path((h(r)).nxt ' + x0, h), r ∈ h, ¬ dups(x0), ¬ (h(r)).nxt ∈ x0 ⊦ |
(h(r)).nxt = (h((h(r)).nxt)).nxt, (h(r)).nxt ≠ r, (h(r)).nxt ≠ null, r ≠ null, (h(r)).nxt ∈ h, path((h(r)).nxt ' + x1 + r ', h), r ∈ h, ¬ dups(x1), ¬ (h(r)).nxt ∈ x1, ¬ r ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (h(r)).nxt = (h((h(r)).nxt)).nxt, (h(r)).nxt ≠ r, (h(r)).nxt ≠ null, r ≠ null, (h(r)).nxt ∈ h, path((h(r)).nxt ' + x1 + r ', h), r ∈ h, ¬ dups(x1), ¬ (h(r)).nxt ∈ x1, ¬ r ∈ x1 ⊦ |
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); Reflist freely generated by [], +; ⊦ a + x = a ' + x; (s) ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ [] + x = x; (s) ⊦ ¬ dups([]); (s) ⊦ ¬ a ∈ []; (s)
| (r0 ' + x0).last = (r ' + x).last, r0 = (h(r0)).nxt, x1.last = (r ' + x).last, r0 ≠ r, r0 ≠ null, x1 ≠ [], path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦ |
r0 = (h(r0)).nxt, (r0 ' + x0).last = x1.last, x1.last = (r ' + x).last, r0 ≠ r, r0 ≠ null, x1 ≠ [], path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦
| r0 = (h(r0)).nxt, (r0 ' + x0).last = x1.last, x1.last = (r ' + x).last, r0 ≠ r, r0 ≠ null, x1 ≠ [], path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦ |
(r0 ' + x0).last = r1, r0 = (h(r0)).nxt, r1 = (r ' + x).last, x1 = x2 + r1 ', r0 ≠ r, r0 ≠ null, x1 ≠ [], path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x1, r1, x2
| (r0 ' + x0).last = r1, r0 = (h(r0)).nxt, r1 = (r ' + x).last, x1 = x2 + r1 ', r0 ≠ r, r0 ≠ null, x1 ≠ [], path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦ |
r0 = (h(r0)).nxt, (r0 ' + x0).last = (r ' + x).last, r ≠ (r ' + x).last, r0 ≠ r, r0 ≠ null, path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x2 + (r ' + x).last ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x2), ¬ dups(x0), ¬ (r ' + x).last ∈ x2, ¬ r ∈ x, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| r0 = (h(r0)).nxt, (r0 ' + x0).last = (r ' + x).last, r ≠ (r ' + x).last, r0 ≠ r, r0 ≠ null, path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x2 + (r ' + x).last ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x2), ¬ dups(x0), ¬ (r ' + x).last ∈ x2, ¬ r ∈ x, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r0 ' + x0).last = x.last, r0 = (h(r0)).nxt, r ≠ x.last, r0 ≠ r, r0 ≠ null, x ≠ [], path(r ' + x2 + x.last ', h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ x.last ∈ x2 ⊦
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: r ', x
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r0 ' + x0).last = x.last, r0 = (h(r0)).nxt, r ≠ x.last, r0 ≠ r, r0 ≠ null, x ≠ [], path(r ' + x2 + x.last ', h), path(r0 ' + x0, h), path(r ' + x + r0 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ x.last ∈ x2 ⊦ |
r0 = (h(r0)).nxt, (r0 ' + x0).last = r1, x = x1 + r1 ', r ≠ r1, r0 ≠ r, r0 ≠ null, x ≠ [], path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x2 + r1 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r1 ∈ x2 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x, r1, x1
| r0 = (h(r0)).nxt, (r0 ' + x0).last = r1, x = x1 + r1 ', r ≠ r1, r0 ≠ r, r0 ≠ null, x ≠ [], path(r ' + x + r0 ', h), path(r0 ' + x0, h), path(r ' + x2 + r1 ', h), r0 ∈ h, ¬ dups(x), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r1 ∈ x2 ⊦ |
r0 = (h(r0)).nxt, r ≠ (r0 ' + x0).last, r0 ≠ r, r0 ≠ null, r0 ≠ (r0 ' + x0).last, path(r ' + x2 + (r0 ' + x0).last ', h), path(r0 ' + x0, h), path(r ' + (x1 + (r0 ' + x0).last ') + r0 ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x1, ¬ r ∈ x2, ¬ (r0 ' + x0).last ∈ x2, ¬ (r0 ' + x0).last ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| r0 = (h(r0)).nxt, r ≠ (r0 ' + x0).last, r0 ≠ r, r0 ≠ null, r0 ≠ (r0 ' + x0).last, path(r ' + x2 + (r0 ' + x0).last ', h), path(r0 ' + x0, h), path(r ' + (x1 + (r0 ' + x0).last ') + r0 ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x1, ¬ r ∈ x2, ¬ (r0 ' + x0).last ∈ x2, ¬ (r0 ' + x0).last ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
r0 = (h(r0)).nxt, r ≠ x0.last, r0 ≠ r, r0 ≠ null, r0 ≠ x0.last, x0 ≠ [], path(r ' + (x1 + x0.last ') + r0 ', h), path(r0 ' + x0, h), path(r ' + x2 + x0.last ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x1, ¬ x0.last ∈ x2, ¬ x0.last ∈ x1 ⊦
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: r0 ', x0
| ⊦ y ≠ [] → (x + y).last = y.last |
| r0 = (h(r0)).nxt, r ≠ x0.last, r0 ≠ r, r0 ≠ null, r0 ≠ x0.last, x0 ≠ [], path(r ' + (x1 + x0.last ') + r0 ', h), path(r0 ' + x0, h), path(r ' + x2 + x0.last ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x1, ¬ x0.last ∈ x2, ¬ x0.last ∈ x1 ⊦ |
r0 = (h(r0)).nxt, x0 = x3 + r1 ', r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, x0 ≠ [], path(r ' + x2 + r1 ', h), path(r0 ' + x0, h), path(r ' + (x1 + r1 ') + r0 ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x1, ¬ r1 ∈ x2, ¬ r1 ∈ x1 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x0, r1, x3
| r0 = (h(r0)).nxt, x0 = x3 + r1 ', r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, x0 ≠ [], path(r ' + x2 + r1 ', h), path(r0 ' + x0, h), path(r ' + (x1 + r1 ') + r0 ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x0), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r0 ∈ x0, ¬ r0 ∈ x1, ¬ r1 ∈ x2, ¬ r1 ∈ x1 ⊦ |
r0 = (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, path(r ' + (x1 + r1 ') + r0 ', h), path(r0 ' + x3 + r1 ', h), path(r ' + x2 + r1 ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x3), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x3, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r1 ∈ x3 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| r0 = (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, path(r ' + (x1 + r1 ') + r0 ', h), path(r0 ' + x3 + r1 ', h), path(r ' + x2 + r1 ', h), r0 ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ dups(x3), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x3, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r1 ∈ x3 ⊦ |
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); Reflist freely generated by [], +; ⊦ a + x = a ' + x; (s) ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ [] + x = x; (s)
| (r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, x2 = (x + (h((r ' + x2).last)).nxt ') + r0 ' + x3, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r ' + x1).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
Used simplifier rules: ⊦ x + [] = x; (s) ⊦ a '.last = a; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (as) ⊦ a ' + x ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: x2, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
| (r ' + x1).last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0)
(r ' + x1).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0, x1 = x2 ∨ (∃ r0, y0. x1 = x2 + r0 ' + y0) ∨ (∃ r0, x0. x2 = x1 + r0 ' + x0) ⊦
Used terms: r, x1, h, x2
| path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0) |
| (r ' + x1).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0, x1 = x2 ∨ (∃ r0, y0. x1 = x2 + r0 ' + y0) ∨ (∃ r0, x0. x2 = x1 + r0 ' + x0) ⊦ |
(r ' + x1).last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0, x1 = x2 ∨ x1 = x2 + r1 ' + x4 ∨ x2 = x1 + r2 ' + x5 ⊦
| (r ' + x1).last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0, x1 = x2 ∨ x1 = x2 + r1 ' + x4 ∨ x2 = x1 + r2 ' + x5 ⊦ |
(r ' + x1).last = (r ' + x).last, x1 = x2, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
(r ' + x1).last = (r ' + x).last, x1 = x2 + r1 ' + x4, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
(r ' + x1).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, x2 = x1 + r2 ' + x5, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
| (r ' + x1).last = (r ' + x).last, x1 = x2, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
(x2.last ' + x0).last = x2.last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, x2.last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x2), ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x ≠ [] → (a ' + x).last = x.last; (s)
| (x2.last ' + x0).last = x2.last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, x2.last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x2), ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
r1 = (r ' + x).last, (r1 ' + x0).last = r1, x2 = (x + (h(r1)).nxt ') + r0 ' + x3, x2 = x1 + r1 ', (h(r1)).nxt ≠ null, r1 ≠ r, x2 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x2, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x2), ¬ r ∈ x2, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x2, r1, x1
| r1 = (r ' + x).last, (r1 ' + x0).last = r1, x2 = (x + (h(r1)).nxt ') + r0 ' + x3, x2 = x1 + r1 ', (h(r1)).nxt ≠ null, r1 ≠ r, x2 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x2, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x2), ¬ r ∈ x2, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦ |
((r ' + x).last ' + x0).last = (r ' + x).last, x1 + (r ' + x).last ' = (x + (h((r ' + x).last)).nxt ') + r0 ' + x3, (h((r ' + x).last)).nxt ≠ null, (r ' + x).last ≠ r, (h((r ' + x).last)).nxt ∈ h, path(r ' + x + (h((r ' + x).last)).nxt ', h), path((r ' + x).last ' + x0, h), path(r ' + x1 + (r ' + x).last ', h), ¬ dups(x0), ¬ dups(x1), ¬ (r ' + x).last ∈ x, ¬ (r ' + x).last ∈ x0, ¬ (r ' + x).last ∈ x1, ¬ r ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| ((r ' + x).last ' + x0).last = (r ' + x).last, x1 + (r ' + x).last ' = (x + (h((r ' + x).last)).nxt ') + r0 ' + x3, (h((r ' + x).last)).nxt ≠ null, (r ' + x).last ≠ r, (h((r ' + x).last)).nxt ∈ h, path(r ' + x + (h((r ' + x).last)).nxt ', h), path((r ' + x).last ' + x0, h), path(r ' + x1 + (r ' + x).last ', h), ¬ dups(x0), ¬ dups(x1), ¬ (r ' + x).last ∈ x, ¬ (r ' + x).last ∈ x0, ¬ (r ' + x).last ∈ x1, ¬ r ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
Used simplifier rules: ⊦ x.last ∈ x ↔ x ≠ []; (s) ⊦ [] + x = x; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, x1 = x2 + r1 ' + x4, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
(r1 ' + x4).last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (h(x2.last)).nxt ≠ null, r ≠ r1, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x2 + x4), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x4, ¬ r1 ∈ x2, ¬ r1 ∈ x4, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ' + y) ↔ a ∈ x ∨ a ∈ y ∨ dups(x + y); (ws) ⊦ (x + a ' + y).last = (a ' + y).last; (s) ⊦ y ≠ [] → (x + y + z).last = (y + z).last; (s)
| (r1 ' + x4).last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (h(x2.last)).nxt ≠ null, r ≠ r1, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x + (h(x2.last)).nxt ', h), path(x2.last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x2 + x4), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x4, ¬ r1 ∈ x2, ¬ r1 ∈ x4, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
(r1 ' + x4).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x2 = (x + (h(r2)).nxt ') + r0 ' + x3, x2 = x1 + r2 ', (h(r2)).nxt ≠ null, r ≠ r1, r2 ≠ r, x2 ≠ [], (h(r2)).nxt ∈ h, path(r ' + x2, h), path(r ' + x2 + r1 ' + x4, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x2 + x4), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x4, ¬ r1 ∈ x2, ¬ r1 ∈ x4, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x2, r2, x1
| (r1 ' + x4).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x2 = (x + (h(r2)).nxt ') + r0 ' + x3, x2 = x1 + r2 ', (h(r2)).nxt ≠ null, r ≠ r1, r2 ≠ r, x2 ≠ [], (h(r2)).nxt ∈ h, path(r ' + x2, h), path(r ' + x2 + r1 ' + x4, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x2 + x4), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x4, ¬ r1 ∈ x2, ¬ r1 ∈ x4, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦ |
(r1 ' + x4).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x1 + r2 ' = (x + (h(r2)).nxt ') + r0 ' + x3, (h(r2)).nxt ≠ null, r ≠ r1, r1 ≠ r2, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + (x1 + r2 ') + r1 ' + x4, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1 + x4), ¬ dups(x1), ¬ r ∈ x1, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x4 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ ¬ b ∈ x → (dups(x + b ') ↔ dups(x)); (s) ⊦ dups(x + a ' + y) ↔ a ∈ x ∨ a ∈ y ∨ dups(x + y); (ws) ⊦ x + a ' ≠ []; (s)
| (r1 ' + x4).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x1 + r2 ' = (x + (h(r2)).nxt ') + r0 ' + x3, (h(r2)).nxt ≠ null, r ≠ r1, r1 ≠ r2, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + (x1 + r2 ') + r1 ' + x4, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1 + x4), ¬ dups(x1), ¬ r ∈ x1, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x4 ⊦ |
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); path-postfix: ⊦ path(x + r ' + y, h) → (path(r ' + y, h) ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ ¬ c ∈ y ∧ c ≠ b → y + b ' ≠ y0 + c ' + z; (s) Used formulas: path(r2 ' + r1 ' + x4, h)
| (r ' + x1).last = (r ' + x).last, x2 = (x + (h(x2.last)).nxt ') + r0 ' + x3, (x2.last ' + x0).last = (r ' + x).last, x2 = x1 + r2 ' + x5, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x + (h(x2.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, ((r2 ' + x5).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h((r2 ' + x5).last)).nxt ' + r0 ' + x3, (h((r2 ' + x5).last)).nxt ≠ null, r ≠ r2, (r2 ' + x5).last ≠ r, (h((r2 ' + x5).last)).nxt ∈ h, path(r ' + x + (h((r2 ' + x5).last)).nxt ', h), path((r2 ' + x5).last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x5, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ (r2 ' + x5).last ∈ x, ¬ (r2 ' + x5).last ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ (x + a ' + y).last = (a ' + y).last; (s) ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ' + y) ↔ a ∈ x ∨ a ∈ y ∨ dups(x + y); (ws) ⊦ x + a ' + y ≠ []; (s)
| (r ' + x1).last = (r ' + x).last, ((r2 ' + x5).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h((r2 ' + x5).last)).nxt ' + r0 ' + x3, (h((r2 ' + x5).last)).nxt ≠ null, r ≠ r2, (r2 ' + x5).last ≠ r, (h((r2 ' + x5).last)).nxt ∈ h, path(r ' + x + (h((r2 ' + x5).last)).nxt ', h), path((r2 ' + x5).last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x5, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ (r2 ' + x5).last ∈ x, ¬ (r2 ' + x5).last ∈ x0 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r ' + x1).last = (r ' + x).last, ((r2 ' + x5).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h((r2 ' + x5).last)).nxt ' + r0 ' + x3, x5 = [], (h((r2 ' + x5).last)).nxt ≠ null, r ≠ r2, (r2 ' + x5).last ≠ r, (h((r2 ' + x5).last)).nxt ∈ h, path(r ' + x1 + r2 ' + x5, h), path(r ' + x1, h), path((r2 ' + x5).last ' + x0, h), path(r ' + x + (h((r2 ' + x5).last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ (r2 ' + x5).last ∈ x, ¬ (r2 ' + x5).last ∈ x0 ⊦
(r ' + x1).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h(x5.last)).nxt ' + r0 ' + x3, (x5.last ' + x0).last = (r ' + x).last, (h(x5.last)).nxt ≠ null, r ≠ r2, x5 ≠ [], x5.last ≠ r, (h(x5.last)).nxt ∈ h, path(r ' + x1 + r2 ' + x5, h), path(r ' + x1, h), path(x5.last ' + x0, h), path(r ' + x + (h(x5.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ x5.last ∈ x, ¬ x5.last ∈ x0 ⊦
Used terms: x5, r2 '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, ((r2 ' + x5).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h((r2 ' + x5).last)).nxt ' + r0 ' + x3, x5 = [], (h((r2 ' + x5).last)).nxt ≠ null, r ≠ r2, (r2 ' + x5).last ≠ r, (h((r2 ' + x5).last)).nxt ∈ h, path(r ' + x1 + r2 ' + x5, h), path(r ' + x1, h), path((r2 ' + x5).last ' + x0, h), path(r ' + x + (h((r2 ' + x5).last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ (r2 ' + x5).last ∈ x, ¬ (r2 ' + x5).last ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦
Used simplifier rules: ⊦ a '.last = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ ¬ a ∈ []; (s)
| (r ' + x1).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r ' + x1).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x = [], x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦
(r ' + x1).last = x.last, (r2 ' + x0).last = x.last, x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, x ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦
Used terms: x, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, (r2 ' + x0).last = (r ' + x).last, x = [], x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦ |
(h((r2 ' + x0).last)).nxt = (h(r2)).nxt, ((r2 ' + x0).last ' + x1).last = (r2 ' + x0).last, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, (r2 ' + x0).last ≠ null, r2 ≠ (r2 ' + x0).last, (h(r2)).nxt ∈ h, path((r2 ' + x0).last ' + x1 + r2 ', h), path((r2 ' + x0).last ' + x1, h), path(r2 ' + x0, h), (r2 ' + x0).last ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ (r2 ' + x0).last ∈ x1 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; ⊦ ¬ a ∈ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ [] + x = x; (s) ⊦ a '.last = a; (s) ⊦ x + [] = x; (s)
| (h((r2 ' + x0).last)).nxt = (h(r2)).nxt, ((r2 ' + x0).last ' + x1).last = (r2 ' + x0).last, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, (r2 ' + x0).last ≠ null, r2 ≠ (r2 ' + x0).last, (h(r2)).nxt ∈ h, path((r2 ' + x0).last ' + x1 + r2 ', h), path((r2 ' + x0).last ' + x1, h), path(r2 ' + x0, h), (r2 ' + x0).last ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ (r2 ' + x0).last ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(h(x0.last)).nxt = (h(r2)).nxt, (x0.last ' + x1).last = x0.last, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ x0.last, x0 ≠ [], x0.last ≠ null, (h(r2)).nxt ∈ h, path(r2 ' + x0, h), path(x0.last ' + x1, h), path(x0.last ' + x1 + r2 ', h), x0.last ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ x0.last ∈ x1 ⊦
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x0, r2 '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h(x0.last)).nxt = (h(r2)).nxt, (x0.last ' + x1).last = x0.last, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ x0.last, x0 ≠ [], x0.last ≠ null, (h(r2)).nxt ∈ h, path(r2 ' + x0, h), path(x0.last ' + x1, h), path(x0.last ' + x1 + r2 ', h), x0.last ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ x0.last ∈ x1 ⊦ |
(h(x0.last)).nxt = (h(r2)).nxt, (x0.last ' + x1).last = x0.last, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ x0.last, x0 ≠ [], x0.last ≠ null, (h(r2)).nxt ∈ h, path(x0.last ' + x1 + r2 ', h), path(x0.last ' + x1, h), path(r2 ' + x0, h), x0.last ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ x0.last ∈ x1 ⊦
| (h(x0.last)).nxt = (h(r2)).nxt, (x0.last ' + x1).last = x0.last, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ x0.last, x0 ≠ [], x0.last ≠ null, (h(r2)).nxt ∈ h, path(x0.last ' + x1 + r2 ', h), path(x0.last ' + x1, h), path(r2 ' + x0, h), x0.last ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ x0.last ∈ x1 ⊦ |
(h(r)).nxt = (h(r2)).nxt, (r ' + x1).last = r, x0 = x2 + r ', x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r ≠ null, r2 ≠ r, x0 ≠ [], (h(r2)).nxt ∈ h, path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), r ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x1, ¬ r2 ∈ x0, ¬ r2 ∈ x1 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x0, r, x2
| (h(r)).nxt = (h(r2)).nxt, (r ' + x1).last = r, x0 = x2 + r ', x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r ≠ null, r2 ≠ r, x0 ≠ [], (h(r2)).nxt ∈ h, path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), r ∈ h, ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x1, ¬ r2 ∈ x0, ¬ r2 ∈ x1 ⊦ |
(h(r)).nxt = (h(r2)).nxt, (r ' + x1).last = r, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r ≠ null, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x2 + r ', h), r ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (h(r)).nxt = (h(r2)).nxt, (r ' + x1).last = r, x1 + r2 ' = (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r ≠ null, r2 ≠ r, (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x2 + r ', h), r ∈ h, ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
Used simplifier rules: ⊦ x.last ∈ x ↔ x ≠ []; (s) ⊦ [] + x = x; (s) ⊦ a ' = b ' + x ↔ a = b ∧ x = []; (ws) ⊦ a ' + x ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: x1, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = x.last, (r2 ' + x0).last = x.last, x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, x ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦ |
(r ' + x1).last = x.last, (r2 ' + x0).last = x.last, x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, x ≠ [], (h(r2)).nxt ∈ h, path(r ' + x + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦
| (r ' + x1).last = x.last, (r2 ' + x0).last = x.last, x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, x ≠ [], (h(r2)).nxt ∈ h, path(r ' + x + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦ |
(r ' + x1).last = r1, (r2 ' + x0).last = r1, x = x2 + r1 ', x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, x ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x, r1, x2
| (r ' + x1).last = r1, (r2 ' + x0).last = r1, x = x2 + r1 ', x1 + r2 ' = x + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, x ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + x + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x1, ¬ r2 ∈ x, ¬ r2 ∈ x0 ⊦ |
(r ' + x1).last = (r2 ' + x0).last, x1 + r2 ' = (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, r2 ≠ (r2 ' + x0).last, (h(r2)).nxt ∈ h, path(r ' + (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ x + a ' ≠ []; (s)
| (r ' + x1).last = (r2 ' + x0).last, x1 + r2 ' = (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ' + r0 ' + x3, (h(r2)).nxt ≠ null, r2 ≠ r, r2 ≠ (r2 ' + x0).last, (h(r2)).nxt ∈ h, path(r ' + (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
x1 + r2 ' = (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ' + r0 ' + x3, x1.last = (r2 ' + x0).last, (h(r2)).nxt ≠ null, r2 ≠ r, r2 ≠ (r2 ' + x0).last, x1 ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦
Used simplifier rules: ⊦ [] + x = x; (s) ⊦ x + a ' + y = b ' ↔ x = [] ∧ a = b ∧ y = []; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: r ', x1
| ⊦ y ≠ [] → (x + y).last = y.last |
| x1 + r2 ' = (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ' + r0 ' + x3, x1.last = (r2 ' + x0).last, (h(r2)).nxt ≠ null, r2 ≠ r, r2 ≠ (r2 ' + x0).last, x1 ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + (x2 + (r2 ' + x0).last ') + (h(r2)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ r ∈ x1, ¬ r2 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦ |
(h(r2)).nxt ' + r0 ' + x3 = x + r2 ', x1 = x2 + x1.last ' + x, x1.last = (r2 ' + x0).last, (h(r2)).nxt ≠ null, r2 ≠ x1.last, r2 ≠ r, x1 ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + (x2 + x1.last ') + (h(r2)).nxt ', h), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1, ¬ r2 ∈ x0, (h(r2)).nxt ∈ x ∨ (h(r2)).nxt = r2, r2 = (h(r2)).nxt ∨ r2 = r0 ∨ r2 ∈ x3 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + y = z + y ↔ x = z; (s) ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ≠ b → (a ∈ b ' + x ↔ a ∈ x); (s) ⊦ x + a ' = y + b ' ↔ x = y ∧ a = b; (ws) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list[reflist] inex: ⊦ x + a ' = y + b ' + z ∧ a ≠ b → (∃ z0. z = z0 + a '); (forward) from specification list[reflist] in-16: ⊦ x + a ' = y + b ' + z ∧ a ≠ b → a ∈ z; (forward) from specification list[reflist] in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list[reflist] ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s)
| (h(r2)).nxt ' + r0 ' + x3 = x + r2 ', x1 = x2 + x1.last ' + x, x1.last = (r2 ' + x0).last, (h(r2)).nxt ≠ null, r2 ≠ x1.last, r2 ≠ r, x1 ≠ [], (h(r2)).nxt ∈ h, path(r ' + x1 + r2 ', h), path(r ' + x1, h), path(r2 ' + x0, h), path(r ' + (x2 + x1.last ') + (h(r2)).nxt ', h), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1, ¬ r2 ∈ x0, (h(r2)).nxt ∈ x ∨ (h(r2)).nxt = r2, r2 = (h(r2)).nxt ∨ r2 = r0 ∨ r2 ∈ x3 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(h(r2)).nxt ' + r0 ' + x3 = x + r2 ', x1.last = x0.last, x1 = x2 + x1.last ' + x, (h(r2)).nxt ≠ null, r2 ≠ x1.last, r2 ≠ r, x0 ≠ [], x1 ≠ [], (h(r2)).nxt ∈ h, path(r ' + (x2 + x1.last ') + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1, ¬ r2 ∈ x0, (h(r2)).nxt ∈ x ∨ (h(r2)).nxt = r2, r2 = (h(r2)).nxt ∨ r2 = r0 ∨ r2 ∈ x3 ⊦
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: r2 ', x0
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h(r2)).nxt ' + r0 ' + x3 = x + r2 ', x1.last = x0.last, x1 = x2 + x1.last ' + x, (h(r2)).nxt ≠ null, r2 ≠ x1.last, r2 ≠ r, x0 ≠ [], x1 ≠ [], (h(r2)).nxt ∈ h, path(r ' + (x2 + x1.last ') + (h(r2)).nxt ', h), path(r2 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ', h), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1, ¬ r2 ∈ x0, (h(r2)).nxt ∈ x ∨ (h(r2)).nxt = r2, r2 = (h(r2)).nxt ∨ r2 = r0 ∨ r2 ∈ x3 ⊦ |
Used simplifier rules: ⊦ x + a ' ≠ []; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ ¬ a ∈ x → (x + a ' = y + a ' + z ↔ y = x ∧ z = []); (ws) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ b ' ↔ a = b; (s) ⊦ [] + x = x; (s) ⊦ a ' = b ' + x ↔ a = b ∧ x = []; (ws) ⊦ a ' + x ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x1, r1, x4
| (r ' + x1).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h(x5.last)).nxt ' + r0 ' + x3, (x5.last ' + x0).last = (r ' + x).last, (h(x5.last)).nxt ≠ null, r ≠ r2, x5 ≠ [], x5.last ≠ r, (h(x5.last)).nxt ∈ h, path(r ' + x1 + r2 ' + x5, h), path(r ' + x1, h), path(x5.last ' + x0, h), path(r ' + x + (h(x5.last)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ x5.last ∈ x, ¬ x5.last ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h(x5.last)).nxt ' + r0 ' + x3, (x5.last ' + x0).last = (r ' + x).last, (h(x5.last)).nxt ≠ null, r ≠ r2, x5 ≠ [], x5.last ≠ r, (h(x5.last)).nxt ∈ h, path(r ' + x + (h(x5.last)).nxt ', h), path(x5.last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x5, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ x5.last ∈ x, ¬ x5.last ∈ x0 ⊦
| (r ' + x1).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h(x5.last)).nxt ' + r0 ' + x3, (x5.last ' + x0).last = (r ' + x).last, (h(x5.last)).nxt ≠ null, r ≠ r2, x5 ≠ [], x5.last ≠ r, (h(x5.last)).nxt ∈ h, path(r ' + x + (h(x5.last)).nxt ', h), path(x5.last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x5, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r2 ∈ x1, ¬ r2 ∈ x5, ¬ x5.last ∈ x, ¬ x5.last ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h(r1)).nxt ' + r0 ' + x3, x5 = x2 + r1 ', (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, x5 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x5, h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r1 ∈ x, ¬ r1 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x5 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x5, r1, x2
| (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x5 = x + (h(r1)).nxt ' + r0 ' + x3, x5 = x2 + r1 ', (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, x5 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x5, h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x5), ¬ r ∈ x1, ¬ r ∈ x5, ¬ r1 ∈ x, ¬ r1 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x5 ⊦ |
(r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 + r1 ' = x + (h(r1)).nxt ' + r0 ' + x3, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ', h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r1 ∈ x1, ¬ r1 ∈ x2, ¬ r1 ∈ x, ¬ r1 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 + r1 ' = x + (h(r1)).nxt ' + r0 ' + x3, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ', h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r1 ∈ x1, ¬ r1 ∈ x2, ¬ r1 ∈ x, ¬ r1 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦ |
y ≠ [] ⊦ x + a ' = y ↔ x = y.butlast ∧ a = y.last
(r ' + x1).last = (r ' + x).last, r1 = (x + (h(r1)).nxt ' + r0 ' + x3).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = (x + (h(r1)).nxt ' + r0 ' + x3).butlast, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, x + (h(r1)).nxt ' + r0 ' + x3 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r1 ∈ x1, ¬ r1 ∈ x2, ¬ r1 ∈ x, ¬ r1 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦
Used simplifier rules: ⊦ x + y = [] ↔ x = [] ∧ y = []; (as) ⊦ a ' + x ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: x + (h(r1)).nxt ' + r0 ' + x3, r1, x1 + r2 ' + x2
| y ≠ [] ⊦ x + a ' = y ↔ x = y.butlast ∧ a = y.last |
| (r ' + x1).last = (r ' + x).last, r1 = (x + (h(r1)).nxt ' + r0 ' + x3).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = (x + (h(r1)).nxt ' + r0 ' + x3).butlast, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, x + (h(r1)).nxt ' + r0 ' + x3 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x1 + x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ r1 ∈ x1, ¬ r1 ∈ x2, ¬ r1 ∈ x, ¬ r1 ∈ x0, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦ |
(r ' + x1).last = (r ' + x).last, ((r0 ' + x3).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h((r0 ' + x3).last)).nxt ' + (r0 ' + x3).butlast, (h((r0 ' + x3).last)).nxt ≠ null, r ≠ r2, (r0 ' + x3).last ≠ r, r2 ≠ (r0 ' + x3).last, (h((r0 ' + x3).last)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + (r0 ' + x3).last ', h), path(r ' + x1, h), path((r0 ' + x3).last ' + x0, h), path(r ' + x + (h((r0 ' + x3).last)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x3).last ∈ x0, ¬ (r0 ' + x3).last ∈ x, ¬ (r0 ' + x3).last ∈ x2, ¬ (r0 ' + x3).last ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + a ' + y ≠ []; (s) ⊦ (b ' + a ' + x).last = (a ' + x).last; (s) ⊦ (x + a ' + y).last = (a ' + y).last; (s) ⊦ (a ' + b ' + x).butlast = a ' + (b ' + x).butlast; (s) ⊦ (x + a ' + y).butlast = x + (a ' + y).butlast; (s)
| (r ' + x1).last = (r ' + x).last, ((r0 ' + x3).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h((r0 ' + x3).last)).nxt ' + (r0 ' + x3).butlast, (h((r0 ' + x3).last)).nxt ≠ null, r ≠ r2, (r0 ' + x3).last ≠ r, r2 ≠ (r0 ' + x3).last, (h((r0 ' + x3).last)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + (r0 ' + x3).last ', h), path(r ' + x1, h), path((r0 ' + x3).last ' + x0, h), path(r ' + x + (h((r0 ' + x3).last)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x3).last ∈ x0, ¬ (r0 ' + x3).last ∈ x, ¬ (r0 ' + x3).last ∈ x2, ¬ (r0 ' + x3).last ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).butlast = x + y.butlast
(r ' + x1).last = (r ' + x).last, ((r0 ' + x3).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h((r0 ' + x3).last)).nxt ' + (r0 ' + x3).butlast, x3 = [], (h((r0 ' + x3).last)).nxt ≠ null, r ≠ r2, (r0 ' + x3).last ≠ r, r2 ≠ (r0 ' + x3).last, (h((r0 ' + x3).last)).nxt ∈ h, path(r ' + x + (h((r0 ' + x3).last)).nxt ', h), path((r0 ' + x3).last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + (r0 ' + x3).last ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x3).last ∈ x0, ¬ (r0 ' + x3).last ∈ x, ¬ (r0 ' + x3).last ∈ x2, ¬ (r0 ' + x3).last ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
(r ' + x1).last = (r ' + x).last, ((r0 ' + x3).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h((r0 ' + x3).last)).nxt ' + r0 ' + x3.butlast, (h((r0 ' + x3).last)).nxt ≠ null, r ≠ r2, (r0 ' + x3).last ≠ r, r2 ≠ (r0 ' + x3).last, x3 ≠ [], (h((r0 ' + x3).last)).nxt ∈ h, path(r ' + x + (h((r0 ' + x3).last)).nxt ', h), path((r0 ' + x3).last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + (r0 ' + x3).last ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x3).last ∈ x0, ¬ (r0 ' + x3).last ∈ x, ¬ (r0 ' + x3).last ∈ x2, ¬ (r0 ' + x3).last ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used terms: x3, r0 '
| ⊦ y ≠ [] → (x + y).butlast = x + y.butlast |
| (r ' + x1).last = (r ' + x).last, ((r0 ' + x3).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h((r0 ' + x3).last)).nxt ' + (r0 ' + x3).butlast, x3 = [], (h((r0 ' + x3).last)).nxt ≠ null, r ≠ r2, (r0 ' + x3).last ≠ r, r2 ≠ (r0 ' + x3).last, (h((r0 ' + x3).last)).nxt ∈ h, path(r ' + x + (h((r0 ' + x3).last)).nxt ', h), path((r0 ' + x3).last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + (r0 ' + x3).last ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x3).last ∈ x0, ¬ (r0 ' + x3).last ∈ x, ¬ (r0 ' + x3).last ∈ x2, ¬ (r0 ' + x3).last ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r0)).nxt ', (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x2, h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: ⊦ a '.last = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ a '.butlast = []; (s)
| (r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r0)).nxt ', (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x2, h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
y ≠ [] ⊦ y = x + a ' ↔ x = y.butlast ∧ a = y.last
(h(r0)).nxt = (x1 + r2 ' + x2).last, (r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, x = (x1 + r2 ' + x2).butlast, (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, x1 + r2 ' + x2 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: ⊦ x + y = [] ↔ x = [] ∧ y = []; (as) ⊦ a ' + x ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: (h(r0)).nxt, x, x1 + r2 ' + x2
| y ≠ [] ⊦ y = x + a ' ↔ x = y.butlast ∧ a = y.last |
| (h(r0)).nxt = (x1 + r2 ' + x2).last, (r ' + x1).last = (r ' + x).last, (r0 ' + x0).last = (r ' + x).last, x = (x1 + r2 ' + x2).butlast, (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, x1 + r2 ' + x2 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(h(r0)).nxt = (r2 ' + x2).last, (r ' + x1).last = (r ' + x1 + (r2 ' + x2).butlast).last, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x2, h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ (r2 ' + x2).butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ (x + a ' + y).butlast = x + (a ' + y).butlast; (s) ⊦ x + a ' + y ≠ []; (s) ⊦ (x + a ' + y).last = (a ' + y).last; (s)
| (h(r0)).nxt = (r2 ' + x2).last, (r ' + x1).last = (r ' + x1 + (r2 ' + x2).butlast).last, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x2, h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ (r2 ' + x2).butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).butlast = x + y.butlast
(h(r0)).nxt = (r2 ' + x2).last, (r ' + x1).last = (r ' + x1 + (r2 ' + x2).butlast).last, (r0 ' + x0).last = (r ' + x1).last, x2 = [], (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ (r2 ' + x2).butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
(h(r0)).nxt = (r2 ' + x2).last, (r ' + x1).last = (r ' + x1 + r2 ' + x2.butlast).last, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, x2 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ r2 ' + x2.butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used terms: x2, r2 '
| ⊦ y ≠ [] → (x + y).butlast = x + y.butlast |
| (h(r0)).nxt = (r2 ' + x2).last, (r ' + x1).last = (r ' + x1 + (r2 ' + x2).butlast).last, (r0 ' + x0).last = (r ' + x1).last, x2 = [], (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ (r2 ' + x2).butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + (h(r0)).nxt ' + r0 ', h), ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
Used simplifier rules: ⊦ ¬ a ∈ []; (s) ⊦ a '.butlast = []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ [] + x = x; (s) ⊦ a '.last = a; (s)
| (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + (h(r0)).nxt ' + r0 ', h), ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null
(h((r ' + x1 + (h(r0)).nxt ').last)).nxt = r0, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: h, r0, x1 + (h(r0)).nxt ', r
| ⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null |
| (h((r ' + x1 + (h(r0)).nxt ').last)).nxt = r0, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
(h((h(r0)).nxt)).nxt = r0, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ (a ' + x + b ').last = b; (s)
| (h((h(r0)).nxt)).nxt = r0, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(h((h(r0)).nxt)).nxt = r0, (r0 ' + x0).last = (r ' + x1).last, x0 = [], (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
(h((h(r0)).nxt)).nxt = r0, x0.last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, x0 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
Used terms: x0, r0 '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h((h(r0)).nxt)).nxt = r0, (r0 ' + x0).last = (r ' + x1).last, x0 = [], (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
(h((h((r ' + x1).last)).nxt)).nxt = (r ' + x1).last, (h((r ' + x1).last)).nxt ≠ null, (h((r ' + x1).last)).nxt ≠ (r ' + x1).last, (r ' + x1).last ≠ null, (r ' + x1).last ≠ r, r ≠ (h((r ' + x1).last)).nxt, (h((r ' + x1).last)).nxt ∈ h, path(r ' + x1, h), path(r ' + x1 + (h((r ' + x1).last)).nxt ', h), (r ' + x1).last ∈ h, ¬ dups(x1), ¬ (h((r ' + x1).last)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x1, ¬ r ∈ x1 ⊦
Used simplifier rules: path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ ¬ a ∈ []; (s) ⊦ ¬ dups([]); (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ a '.last = a; (s)
| (h((h((r ' + x1).last)).nxt)).nxt = (r ' + x1).last, (h((r ' + x1).last)).nxt ≠ null, (h((r ' + x1).last)).nxt ≠ (r ' + x1).last, (r ' + x1).last ≠ null, (r ' + x1).last ≠ r, r ≠ (h((r ' + x1).last)).nxt, (h((r ' + x1).last)).nxt ∈ h, path(r ' + x1, h), path(r ' + x1 + (h((r ' + x1).last)).nxt ', h), (r ' + x1).last ∈ h, ¬ dups(x1), ¬ (h((r ' + x1).last)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x1, ¬ r ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
Used simplifier rules: ⊦ x.last ∈ x ↔ x ≠ []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x1, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h((h(r0)).nxt)).nxt = r0, x0.last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, x0 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
(h((h(r0)).nxt)).nxt = r0, x0.last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, x0 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
| (h((h(r0)).nxt)).nxt = r0, x0.last = (r ' + x1).last, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, x0 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
(h((h(r0)).nxt)).nxt = r0, r1 = (r ' + x1).last, x0 = x2 + r1 ', (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, x0 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x0, r1, x2
| (h((h(r0)).nxt)).nxt = r0, r1 = (r ' + x1).last, x0 = x2 + r1 ', (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, x0 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
(h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ (r ' + x1).last, (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x2 + (r ' + x1).last ', h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ (r ' + x1).last, (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x2 + (r ' + x1).last ', h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(h((h(r0)).nxt)).nxt = r0, x1 = [], (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ (r ' + x1).last, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x2 + (r ' + x1).last ', h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2 ⊦
(h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ x1.last, x1 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x2 + x1.last ', h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2, ¬ x1.last ∈ x2 ⊦
Used terms: x1, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h((h(r0)).nxt)).nxt = r0, x1 = [], (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ (r ' + x1).last, (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x2 + (r ' + x1).last ', h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2 ⊦ |
(h((h(r0)).nxt)).nxt = r0, (h(r)).nxt = (h(r0)).nxt, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r ≠ null, r0 ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r0 ' + x2 + r ', h), r ∈ h, r0 ∈ h, ¬ dups(x2), ¬ r ∈ x2, ¬ r0 ∈ x2 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ ¬ a ∈ []; (s) ⊦ a '.last = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ ¬ dups([]); (s) ⊦ [] + x = x; (s)
| (h((h(r0)).nxt)).nxt = r0, (h(r)).nxt = (h(r0)).nxt, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r ≠ null, r0 ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r0 ' + x2 + r ', h), r ∈ h, r0 ∈ h, ¬ dups(x2), ¬ r ∈ x2, ¬ r0 ∈ x2 ⊦ |
(h(r)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, x2 = r1 + x, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r ≠ null, r0 ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r0 ' + x2 + r ', h), r ∈ h, r0 ∈ h, ¬ dups(x2), ¬ r ∈ x2, ¬ r0 ∈ x2 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; Reflist freely generated by [], +; ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h(r)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, x2 = r1 + x, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r ≠ null, r0 ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r0 ' + x2 + r ', h), r ∈ h, r0 ∈ h, ¬ dups(x2), ¬ r ∈ x2, ¬ r0 ∈ x2 ⊦ |
(h(r)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r0, r ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path((h(r0)).nxt ' + x + r ', h), r ∈ h, r0 ∈ h, ¬ dups(x), ¬ (h(r0)).nxt ∈ x, ¬ r ∈ x, ¬ r0 ∈ x ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ a + x = a ' + x; (s) ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (h(r)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r0, r ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, (h(r0)).nxt ∈ h, path((h(r0)).nxt ' + x + r ', h), r ∈ h, r0 ∈ h, ¬ dups(x), ¬ (h(r0)).nxt ∈ x, ¬ r ∈ x, ¬ r0 ∈ x ⊦ |
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); Reflist freely generated by [], +; ⊦ a + x = a ' + x; (s) ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ [] + x = x; (s)
| (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ x1.last, x1 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x2 + x1.last ', h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2, ¬ x1.last ∈ x2 ⊦ |
(h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ x1.last, x1 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x2 + x1.last ', h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2, ¬ x1.last ∈ x2 ⊦
| (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ x1.last, x1 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + (h(r0)).nxt ', h), path(r0 ' + x2 + x1.last ', h), path(r ' + x1, h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2, ¬ x1.last ∈ x2 ⊦ |
(h((h(r0)).nxt)).nxt = r0, x1 = x0 + r1 ', (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ r1, x1 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x2 + r1 ', h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2, ¬ r1 ∈ x2 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x1, r1, x0
| (h((h(r0)).nxt)).nxt = r0, x1 = x0 + r1 ', (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ null, r0 ≠ r1, x1 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1, h), path(r0 ' + x2 + r1 ', h), path(r ' + x1 + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x2, ¬ r1 ∈ x2 ⊦ |
(h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, (h(r0)).nxt ∈ h, path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r0 ' + x2 + r1 ', h), path(r ' + x0 + r1 ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, (h(r0)).nxt ∈ h, path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r0 ' + x2 + r1 ', h), path(r ' + x0 + r1 ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦ |
(h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, (h(r0)).nxt ∈ h, path(r ' + x0 + r1 ', h), path(r0 ' + x2 + r1 ', h), path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r1 ' + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦
Used simplifier rules: path-postfix: ⊦ path(x + r ' + y, h) → (path(r ' + y, h) ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used formulas: path(r1 ' + (h(r0)).nxt ', h)
| (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, (h(r0)).nxt ∈ h, path(r ' + x0 + r1 ', h), path(r0 ' + x2 + r1 ', h), path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r1 ' + (h(r0)).nxt ', h), r0 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦ |
(h((h(r0)).nxt)).nxt = r0, (h(r1)).nxt = (h(r0)).nxt, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, r1 ≠ null, (h(r0)).nxt ∈ h, path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r0 ' + x2 + r1 ', h), path(r ' + x0 + r1 ', h), r0 ∈ h, r1 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h((h(r0)).nxt)).nxt = r0, (h(r1)).nxt = (h(r0)).nxt, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, r1 ≠ null, (h(r0)).nxt ∈ h, path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r0 ' + x2 + r1 ', h), path(r ' + x0 + r1 ', h), r0 ∈ h, r1 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦ |
(h(r1)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, x2 = r2 + x, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, r1 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r1 ', h), path(r0 ' + x2 + r1 ', h), path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), r0 ∈ h, r1 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; Reflist freely generated by [], +; ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h(r1)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, x2 = r2 + x, (h(r0)).nxt ≠ r0, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r1, r ≠ (h(r0)).nxt, r ≠ r1, r0 ≠ r, r0 ≠ null, r0 ≠ r1, r1 ≠ null, (h(r0)).nxt ∈ h, path(r ' + x0 + r1 ', h), path(r0 ' + x2 + r1 ', h), path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), r0 ∈ h, r1 ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x0, ¬ r ∈ x0, ¬ r0 ∈ x2, ¬ r0 ∈ x0, ¬ r1 ∈ x2, ¬ r1 ∈ x0 ⊦ |
(h(r1)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r1, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r0, r ≠ r1, r ≠ (h(r0)).nxt, r0 ≠ r1, r0 ≠ null, r0 ≠ r, r1 ≠ null, (h(r0)).nxt ∈ h, path((h(r0)).nxt ' + x + r1 ', h), path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r ' + x0 + r1 ', h), r0 ∈ h, r1 ∈ h, ¬ dups(x0), ¬ dups(x), ¬ (h(r0)).nxt ∈ x0, ¬ (h(r0)).nxt ∈ x, ¬ r ∈ x0, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ a + x = a ' + x; (s) ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (h(r1)).nxt = (h(r0)).nxt, (h((h(r0)).nxt)).nxt = r0, (h(r0)).nxt ≠ r1, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ r0, r ≠ r1, r ≠ (h(r0)).nxt, r0 ≠ r1, r0 ≠ null, r0 ≠ r, r1 ≠ null, (h(r0)).nxt ∈ h, path((h(r0)).nxt ' + x + r1 ', h), path(r ' + (x0 + r1 ') + (h(r0)).nxt ', h), path(r ' + x0 + r1 ', h), r0 ∈ h, r1 ∈ h, ¬ dups(x0), ¬ dups(x), ¬ (h(r0)).nxt ∈ x0, ¬ (h(r0)).nxt ∈ x, ¬ r ∈ x0, ¬ r0 ∈ x0, ¬ r0 ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦ |
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); Reflist freely generated by [], +; ⊦ a + x = a ' + x; (s) ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ [] + x = x; (s)
| (h(r0)).nxt = (r2 ' + x2).last, (r ' + x1).last = (r ' + x1 + r2 ' + x2.butlast).last, (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ null, r ≠ r2, r0 ≠ r, r2 ≠ r0, x2 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ r2 ' + x2.butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(h(r0)).nxt = x2.last, (r ' + x1).last = (r2 ' + x2.butlast).last, (r0 ' + x0).last = (r2 ' + x2.butlast).last, r ≠ r2, r0 ≠ r, r2 ≠ r0, x2.last ≠ null, x2 ≠ [], path(r ' + x1 + r2 ' + x2 + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x2, h), x2.last ∈ h, ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x2.butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ≠ b → (a ∈ b ' + x ↔ a ∈ x); (s) ⊦ x ≠ [] → (a ' + x).last = x.last; (s) ⊦ (a ' + x + b ' + y).last = (b ' + y).last; (s)
| (h(r0)).nxt = x2.last, (r ' + x1).last = (r2 ' + x2.butlast).last, (r0 ' + x0).last = (r2 ' + x2.butlast).last, r ≠ r2, r0 ≠ r, r2 ≠ r0, x2.last ≠ null, x2 ≠ [], path(r ' + x1 + r2 ' + x2 + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x2, h), x2.last ∈ h, ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x2.butlast, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(h(r0)).nxt = r1, (r ' + x1).last = (r2 ' + x3).last, (r0 ' + x0).last = (r2 ' + x3).last, x2 = x3 + r1 ', r ≠ r2, r0 ≠ r, r1 ≠ null, r2 ≠ r0, x2 ≠ [], path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), r1 ∈ h, ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x2, r1, x3
| (h(r0)).nxt = r1, (r ' + x1).last = (r2 ' + x3).last, (r0 ' + x0).last = (r2 ' + x3).last, x2 = x3 + r1 ', r ≠ r2, r0 ≠ r, r1 ≠ null, r2 ≠ r0, x2 ≠ [], path(r ' + x1 + r2 ' + x2, h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r0 ', h), r1 ∈ h, ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(r ' + x1).last = (r2 ' + x3).last, (r0 ' + x0).last = (r2 ' + x3).last, (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (r ' + x1).last = (r2 ' + x3).last, (r0 ' + x0).last = (r2 ' + x3).last, (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r ' + x1).last = (r2 ' + x3).last, (r0 ' + x0).last = (r2 ' + x3).last, x3 = [], (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦
(r ' + x1).last = x3.last, (r0 ' + x0).last = x3.last, (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, x3 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦
Used terms: x3, r2 '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r2 ' + x3).last, (r0 ' + x0).last = (r2 ' + x3).last, x3 = [], (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦ |
(r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ null, (r ' + x1).last ≠ (h(r0)).nxt, (r ' + x1).last ≠ r0, r ≠ (h(r0)).nxt, r ≠ (r ' + x1).last, r0 ≠ (h(r0)).nxt, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x1 + (r ' + x1).last ' + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + (r ' + x1).last ' + (h(r0)).nxt ' + r0 ', h), ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦
Used simplifier rules: ⊦ ¬ a ∈ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ [] + x = x; (s) ⊦ a '.last = a; (s)
| (r0 ' + x0).last = (r ' + x1).last, (h(r0)).nxt ≠ null, (r ' + x1).last ≠ (h(r0)).nxt, (r ' + x1).last ≠ r0, r ≠ (h(r0)).nxt, r ≠ (r ' + x1).last, r0 ≠ (h(r0)).nxt, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x1 + (r ' + x1).last ' + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + (r ' + x1).last ' + (h(r0)).nxt ' + r0 ', h), ¬ dups(x0), ¬ dups(x1), ¬ (h(r0)).nxt ∈ x1, ¬ (r ' + x1).last ∈ x1, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
Used simplifier rules: ⊦ x.last ∈ x ↔ x ≠ []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x1, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = x3.last, (r0 ' + x0).last = x3.last, (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, x3 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦ |
(r ' + x1).last = x3.last, (r0 ' + x0).last = x3.last, (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, x3 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦
| (r ' + x1).last = x3.last, (r0 ' + x0).last = x3.last, (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, x3 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦ |
(r ' + x1).last = r1, (r0 ' + x0).last = r1, x3 = x2 + r1 ', (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, x3 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x3, r1, x2
| (r ' + x1).last = r1, (r0 ' + x0).last = r1, x3 = x2 + r1 ', (h(r0)).nxt ≠ null, r ≠ r2, r ≠ (h(r0)).nxt, r0 ≠ r, r0 ≠ (h(r0)).nxt, r2 ≠ r0, r2 ≠ (h(r0)).nxt, x3 ≠ [], (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + x3 + (h(r0)).nxt ', h), path(r0 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + (x3 + (h(r0)).nxt ') + r0 ', h), ¬ dups(x1 + x3), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x3, ¬ r ∈ x3, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x3, ¬ r2 ∈ x1, ¬ r2 ∈ x3 ⊦ |
(r ' + x1).last = (r0 ' + x0).last, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ (r0 ' + x0).last, r ≠ r2, r ≠ (h(r0)).nxt, r ≠ (r0 ' + x0).last, r0 ≠ r, r0 ≠ (h(r0)).nxt, r0 ≠ (r0 ' + x0).last, r2 ≠ r0, r2 ≠ (h(r0)).nxt, r2 ≠ (r0 ' + x0).last, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + ((x2 + (r0 ' + x0).last ') + (h(r0)).nxt ') + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + (x2 + (r0 ' + x0).last ') + (h(r0)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x2, ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x0).last ∈ x1, ¬ (r0 ' + x0).last ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x2, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (r ' + x1).last = (r0 ' + x0).last, (h(r0)).nxt ≠ null, (h(r0)).nxt ≠ (r0 ' + x0).last, r ≠ r2, r ≠ (h(r0)).nxt, r ≠ (r0 ' + x0).last, r0 ≠ r, r0 ≠ (h(r0)).nxt, r0 ≠ (r0 ' + x0).last, r2 ≠ r0, r2 ≠ (h(r0)).nxt, r2 ≠ (r0 ' + x0).last, (h(r0)).nxt ∈ h, path(r ' + x1 + r2 ' + ((x2 + (r0 ' + x0).last ') + (h(r0)).nxt ') + r0 ', h), path(r ' + x1, h), path(r0 ' + x0, h), path(r ' + x1 + r2 ' + (x2 + (r0 ' + x0).last ') + (h(r0)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ (h(r0)).nxt ∈ x1, ¬ (h(r0)).nxt ∈ x2, ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x0).last ∈ x1, ¬ (r0 ' + x0).last ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x2, ¬ r2 ∈ x1, ¬ r2 ∈ x2 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
Used simplifier rules: ⊦ x.last = a ∧ x ≠ [] → a ∈ x; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x1, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, ((r0 ' + x3).last ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h((r0 ' + x3).last)).nxt ' + r0 ' + x3.butlast, (h((r0 ' + x3).last)).nxt ≠ null, r ≠ r2, (r0 ' + x3).last ≠ r, r2 ≠ (r0 ' + x3).last, x3 ≠ [], (h((r0 ' + x3).last)).nxt ∈ h, path(r ' + x + (h((r0 ' + x3).last)).nxt ', h), path((r0 ' + x3).last ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + (r0 ' + x3).last ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ (r0 ' + x3).last ∈ x0, ¬ (r0 ' + x3).last ∈ x, ¬ (r0 ' + x3).last ∈ x2, ¬ (r0 ' + x3).last ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(r ' + x1).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(x3.last)).nxt ' + r0 ' + x3.butlast, (x3.last ' + x0).last = (r ' + x).last, (h(x3.last)).nxt ≠ null, r ≠ r2, r2 ≠ x3.last, x3 ≠ [], x3.last ≠ r, (h(x3.last)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + x3.last ', h), path(r ' + x1, h), path(x3.last ' + x0, h), path(r ' + x + (h(x3.last)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1, ¬ x3.last ∈ x0, ¬ x3.last ∈ x, ¬ x3.last ∈ x2, ¬ x3.last ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x ≠ [] → (a ' + x).last = x.last; (s)
| (r ' + x1).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(x3.last)).nxt ' + r0 ' + x3.butlast, (x3.last ' + x0).last = (r ' + x).last, (h(x3.last)).nxt ≠ null, r ≠ r2, r2 ≠ x3.last, x3 ≠ [], x3.last ≠ r, (h(x3.last)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + x3.last ', h), path(r ' + x1, h), path(x3.last ' + x0, h), path(r ' + x + (h(x3.last)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1, ¬ x3.last ∈ x0, ¬ x3.last ∈ x, ¬ x3.last ∈ x2, ¬ x3.last ∈ x1 ⊦ |
(r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, x3 = x4 + r1 ', (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, x3 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ', h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x3, r1, x4
| (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, x3 = x4 + r1 ', (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, x3 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ', h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + a ' ≠ []; (s)
| (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used terms: h, (h(r1)).nxt, x, r
| ⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null |
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1 + r2 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used simplifier rules: path-prefix: ⊦ path(r ' + x + y, h) → (path(r ' + x, h) ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used formulas: path(r ' + x1 + r2 ', h)
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x1, h), path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1 + r2 ', h), ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null
(h((r ' + x1).last)).nxt = r2, (h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, r2 ≠ null, (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x, h), r2 ∈ h, ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦
Used terms: h, r2, x1, r
| ⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null |
| (h((r ' + x1).last)).nxt = r2, (h((r ' + x).last)).nxt = (h(r1)).nxt, (r ' + x1).last = (r ' + x).last, (r1 ' + x0).last = (r ' + x).last, x1 + r2 ' + x2 = x + (h(r1)).nxt ' + r0 ' + x4, (h(r1)).nxt ≠ null, r ≠ r2, r1 ≠ r, r2 ≠ r1, r2 ≠ null, (h(r1)).nxt ∈ h, path(r ' + x1 + r2 ' + x2 + r1 ', h), path(r ' + x1, h), path(r1 ' + x0, h), path(r ' + x, h), r2 ∈ h, ¬ dups(x1 + x2), ¬ dups(x1), ¬ dups(x0), ¬ r ∈ x2, ¬ r ∈ x1, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x2, ¬ r1 ∈ x1, ¬ r2 ∈ x2, ¬ r2 ∈ x1 ⊦ |
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ dups(x + a ' + y) ↔ a ∈ x ∨ a ∈ y ∨ dups(x + y); (ws) ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ ¬ a ∈ x ∧ ¬ a ∈ y → (x + a ' + y = z + a ' + y0 ↔ y = y0 ∧ x = z); (ws)
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦ |
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦
Used simplifier rules: path-prefix: ⊦ path(r ' + x + y, h) → (path(r ' + x, h) ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used formulas: path(r ' + x + (h(r1)).nxt ', h)
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r ' + x + (h(r1)).nxt ', h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦ |
⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, (h(r1)).nxt ≠ null, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦
Used terms: h, (h(r1)).nxt, x, r
| ⊦ path(r ' + x + r0 ', h) ↔ path(r ' + x, h) ∧ (h((r ' + x).last)).nxt = r0 ∧ r0 ∈ h ∧ r0 ≠ null |
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, (h(r1)).nxt ≠ null, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦ |
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, (h(r1)).nxt ≠ null, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, (h(r1)).nxt ≠ null, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦ |
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, (h(r1)).nxt ≠ null, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), path((h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦
Used simplifier rules: path-postfix: ⊦ path(x + r ' + y, h) → (path(r ' + y, h) ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used formulas: path((h(r1)).nxt ' + (r0 ' + x4) + r1 ', h)
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ r0, (h(r1)).nxt ≠ null, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x + (h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), path((h(r1)).nxt ' + (r0 ' + x4) + r1 ', h), ¬ dups(x0), ¬ dups(x), ¬ dups(x + x4), ¬ (h(r1)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ r ∈ x, ¬ r ∈ x4, ¬ r0 ∈ x, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x, ¬ r1 ∈ x0 ⊦ |
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, x = [], (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦
(h(x.last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = x.last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, x ≠ [], (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦
Used terms: x, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h((r ' + x).last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = (r ' + x).last, x = [], (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦ |
(h((r1 ' + x0).last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, (r1 ' + x0).last ≠ null, r1 ≠ (r1 ' + x0).last, r1 ≠ (h((h(r1)).nxt)).nxt, (r1 ' + x0).last ≠ (h(r1)).nxt, (r1 ' + x0).last ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r1 ' + x0, h), (r1 ' + x0).last ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ (r1 ' + x0).last ∈ x4 ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ ¬ a ∈ []; (s) ⊦ ¬ dups([]); (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ [] + x = x; (s) ⊦ x + [] = x; (s) ⊦ a '.last = a; (s)
| (h((r1 ' + x0).last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, (r1 ' + x0).last ≠ null, r1 ≠ (r1 ' + x0).last, r1 ≠ (h((h(r1)).nxt)).nxt, (r1 ' + x0).last ≠ (h(r1)).nxt, (r1 ' + x0).last ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r1 ' + x0, h), (r1 ' + x0).last ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ (r1 ' + x0).last ∈ x4 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r1 ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, x0 ≠ [], x0.last ≠ null, x0.last ≠ (h(r1)).nxt, x0.last ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path(r1 ' + x0, h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), x0.last ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ x0.last ∈ x4 ⊦
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x0, r1 '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r1 ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, x0 ≠ [], x0.last ≠ null, x0.last ≠ (h(r1)).nxt, x0.last ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path(r1 ' + x0, h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), x0.last ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ x0.last ∈ x4 ⊦ |
(h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r1 ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, x0 ≠ [], x0.last ≠ null, x0.last ≠ (h(r1)).nxt, x0.last ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r1 ' + x0, h), x0.last ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ x0.last ∈ x4 ⊦
| (h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r1 ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, x0 ≠ [], x0.last ≠ null, x0.last ≠ (h(r1)).nxt, x0.last ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r1 ' + x0, h), x0.last ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ x0.last ∈ x4 ⊦ |
(h(r)).nxt = (h(r1)).nxt, x0 = x1 + r ', (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, x0 ≠ [], (h(r1)).nxt ∈ h, path(r1 ' + x0, h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x0, r, x1
| (h(r)).nxt = (h(r1)).nxt, x0 = x1 + r ', (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, x0 ≠ [], (h(r1)).nxt ∈ h, path(r1 ' + x0, h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0 ⊦ |
(h(r)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r1 ' + x1 + r ', h), r ∈ h, ¬ dups(x4), ¬ dups(x1), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (h(r)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r1 ' + x1 + r ', h), r ∈ h, ¬ dups(x4), ¬ dups(x1), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦ |
(h(r)).nxt = (h(r1)).nxt, x1 = r0 + x, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path(r1 ' + x1 + r ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, ¬ dups(x4), ¬ dups(x1), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; Reflist freely generated by [], +; ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h(r)).nxt = (h(r1)).nxt, x1 = r0 + x, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path(r1 ' + x1 + r ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, ¬ dups(x4), ¬ dups(x1), ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦ |
(h(r)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ null, r1 ≠ null, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path((h(r1)).nxt ' + x + r ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, r1 ∈ h, ¬ dups(x), ¬ dups(x4), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ a + x = a ' + x; (s) ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (h(r)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ null, r1 ≠ null, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path((h(r1)).nxt ' + x + r ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, r1 ∈ h, ¬ dups(x), ¬ dups(x4), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦ |
(h(r)).nxt = (h(r1)).nxt, x = r0 + x0, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ null, r1 ≠ null, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path((h(r1)).nxt ' + x + r ', h), r ∈ h, r1 ∈ h, ¬ dups(x), ¬ dups(x4), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; Reflist freely generated by [], +; ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h(r)).nxt = (h(r1)).nxt, x = r0 + x0, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ null, r1 ≠ null, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path((h(r1)).nxt ' + x + r ', h), r ∈ h, r1 ∈ h, ¬ dups(x), ¬ dups(x4), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦ |
(h(r)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ null, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x0 + r ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, r1 ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x0, ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x0, ¬ r ∈ x0, ¬ r ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x4 ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ a + x = a ' + x; (s) ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (h(r)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ null, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ null, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x0 + r ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), r ∈ h, r1 ∈ h, ¬ dups(x4), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x0, ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x0, ¬ r ∈ x0, ¬ r ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x4 ⊦ |
path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0)
Used simplifier rules: ⊦ ¬ c ∈ y ∧ c ≠ b → y + b ' ≠ y0 + c ' + z; (s) ⊦ x + a ' = y + b ' ↔ x = y ∧ a = b; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: (h((h(r1)).nxt)).nxt, x4 + r1 ', h, x0 + r '
| path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0) |
| (h(x.last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = x.last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, x ≠ [], (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦ |
(h(x.last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = x.last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, x ≠ [], (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦
| (h(x.last)).nxt = (h(r1)).nxt, (r1 ' + x0).last = x.last, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, x ≠ [], (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x, h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦ |
(h(r0)).nxt = (h(r1)).nxt, (r1 ' + x0).last = r0, x = x1 + r0 ', (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, x ≠ [], (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x, r0, x1
| (h(r0)).nxt = (h(r1)).nxt, (r1 ' + x0).last = r0, x = x1 + r0 ', (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, x ≠ [], (h(r1)).nxt ∈ h, path(r ' + x, h), path(r1 ' + x0, h), path(r ' + x + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x + x4), ¬ dups(x), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x4, ¬ r ∈ x, ¬ r1 ∈ x0, ¬ r1 ∈ x, ¬ r1 ∈ x4 ⊦ |
(h((r1 ' + x0).last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ (r1 ' + x0).last, (h(r1)).nxt ≠ (r1 ' + x0).last, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ (r1 ' + x0).last, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (r1 ' + x0).last, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + (r1 ' + x0).last ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x1 + (r1 ' + x0).last ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r1 ∈ x4, ¬ (r1 ' + x0).last ∈ x1, ¬ (r1 ' + x0).last ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ ¬ b ∈ x → (dups(x + b ') ↔ dups(x)); (s) ⊦ dups(x + a ' + y) ↔ a ∈ x ∨ a ∈ y ∨ dups(x + y); (ws) ⊦ x + a ' ≠ []; (s)
| (h((r1 ' + x0).last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ (r1 ' + x0).last, (h(r1)).nxt ≠ (r1 ' + x0).last, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ (r1 ' + x0).last, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ (r1 ' + x0).last, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + (r1 ' + x0).last ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x1 + (r1 ' + x0).last ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r1 ∈ x4, ¬ (r1 ' + x0).last ∈ x1, ¬ (r1 ' + x0).last ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ x0.last, (h(r1)).nxt ≠ x0.last, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ x0.last, x0 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + x0.last ', h), path(r1 ' + x0, h), path(r ' + (x1 + x0.last ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1, ¬ x0.last ∈ x1, ¬ x0.last ∈ x4 ⊦
Used simplifier rules: ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x0, r1 '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ x0.last, (h(r1)).nxt ≠ x0.last, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ x0.last, x0 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + x0.last ', h), path(r1 ' + x0, h), path(r ' + (x1 + x0.last ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1, ¬ x0.last ∈ x1, ¬ x0.last ∈ x4 ⊦ |
(h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ x0.last, (h(r1)).nxt ≠ x0.last, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ x0.last, x0 ≠ [], (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + x0.last ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x1 + x0.last ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1, ¬ x0.last ∈ x1, ¬ x0.last ∈ x4 ⊦
| (h(x0.last)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ x0.last, (h(r1)).nxt ≠ x0.last, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ x0.last, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ x0.last, x0 ≠ [], (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + x0.last ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x0, h), path(r ' + x1 + x0.last ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1, ¬ x0.last ∈ x1, ¬ x0.last ∈ x4 ⊦ |
(h(r0)).nxt = (h(r1)).nxt, x0 = x2 + r0 ', (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, x0 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + r0 ', h), path(r1 ' + x0, h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x0, r0, x2
| (h(r0)).nxt = (h(r1)).nxt, x0 = x2 + r0 ', (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, x0 ≠ [], (h(r1)).nxt ∈ h, path(r ' + x1 + r0 ', h), path(r1 ' + x0, h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1 ⊦ |
(h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x2 + r0 ', h), path(r ' + x1 + r0 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x2), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| (h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path(r1 ' + x2 + r0 ', h), path(r ' + x1 + r0 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x2), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x2 ⊦ |
(h(r0)).nxt = (h(r1)).nxt, x2 = r2 + x, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x1 + r0 ', h), path(r1 ' + x2 + r0 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x2), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x2 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; Reflist freely generated by [], +; ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h(r0)).nxt = (h(r1)).nxt, x2 = r2 + x, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, (h(r1)).nxt ∈ h, path(r ' + x1 + r0 ', h), path(r1 ' + x2 + r0 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x2), ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x2, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x1, ¬ r1 ∈ x4, ¬ r1 ∈ x2 ⊦ |
(h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r0, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ r0, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ null, r1 ≠ r0, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h(r1)).nxt ' + x + r0 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + x1 + r0 ', h), r1 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x1 + x4), ¬ (h(r1)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r0 ∈ x4, ¬ r0 ∈ x1, ¬ r0 ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ a + x = a ' + x; (s) ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ r0, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ r0, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ null, r1 ≠ r0, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path((h(r1)).nxt ' + x + r0 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + x1 + r0 ', h), r1 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x1 + x4), ¬ (h(r1)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r0 ∈ x4, ¬ r0 ∈ x1, ¬ r0 ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦ |
(h(r0)).nxt = (h(r1)).nxt, x = r2 + x0, (h(r1)).nxt ≠ r0, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ r0, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ null, r1 ≠ r0, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path(r ' + x1 + r0 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h(r1)).nxt ' + x + r0 ', h), r1 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x1 + x4), ¬ (h(r1)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r0 ∈ x4, ¬ r0 ∈ x1, ¬ r0 ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦
Used simplifier rules: path-two: ⊦ path(r ' + r0 ', h) ↔ r ∈ h ∧ r0 ∈ h ∧ r ≠ null ∧ r0 ≠ null ∧ (h(r)).nxt = r0; Reflist freely generated by [], +; ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist]
| (h(r0)).nxt = (h(r1)).nxt, x = r2 + x0, (h(r1)).nxt ≠ r0, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r1, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ null, r ≠ r0, r ≠ (h(r1)).nxt, r ≠ (h((h(r1)).nxt)).nxt, r1 ≠ null, r1 ≠ r0, r1 ≠ r, r1 ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ∈ h, path(r ' + x1 + r0 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), path((h(r1)).nxt ' + x + r0 ', h), r1 ∈ h, ¬ dups(x), ¬ dups(x1), ¬ dups(x1 + x4), ¬ (h(r1)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x, ¬ r ∈ x1, ¬ r ∈ x4, ¬ r0 ∈ x4, ¬ r0 ∈ x1, ¬ r0 ∈ x, ¬ r1 ∈ x, ¬ r1 ∈ x4, ¬ r1 ∈ x1 ⊦ |
(h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, r1 ≠ null, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x0 + r0 ', h), path(r ' + x1 + r0 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), r1 ∈ h, ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x0, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ (h((h(r1)).nxt)).nxt ∈ x0, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1, ¬ r1 ∈ x4 ⊦
Used simplifier rules: path-cons: ⊦ path(r ' + r0 ' + x, h) ↔ r ∈ h ∧ r ≠ null ∧ (h(r)).nxt = r0 ∧ path(r0 ' + x, h); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) ⊦ a + x = a ' + x; (s) ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s)
| (h(r0)).nxt = (h(r1)).nxt, (h(r1)).nxt ≠ null, (h(r1)).nxt ≠ (h((h(r1)).nxt)).nxt, (h(r1)).nxt ≠ r1, (h((h(r1)).nxt)).nxt ≠ r0, (h(r1)).nxt ≠ r0, r ≠ (h((h(r1)).nxt)).nxt, r ≠ (h(r1)).nxt, r ≠ r0, r1 ≠ (h((h(r1)).nxt)).nxt, r1 ≠ r, r1 ≠ r0, r1 ≠ null, (h(r1)).nxt ∈ h, path((h((h(r1)).nxt)).nxt ' + x0 + r0 ', h), path(r ' + x1 + r0 ', h), path((h((h(r1)).nxt)).nxt ' + x4 + r1 ', h), path(r ' + (x1 + r0 ') + (h(r1)).nxt ' + ((h((h(r1)).nxt)).nxt ' + x4) + r1 ', h), r1 ∈ h, ¬ dups(x1 + x4), ¬ dups(x1), ¬ dups(x0), ¬ (h(r1)).nxt ∈ x0, ¬ (h((h(r1)).nxt)).nxt ∈ x4, ¬ (h((h(r1)).nxt)).nxt ∈ x1, ¬ (h(r1)).nxt ∈ x4, ¬ (h(r1)).nxt ∈ x1, ¬ (h((h(r1)).nxt)).nxt ∈ x0, ¬ r ∈ x4, ¬ r ∈ x1, ¬ r0 ∈ x0, ¬ r0 ∈ x1, ¬ r0 ∈ x4, ¬ r1 ∈ x0, ¬ r1 ∈ x1, ¬ r1 ∈ x4 ⊦ |
path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0)
Used simplifier rules: ⊦ ¬ c ∈ y ∧ c ≠ b → y + b ' ≠ y0 + c ' + z; (s) ⊦ x + a ' = y + b ' ↔ x = y ∧ a = b; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: (h((h(r1)).nxt)).nxt, x4 + r1 ', h, x0 + r0 '
| path(r ' + x, h), path(r ' + y, h) ⊦ x = y ∨ (∃ r0, y0. x = y + r0 ' + y0) ∨ (∃ r0, x0. y = x + r0 ' + x0) |
| (r ' + x1).last = (r ' + x).last, ((r ' + x2).last ' + x0).last = (r ' + x).last, x + (h((r ' + x2).last)).nxt ' = x2 + r1 ' + x4, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x + (h((r ' + x2).last)).nxt ', h), path((r ' + x2).last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦ |
((r ' + x2).last ' + x0).last = (r ' + x).last, (r ' + x1).last = (r ' + x).last, x + (h((r ' + x2).last)).nxt ' = x2 + r1 ' + x4, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path((r ' + x2).last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦
| ((r ' + x2).last ' + x0).last = (r ' + x).last, (r ' + x1).last = (r ' + x).last, x + (h((r ' + x2).last)).nxt ' = x2 + r1 ' + x4, (h((r ' + x2).last)).nxt ≠ null, (r ' + x2).last ≠ r, (h((r ' + x2).last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path((r ' + x2).last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ (r ' + x2).last ∈ x, ¬ (r ' + x2).last ∈ x0, ¬ r ∈ x2 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r ' + x1).last = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
Used simplifier rules: ⊦ [] + x = x; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a '.last = a; (s) Used terms: x2, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
(r ' + x1).last = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
| (r ' + x1).last = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
⊦ y ≠ [] → (x + y).last = y.last
(r ' + x1).last = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1 = [], (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1.last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x1 ≠ [], x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
Used terms: x1, r '
| ⊦ y ≠ [] → (x + y).last = y.last |
| (r ' + x1).last = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1 = [], (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = ((x2.last ' + x0).last ' + x).last, (h(x2.last)).nxt ≠ null, (x2.last ' + x0).last ≠ null, x2.last ≠ (x2.last ' + x0).last, x2 ≠ [], (h(x2.last)).nxt ∈ h, path((x2.last ' + x0).last ' + x2, h), path((x2.last ' + x0).last ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), (x2.last ' + x0).last ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ x2.last ∈ x0, ¬ x2.last ∈ x, ¬ (x2.last ' + x0).last ∈ x2 ⊦
Used simplifier rules: path-one: ⊦ path(r ', h) ↔ r ∈ h ∧ r ≠ null; ⊦ ¬ a ∈ []; (s) ⊦ ¬ dups([]); (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ x + [] = x; (s) ⊦ a '.last = a; (s)
| x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = ((x2.last ' + x0).last ' + x).last, (h(x2.last)).nxt ≠ null, (x2.last ' + x0).last ≠ null, x2.last ≠ (x2.last ' + x0).last, x2 ≠ [], (h(x2.last)).nxt ∈ h, path((x2.last ' + x0).last ' + x2, h), path((x2.last ' + x0).last ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), (x2.last ' + x0).last ∈ h, ¬ dups(x2), ¬ dups(x0), ¬ x2.last ∈ x0, ¬ x2.last ∈ x, ¬ (x2.last ' + x0).last ∈ x2 ⊦ |
Used simplifier rules: ⊦ x + a ' ≠ []; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ ¬ c ∈ y ∧ c ≠ b → y + b ' ≠ y0 + c ' + z; (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list[reflist] ⊦ ¬ a ∈ x → (x + a ' = y + a ' + z ↔ y = x ∧ z = []); (ws) ⊦ a ' + x ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x2, r, x1
| x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1.last = (r ' + x).last, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, x1 ≠ [], x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1.last = (r ' + x).last, (x2.last ' + x0).last = x1.last, (h(x2.last)).nxt ≠ null, x1 ≠ [], x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
| x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1.last = (r ' + x).last, (x2.last ' + x0).last = x1.last, (h(x2.last)).nxt ≠ null, x1 ≠ [], x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2, h), path(r ' + x1, h), path(x2.last ' + x0, h), path(r ' + x2 + r1 ' + x4, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
r0 = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1 = x3 + r0 ', (x2.last ' + x0).last = r0, (h(x2.last)).nxt ≠ null, x1 ≠ [], x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦
Used simplifier rules: x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x1, r0, x3
| r0 = (r ' + x).last, x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, x1 = x3 + r0 ', (x2.last ' + x0).last = r0, (h(x2.last)).nxt ≠ null, x1 ≠ [], x2 ≠ [], x2.last ≠ r, (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x1, h), path(r ' + x2, h), ¬ dups(x0), ¬ dups(x1), ¬ dups(x2), ¬ r ∈ x1, ¬ r ∈ x2, ¬ x2.last ∈ x, ¬ x2.last ∈ x0 ⊦ |
x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, r ≠ (r ' + x).last, x2.last ≠ r, x2 ≠ [], (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x3 + (r ' + x).last ', h), path(r ' + x2, h), ¬ dups(x2), ¬ dups(x3), ¬ dups(x0), ¬ r ∈ x3, ¬ (r ' + x).last ∈ x3, ¬ r ∈ x2, ¬ x2.last ∈ x0, ¬ x2.last ∈ x, (h(x2.last)).nxt ∈ x2 ∨ (h(x2.last)).nxt = r1 ∨ (h(x2.last)).nxt ∈ x4 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list[reflist] ⊦ a ∈ b ' ↔ a = b; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ x + a ' ≠ []; (s)
| x + (h(x2.last)).nxt ' = x2 + r1 ' + x4, (x2.last ' + x0).last = (r ' + x).last, (h(x2.last)).nxt ≠ null, r ≠ (r ' + x).last, x2.last ≠ r, x2 ≠ [], (h(x2.last)).nxt ∈ h, path(r ' + x2 + r1 ' + x4, h), path(x2.last ' + x0, h), path(r ' + x3 + (r ' + x).last ', h), path(r ' + x2, h), ¬ dups(x2), ¬ dups(x3), ¬ dups(x0), ¬ r ∈ x3, ¬ (r ' + x).last ∈ x3, ¬ r ∈ x2, ¬ x2.last ∈ x0, ¬ x2.last ∈ x, (h(x2.last)).nxt ∈ x2 ∨ (h(x2.last)).nxt = r1 ∨ (h(x2.last)).nxt ∈ x4 ⊦ |
Used simplifier rules: ⊦ x + a ' ≠ []; (s) ⊦ dups(x + a ') ↔ a ∈ x ∨ dups(x); (ws) ⊦ a ∈ b ' ↔ a = b; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ ¬ c ∈ y ∧ c ≠ b → y + b ' ≠ y0 + c ' + z; (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list[reflist] ⊦ ¬ a ∈ x → (x + a ' = y + a ' + z ↔ y = x ∧ z = []); (ws) ⊦ a ' + x ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] x ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a '; (elim) Used terms: x2, r0, x1
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ¬ reachable(r, (r ' + x).last, h) ⊦ reachable(r, (r ' + x).last, h) ∧ ¬ reachable(r0, (r ' + x).last, h) |
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ¬ reachable(r, (r ' + x).last, h) ⊦
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ¬ reachable(r, (r ' + x).last, h) ⊦ |
⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0)
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ∀ x0. ¬(path(r ' + x0, h) ∧ (r ' + x0).last = (r ' + x).last) ⊦
Used terms: h, (r ' + x).last, r
| ⊦ reachable(r, r0, h) ↔ (∃ x. path(r ' + x, h) ∧ (r ' + x).last = r0) |
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ∀ x0. ¬(path(r ' + x0, h) ∧ (r ' + x0).last = (r ' + x).last) ⊦ |
(h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ∀ x0. ¬ path(r ' + x0, h) ∨ (r ' + x0).last ≠ (r ' + x).last ⊦
| (h(r0)).nxt ≠ null, r0 ≠ r, (h(r0)).nxt ∈ h, path(r ' + x + (h(r0)).nxt ', h), reachable(r, r0, h), ¬ r0 ∈ x, ∀ x0. ¬ path(r ' + x0, h) ∨ (r ' + x0).last ≠ (r ' + x).last ⊦ |
Used simplifier rules: path-butlast: ⊦ path(r ' + x + r0 ', h) → (path(r ' + x, h) ↔ true); a: ⊦ (x + y) + z = x + y + z; from specification list[reflist] Used terms: 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.