| reach(a, b, (n0 + 1) + 1) ↔ (∃ c. reach(a, c, n0 + 1) ∧ b ∈ succ(c)), reach(a, b, 2 + n0), ∀ a0, b0. (∃ c. reach(a0, c, n0) ∧ b0 ∈ succ(c)) → (∃ c. c ∈ succ(a0) ∧ reach(c, b0, n0)) ⊦ ∃ c. c ∈ succ(a) ∧ (∃ c0. reach(c, c0, n0) ∧ b ∈ succ(c0)) |
⊦ reach(a, b, n + 1) ↔ (∃ c. reach(a, c, n) ∧ b ∈ succ(c))
b ∈ succ(c), c ∈ succ(c0), reach(a, c0, n0), reach(a, b, 2 + n0), ∀ a0, b0. (∃ c. reach(a0, c, n0) ∧ b0 ∈ succ(c)) → (∃ c. c ∈ succ(a0) ∧ reach(c, b0, n0)) ⊦ succ(c) = ∅, succ(c0) = ∅, # succ(c) = 0, # succ(c0) = 0, ∃ c. c ∈ succ(a) ∧ (∃ c0. reach(c, c0, n0) ∧ b ∈ succ(c0))
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ s ≠ ∅ → # s ≠ 0], [CSIMPFORWARD : ⊦ a ∈ s → s ≠ ∅], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m])]]