| □ (CRelyto(n + 1, Act', CS', Act'', CS'') ∧ CInv(n0, Act', CS') ∧ CInv(n0, Act'', CS'')), [:Act, CS | [PL ◇ (¬ CRely(n + 1, Act', CS', Act'', CS'') ∨ ¬(CInv(n0, Act', CS') → CInv(n0, Act'', CS''))) ∧ (CRely(n + 1, Act', CS', Act'', CS'') ∧ (CInv(n0, Act', CS') → CInv(n0, Act'', CS''))) -+-> (last ⊃ CInv(n0, Act, CS);CGuar(n + 1, Act, CS, Act', CS') ∧ (CInv(n0, Act, CS) → CInv(n0, Act', CS'))) ] ∥ [PL (CRelyto(n, Act', CS', Act'', CS'') ∧ (CInv(n0, Act', CS') → CInv(n0, Act'', CS''))) -+-> (last ⊃ CInv(n0, Act, CS);CGuarto(n, Act, CS, Act', CS') ∧ (CInv(n0, Act, CS) → CInv(n0, Act', CS'))) ] ], n0 ≠ 0, Init(cs), RG-restr (n0, λ n0, act, cs, act0, cs0. CRely(n + 1, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs, act0, cs0. CGuar(n + 1, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs. CInit(n + 1, act, cs) ∧ CInv(n0, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0), CInv, λ n0, act, cs, act0, cs0. CRelyto(n, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs, act0, cs0. CGuarto(n, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs. CInitto(n, act, cs) ∧ CInv(n0, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0)), CInv(n0, Act, CS), n < n0, ∀ n. Idle(n, cs), ¬ Inv(cs) ∨ (∃ m0. ¬(n0 < m0 → Idle(m0, cs) ∧ ¬ false)) ⊦ |
[:Act, CS | [PL ◇ (¬ CRely(n + 1, Act', CS', Act'', CS'') ∨ ¬(CInv(n0, Act', CS') → CInv(n0, Act'', CS''))) ∧ (CRely(n + 1, Act', CS', Act'', CS'') ∧ (CInv(n0, Act', CS') → CInv(n0, Act'', CS''))) -+-> (last ⊃ CInv(n0, Act, CS);CGuar(n + 1, Act, CS, Act', CS') ∧ (CInv(n0, Act, CS) → CInv(n0, Act', CS'))) ] ∥ [PL (CRelyto(n, Act', CS', Act'', CS'') ∧ (CInv(n0, Act', CS') → CInv(n0, Act'', CS''))) -+-> (last ⊃ CInv(n0, Act, CS);CGuarto(n, Act, CS, Act', CS') ∧ (CInv(n0, Act, CS) → CInv(n0, Act', CS'))) ] ], □ (CRelyto(n + 1, Act', CS', Act'', CS'') ∧ CInv(n0, Act', CS') ∧ CInv(n0, Act'', CS'')), m ≠ 0, n0 ≠ 0, n < m, n0 < m, n < n0, CInv(n0, Act, CS), RG-restr (n0, λ n0, act, cs, act0, cs0. CRely(n + 1, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs, act0, cs0. CGuar(n + 1, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs. CInit(n + 1, act, cs) ∧ CInv(n0, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0), CInv, λ n0, act, cs, act0, cs0. CRelyto(n, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs, act0, cs0. CGuarto(n, act, cs, act0, cs0) ∧ (CInv(n0, act, cs) → CInv(n0, act0, cs0)), λ n0, act, cs. CInitto(n, act, cs) ∧ CInv(n0, act, cs), λ n, act, cs, act0, cs0. CInv(n, act0, cs0)), Init(cs), n + 1 < m, ¬ Idle(m, cs), ∀ n. Idle(n, cs) ⊦
Used simplifier rules: succ: ⊦ m +1 = m + 1; from specification nat-basic2%trans-1: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic1%lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic1%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%init-inv: ⊦ Init(cs) → (¬ Inv(cs) ↔ false); from specification RGI-Conds