| m0 < n, Guar(m0, cs, cs0), m0 ≤ m, CInv(n, act0, cs0), Inv(cs), m < n, ∀ m0. n < m0 → Idle(m0, cs) ∧ ¬ act(m0), m + 1 ≠ m0 → (act0(m + 1) ↔ act(m + 1)) ∧ (Idle(m + 1, cs) ↔ Idle(m + 1, cs0)), (¬ act(m0) → Idle(m0, cs)) → ¬ act0(m0) → Idle(m0, cs0) ⊦ n = 0, m0 = m + 1, Inv(cs0), Rely(m + 1, cs, cs0) ∧ (Idle(m + 1, cs) ↔ Idle(m + 1, cs0)) ∧ (act0(m + 1) ↔ act(m + 1)) |
act0(m + 1) ↔ act(m + 1), Idle(m + 1, cs) ↔ Idle(m + 1, cs0), m0 < n, Guar(m0, cs, cs0), m0 ≤ m, CInv(n, act0, cs0), Inv(cs), m < n, (¬ act(m0) → Idle(m0, cs)) → ¬ act0(m0) → Idle(m0, cs0), ∀ m0. n < m0 → Idle(m0, cs) ∧ ¬ act(m0) ⊦ n = 0, m0 = m + 1, Inv(cs0), Rely(m + 1, cs, cs0)