| reachable-1(H, r1, r0), reachable-n(H, n, r, r1), ∃ r1. reachable-n(H, n, r, r1) ∧ reachable-n(H, n + 1 - n, r1, r0) ⊦ reachable-n(H, n + 1, r, r0) |
⊦ reachable-n(H, n, r, r0) ∧ reachable-n(H, n0, r0, r1) → (reachable-n(H, n + n0, r, r1) ↔ true)
Used simplifier rules: reachable-n-1: ⊦ reachable-n(H, 1, r, r0) ↔ reachable-1(H, r, r0);%reachable-1-def: ⊦ reachable-1(H, r, r0) ↔ r ≠ null ∧ r0 ≠ null ∧ r ∈ H ∧ r0 ∈ H ∧ H[r].nxt = r0;%reachable-n-rec: ⊦ reachable-n(H, n + 1, r, r0) ↔ (∃ r1. reachable-1(H, r, r1) ∧ reachable-n(H, n, r1, r0));%reach-n-unique: ⊦ reachable-n(H, n, r, r0) ∧ reachable-n(H, n, r, r1) → r0 = r1;% ⊦ m + n - m = n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: H, n, r, r1, 1, r0