| S0 ≠ ∅ ∧ ¬ done0, ∀ n. ¬ reach(source, dest, n), done0 → dest ∈ S0, INV(S0, S, S1, n0, source) ⊦ [choose v with v ∈ S0 in if v = dest then done0 := true else { S0 := S0 -- v ; ADD(succ(v); S1, S) }] [if S0 = ∅ then S0 := S, S := ∅, n0 := n0 + 1] ((∀ n. ¬ reach(source, dest, n)) ∧ (done0 → dest ∈ S0) ∧ INV(S0, S, S1, n0, source)) |
S0 ≠ ∅ ∧ ¬ done0, ∀ n. ¬ reach(source, dest, n), done0 → dest ∈ S0, INV(S0, S, S1, n0, source), v ∈ S0 ⊦ [if v = dest then done0 := true else { S0 := S0 -- v ; ADD(succ(v); S1, S) }] [if S0 = ∅ then S0 := S, S := ∅, n0 := n0 + 1] ((∀ n. ¬ reach(source, dest, n)) ∧ (done0 → dest ∈ S0) ∧ INV(S0, S, S1, n0, source))
[[CONCRETESIMPRULES : ()]]