| # x = 3 + n0, reachable-1(H, hd x, r4), reachable-1(H, r4, r5), reachable-n(H, n0, r5, x.last), path(x, H), reachable-1(H, r, hd x), reachable-1(H, hd x, r2), reachable-1(H, r2, r3), reachable-n(H, n0, r3, x.last) ⊦ ∃ x0. path(x0, H) ∧ hd x0 = r ∧ x0.last = x.last ∧ # x0 = 4 + n0 |
x = r0 + x1 ∧ x ≠ [], # x = 3 + n0, reachable-1(H, r0, r4), reachable-1(H, r4, r5), reachable-n(H, n0, r5, x.last), path(x, H), reachable-1(H, r, r0), reachable-1(H, r0, r2), reachable-1(H, r2, r3), reachable-n(H, n0, r3, x.last) ⊦ ∃ x0. path(x0, H) ∧ hd x0 = r ∧ x0.last = x.last ∧ # x0 = 4 + n0
Used simplifier rules: size-01: ⊦ # [] = 0; from specification list-data[reflist]%z-01: ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%x0 ≠ [] ⊦ r = hd x0 ∧ x1 = tl x0 ↔ x0 = r + x1; (elim) Used terms: x, r0, x1