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