| reachable-n(H, n + 1, r, r0), reachable-n(H, n, r, r1) ∧ reachable-n(H, n + 1 - n, r1, r0) ⊦ ∃ r1. reachable-n(H, n, r, r1) ∧ reachable-1(H, r1, r0) |
H[r].nxt ∈ H, r ∈ H, H[r1].nxt ∈ H, r1 ∈ H, reachable-n(H, n, r, r1), reachable-n(H, n, H[r].nxt, H[r1].nxt) ⊦ r = null, H[r].nxt = null, r1 = null, H[r1].nxt = null, ∃ r2. reachable-n(H, n, r, r2) ∧ reachable-1(H, r2, H[r1].nxt)
Used simplifier rules: reachable-n-rec: ⊦ reachable-n(H, n + 1, r, r0) ↔ (∃ r1. reachable-1(H, r, r1) ∧ reachable-n(H, n, r1, r0));%reachable-n-1: ⊦ reachable-n(H, 1, r, r0) ↔ reachable-1(H, r, r0);%reachable-1-def: ⊦ reachable-1(H, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ H ∧ r0 ∈ H ∧ H[r].nxt = r0;%eq-01: ⊦ m + n - m = n; from specification nat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2