| n0 ≠ 0 → (∀ H, r, r0. reachable-n(H, n0, r, r0) ↔ (∃ x. path(x, H) ∧ hd x = r ∧ x.last = r0 ∧ # x = n0 + 1)) ⊦ (∃ r1. reachable-1(H, r, r1) ∧ reachable-n(H, n0, r1, r0)) ↔ (∃ x. path(x, H) ∧ hd x = r ∧ x.last = r0 ∧ # x = 2 + n0) |
n0 = 0, n0 ≠ 0 → (∀ H, r, r0. reachable-n(H, n0, r, r0) ↔ (∃ x. path(x, H) ∧ hd x = r ∧ x.last = r0 ∧ # x = n0 + 1)) ⊦ (∃ r1. reachable-1(H, r, r1) ∧ reachable-n(H, n0, r1, r0)) ↔ (∃ x. path(x, H) ∧ hd x = r ∧ x.last = r0 ∧ # x = 2 + n0)
n0 = n +1, n0 ≠ 0 → (∀ H, r, r0. reachable-n(H, n0, r, r0) ↔ (∃ x. path(x, H) ∧ hd x = r ∧ x.last = r0 ∧ # x = n0 + 1)) ⊦ (∃ r1. reachable-1(H, r, r1) ∧ reachable-n(H, n0, r1, r0)) ↔ (∃ x. path(x, H) ∧ hd x = r ∧ x.last = r0 ∧ # x = 2 + n0)
Used simplifier rules: nat freely generated by 0, +1;;