| [:Inpf, S, Outf | SEQ#(n, Inpf(n); S, Outf(n)) ∥ SPAWN#(n - 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), n = n0 + 1, n ≠ 0 ⊦ (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'))) |
[:Inpf, S, Outf | SEQ#(n0 + 1, Inpf(n0 + 1); S, Outf(n0 + 1)) ∥ SPAWN#(n0; 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'))), Prton(n0 + 1)(S), GInv(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: ax-08: ⊦ n + 0 = n; from specification nat-basic2%add-01: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; from specification nat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2