| reachable-n(H, n0 + m, r, r0) ⊦ n0 = 0, ∃ r1. reachable-n(H, m, r, r1) ∧ reachable-n(H, n0, r1, r0) |
∀ H, n0, r, r0. reachable-n(H, n0 + m0, r, r0) → n0 = 0 ∨ (∃ r1. reachable-n(H, m0, r, r1) ∧ reachable-n(H, n0, r1, r0)), reachable-n(H, n0 + m0 +1, r, r0) ⊦ n0 = 0, ∃ r1. reachable-n(H, m0 +1, r, r1) ∧ reachable-n(H, n0, r1, r0)
Used simplifier rules: reachable-n-base: ⊦ reachable-n(H, 0, r, r0) ↔ r = r0;%nat freely generated by 0, +1;;%add-base: ⊦ n + 0 = n; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2