| [:Inpf, S, Outf | SPAWN#(n; Inpf, S, Outf)], GInv(S), Prton(n)(S) ⊦ (Rton(n)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Poton(n)(S) ∧ GInv(S);Gton(n)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S'))) |
[:Inpf, S, Outf | SPAWN#(0; Inpf, S, Outf)], GInv(S), Prton(0)(S) ⊦ (Rton(0)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Poton(0)(S) ∧ GInv(S);Gton(0)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S')))
[:Inpf, S, Outf | SPAWN#(n0 +1; Inpf, S, Outf)], \A ∀ Inpf, S, Outf. [:Inpf, S, Outf | SPAWN#(n0; Inpf, S, Outf)] ∧ GInv(S) ∧ Prton(n0)(S) → (Rton(n0)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Poton(n0)(S) ∧ GInv(S);Gton(n0)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S'))), GInv(S), Prton(n0 +1)(S) ⊦ (Rton(n0 +1)(S', S'') ∧ (GInv(S') → GInv(S''))) -+-> (last ⊃ Poton(n0 +1)(S) ∧ GInv(S);Gton(n0 +1)(S, S') ∧ ¬ blocked ∧ (GInv(S) → GInv(S')))
Used simplifier rules: nat freely generated by 0, +1;;