| m0 + 1 = n - n0, m1 + 1 = # S0, INVR(S0, S, S1, n0, n, source, dest), dest ∈ S0 → reach(source, dest, n0) ∧ ¬ reach<(source, dest, n0), reachS(source, S, n0 + 1), dest ∈ S0, ∀ 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 = ∅ |
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)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m])]]