| 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)) , COP(m, Inp; CS, Outp) ] (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 ( 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))
Used simplifier rules: COP-sat-rely-guar: Idle(n, CS), Inv(CS) ⊦ [: CS, Outp | (Rely(n, CS', CS'') ∧ (Idle(n, CS') ↔ Idle(n, CS''))) , (Guar(n, CS, CS') ∧ (∀ m. m ≠ n → (Idle(m, CS) ↔ Idle(m, CS')))) , Inv(CS) , COP(n, Inp; CS, Outp) ] (Idle(n, CS) ∧ Inv(CS)); from specification RG-Conds