| boolvar ∨ n0 = N + 1 ∧ N = N'' + 1 until Boolvar, □ (Act = Act' ∧ Inp = Inp'), Rely(m, cs0, CS) ∧ (Idle(m, cs0) ↔ Idle(m, CS)) ∧ (Inv(cs0) → 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'))), INDHYP-nat(n0), CInv(n, act0, cs), act0(m), m ≤ n, Guar(m, cs, cs0), CInv(n, act0, cs0), boolvar1 → cs = cs0 ∧ (boolvar ↔ boolvar0) ∧ n0 = n1, ∀ m1. m1 ≠ m → (Idle(m1, cs) ↔ Idle(m1, cs0)), Inv(cs) → Inv(cs0), ¬ Guar(m, cs, cs0) ∨ ¬((¬ act0(m) → Idle(m, cs)) → ¬ act0(m) → Idle(m, cs0)) ∨ (∃ m0. ¬(m0 ≠ m → (act0(m0) ↔ act0(m0)) ∧ (Idle(m0, cs) ↔ Idle(m0, cs0)))) ⊦ |
Rely(m, cs0, CS) ∧ (Idle(m, cs0) ↔ Idle(m, CS)) ∧ (Inv(cs0) → 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'), boolvar ∨ n0 = N + 1 ∧ N = N'' + 1 until Boolvar, INDHYP-nat(n0), m0 ≠ m, ¬(Idle(m0, cs) ↔ Idle(m0, cs0)), CInv(n, act0, cs0), Guar(m, cs, cs0), m ≤ n, act0(m), CInv(n, act0, cs), Inv(cs) → Inv(cs0), ∀ m1. m1 ≠ m → (Idle(m1, cs) ↔ Idle(m1, cs0)) ⊦