| n ≠ 0, CInv(n, Act, CS), CInitto(m0 + 1, Act, CS), m0 < n ⊦ [: Act, Inp, CS, Outp | CRelyto(m0 + 1, Act', CS', Act'', CS'') , CGuarto(m0 + 1, Act, CS, Act', CS') , CInv(n, Act, CS) , [PL CInv(n, Act, CS) ∧ Idle(m0 + 1, CS) ∧ m0 + 1 ≤ n → (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'))) ] ] CInv(n, Act, CS) |
n ≠ 0, CInv(n, Act, CS), CInitto(m0 + 1, Act, CS), m0 < n ⊦ [: Act, Inp, CS, Outp | CRelyto(m0 + 1, Act', CS', Act'', CS'') , CGuarto(m0 + 1, Act, CS, Act', CS') , CInv(n, Act, CS) , [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'))) ] ] CInv(n, Act, CS)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%succ-01: ⊦ m + 1 ≤ n ↔ m < n; from specification nat