| CInv(n, Act, CS), CInitto(0, Act, CS) ⊦ [: Act, Inp, CS, Outp | CRelyto(0, Act', CS', Act'', CS'') , CGuarto(0, Act, CS, Act', CS') , CInv(n, Act, CS) , CSEQ(0; Act, Inp, CS, Outp) ] CInv(n, Act, CS) |
CInv(n, Act, CS), Idle(m, CS), m ≤ n ⊦ [: Act, Inp, CS, Outp | CRely(m, Act', CS', Act'', CS'') , CGuar(m, Act, CS, Act', CS') , CInv(n, Act, CS) , CSEQ(m; Act, Inp, CS, Outp) ] CInv(n, Act, CS)
[: Act, Inp, CS, Outp | CRely(0, Act', CS', Act'', CS'') , CGuar(0, Act, CS, Act', CS') , CInv(n, Act, CS) , CSEQ(0; Act, Inp, CS, Outp) ] CInv(n, Act, CS), CInv(n, Act, CS), CInitto(0, Act, CS) ⊦ [: Act, Inp, CS, Outp | CRelyto(0, Act', CS', Act'', CS'') , CGuarto(0, Act, CS, Act', CS') , CInv(n, Act, CS) , CSEQ(0; Act, Inp, CS, Outp) ] CInv(n, Act, CS)
Used simplifier rules: CInitto-Idle: ⊦ CInitto(n, act, cs) → (¬ Idle(n, cs) ↔ false);%lez: ⊦ 0 ≤ m; from specification nat Used terms: n, Act, CS, 0, Inp, Outp