| m0 + 1 = n - n0, m1 + 1 = # S0, INVR(S0, S, S1, n0, n, source, dest), reachS(source, S, n0 + 1), dest ∈ S0, reach(source, dest, n0), ∀ b. b ∈ S1 ↔ reach<(source, b, n0 + 1) ∨ (∃ a. b ∈ succ(a) ∧ reach(source, a, n0) ∧ ¬ reach<(source, a, n0) ∧ ¬ a ∈ S0), ∀ b. reach(source, b, n0 + 1) ∧ ¬ reach<(source, b, n0 + 1) → b ∈ S ∨ (∃ a. a ∈ S0 ∧ b ∈ succ(a) ∧ ¬ b ∈ S1) ⊦ n0 = n, S0 = ∅, reach<(source, dest, n0) |
⊦ INVR(C, N, V, n, n0, source, dest) ↔ ¬ ¬ ( reach(source, dest, n0) ∧ ¬ reach<(source, dest, n0) ∧ n ≤ n0 ∧ ((∃ a. a ∈ C ∧ reachS(a, {dest} , n0 - n)) ∨ n < n0 ∧ (∃ b. b ∈ N ∧ reachS(b, {dest} , n0 - n - 1))))
m0 + 1 = n - n0, m1 + 1 = # S0, reach(source, dest, n) ∧ ¬ reach<(source, dest, n) ∧ n0 ≤ n ∧ ((∃ a. a ∈ S0 ∧ reachS(a, {dest} , n - n0)) ∨ n0 < n ∧ (∃ b. b ∈ S ∧ reachS(b, {dest} , n - n0 - 1))), reachS(source, S, n0 + 1), dest ∈ S0, reach(source, dest, n0), ∀ b. b ∈ S1 ↔ reach<(source, b, n0 + 1) ∨ (∃ a. b ∈ succ(a) ∧ reach(source, a, n0) ∧ ¬ reach<(source, a, n0) ∧ ¬ a ∈ S0), ∀ b. reach(source, b, n0 + 1) ∧ ¬ reach<(source, b, n0 + 1) → b ∈ S ∨ (∃ a. a ∈ S0 ∧ b ∈ succ(a) ∧ ¬ b ∈ S1) ⊦ n0 = n, S0 = ∅, reach<(source, dest, n0)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (dest, source, n, n0, S1, S, S0)]]