| (CRely(m0 + 1, Act', CS', Act'', CS'') ∧ CRelyto(m0, Act', CS', Act'', CS'') ∧ (CInv(n, Act', CS') → CInv(n, Act'', CS''))) -+-> (last ⊃ CInv(n, Act, CS) ; CGuar(m0 + 1, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS')) ∨ CGuarto(m0, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS')) ), [:Act, Inp, CS, Outp | [PL CInv(n, Act, CS) ∧ Idle(m0 + 1, CS) → (CRely(m0 + 1, Act', CS', Act'', CS'') ∧ (CInv(n, Act', CS') → CInv(n, Act'', CS''))) -+-> (last ⊃ CInv(n, Act, CS);CGuar(m0 + 1, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS'))) ] ∥ [PL CInitto(m0, Act, CS) ∧ CInv(n, Act, CS) → (CRelyto(m0, Act', CS', Act'', CS'') ∧ (CInv(n, Act', CS') → CInv(n, Act'', CS''))) -+-> (last ⊃ CInv(n, Act, CS);CGuarto(m0, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS'))) ] ], n ≠ 0, CInv(n, Act, CS), CInitto(m0 + 1, Act, CS), m0 < n, RG-restr (n, λ n, act, cs, act0, cs0. CRely(m0 + 1, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs, act0, cs0. CGuar(m0 + 1, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs. CInit(m0 + 1, act, cs) ∧ CInv(n, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0), CInv, λ n, act, cs, act0, cs0. CRelyto(m0, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs, act0, cs0. CGuarto(m0, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs. CInitto(m0, act, cs) ∧ CInv(n, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0)) ⊦ (CRelyto(m0 + 1, Act', CS', Act'', CS'') ∧ (CInv(n, Act', CS') → CInv(n, Act'', CS''))) -+-> (last ⊃ CInv(n, Act, CS);CGuarto(m0 + 1, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS'))) |
(last ⊃ CInv(n, Act, CS) ; CGuar(m0 + 1, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS')) ∨ CGuarto(m0, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS')) ), n ≠ 0, true, true, m0 < n, RG-restr (n, λ n, act, cs, act0, cs0. CRely(m0 + 1, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs, act0, cs0. CGuar(m0 + 1, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs. CInit(m0 + 1, act, cs) ∧ CInv(n, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0), CInv, λ n, act, cs, act0, cs0. CRelyto(m0, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs, act0, cs0. CGuarto(m0, act, cs, act0, cs0) ∧ (CInv(n, act, cs) → CInv(n, act0, cs0)), λ n, act, cs. CInitto(m0, act, cs) ∧ CInv(n, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0)) ⊦ (last ⊃ CInv(n, Act, CS);CGuarto(m0 + 1, Act, CS, Act', CS') ∧ (CInv(n, Act, CS) → CInv(n, Act', CS')))
Used simplifier rules: CRelytosucc-CRely: ⊦ CRelyto(m + 1, act, cs, act0, cs0) → (¬ CRely(m + 1, act, cs, act0, cs0) ↔ false);%CRelytosucc-CRelyto: ⊦ CRelyto(m + 1, act, cs, act0, cs0) → (¬ CRelyto(m, act, cs, act0, cs0) ↔ false);%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2