| CInv(n, Act, CS), Act(m), m ≤ n, Idle(m, CS) ⊦ [: Act, Inp, CS, Outp | CRely(m, Act', CS', Act'', CS'') , CGuar(m, Act, CS, Act', CS') , (CInv(n, Act, CS) ∧ Act(m)) , [PL ( Idle(m, CS) ∧ Inv(CS) → ((Rely(m, CS', CS'') ∧ (Idle(m, CS') ↔ Idle(m, CS''))) ∧ (Inv(CS') → Inv(CS''))) -+-> (last ⊃ Idle(m, CS) ∧ Inv(CS);(Guar(m, CS, CS') ∧ (∀ m0. m0 ≠ m → (Idle(m0, CS) ↔ Idle(m0, CS')))) ∧ (Inv(CS) → Inv(CS')))) ∧ □ (Act = Act' ∧ Inp = Inp') ] ] (CInv(n, Act, CS) ∧ Idle(m, CS) ∧ Act(m)) |
CInv(n, Act, CS), Act(m), m ≤ n, Idle(m, CS) ⊦ [: Act, Inp, CS, Outp | CRely(m, Act', CS', Act'', CS'') , CGuar(m, Act, CS, Act', CS') , (CInv(n, Act, CS) ∧ Act(m)) , [PL ( Inv(CS) → (Rely(m, CS', CS'') ∧ (Idle(m, CS') ↔ Idle(m, CS'')) ∧ (Inv(CS') → Inv(CS''))) -+-> (last ⊃ Idle(m, CS) ∧ Inv(CS);Guar(m, CS, CS') ∧ (∀ m0. m0 ≠ m → (Idle(m0, CS) ↔ Idle(m0, CS'))) ∧ (Inv(CS) → Inv(CS')))) ∧ □ (Act = Act' ∧ Inp = Inp') ] ] (CInv(n, Act, CS) ∧ Idle(m, CS) ∧ Act(m))