| S0 ≠ ∅, # S0 ≠ 0, v ≠ dest, INV(S0, S, S1, n0, source), v ∈ S0, ∀ n. ¬ reach(source, dest, n) ⊦ [ADD(succ(v); S1, S)] [S0 := S0 -- v ; if S0 = ∅ then S0 := S, S := ∅, n0 := n0 + 1] ((∀ n. ¬ reach(source, dest, n)) ∧ INV(S0, S, S1, n0, source)) |
INV(C, N, V, n, source), v ∈ C ⊦ ⟪ADD(succ(v); V, N)⟫ INV(C -- v, N, V, n, source)
⟪ADD(succ(v); S1, S)⟫ INV(S0 -- v, S, S1, n0, source), S0 ≠ ∅, # S0 ≠ 0, v ≠ dest, INV(S0, S, S1, n0, source), v ∈ S0, ∀ n. ¬ reach(source, dest, n) ⊦ [ADD(succ(v); S1, S)] [S0 := S0 -- v ; if S0 = ∅ then S0 := S, S := ∅, n0 := n0 + 1] ((∀ n. ¬ reach(source, dest, n)) ∧ INV(S0, S, S1, n0, source))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (S0, S, S1, n0, source, v)]]