| dest ∈ S0, reachS(source, S0, n0), reachS(source, S, n0 + 1), ∀ n. ¬ reach(source, dest, n), ∀ b. b ∈ S1 ↔ reach<(source, b, n0 + 1) ∨ (∃ a. b ∈ succ(a) ∧ reachS(source, ∅ ++ a, n0) ∧ ¬ a ∈ S0), ∀ b. reachS(source, ∅ ++ b, n0 + 1) → b ∈ S ∨ (∃ a. a ∈ S0 ∧ b ∈ succ(a) ∧ ¬ b ∈ S1) ⊦ S0 = ∅, # S0 = 0 |
⊦ reachS(a, S, n) ↔ (∀ b. b ∈ S → reach(a, b, n) ∧ ¬ reach<(a, b, n))
dest ∈ S0, ∀ b. b ∈ S0 → reach(source, b, n0) ∧ ¬ reach<(source, b, n0), reachS(source, S, n0 + 1), ∀ n. ¬ reach(source, dest, n), ∀ b. b ∈ S1 ↔ reach<(source, b, n0 + 1) ∨ (∃ a. b ∈ succ(a) ∧ reachS(source, ∅ ++ a, n0) ∧ ¬ a ∈ S0), ∀ b. reachS(source, ∅ ++ b, n0 + 1) → b ∈ S ∨ (∃ a. a ∈ S0 ∧ b ∈ succ(a) ∧ ¬ b ∈ S1) ⊦ S0 = ∅, # S0 = 0
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (n0, S0, source)]]