| CInv(n0, act0, cs0), CInv(n0, act, cs), Guar(n, cs, cs0), ∀ m0. m0 ≠ n → (act0(m0) ↔ act(m0)) ∧ (Idle(m0, cs) ↔ Idle(m0, cs0)), (¬ act(n) → Idle(n, cs)) → ¬ act0(n) → Idle(n, cs0) ⊦ m = n, Rely(m, cs, cs0) ∧ (Idle(m, cs) ↔ Idle(m, cs0)) ∧ (act0(m) ↔ act(m)) |
⊦ m ≠ n ∧ Guar(m, cs1, cs2) ∧ Inv(cs1) ∧ Inv(cs2) → (¬ Rely(n, cs1, cs2) ↔ false)
¬(n ≠ m ∧ Guar(n, cs, cs0) ∧ Inv(cs) ∧ Inv(cs0)), CInv(n0, act0, cs0), CInv(n0, act, cs), Guar(n, cs, cs0), ∀ m0. m0 ≠ n → (act0(m0) ↔ act(m0)) ∧ (Idle(m0, cs) ↔ Idle(m0, cs0)), (¬ act(n) → Idle(n, cs)) → ¬ act0(n) → Idle(n, cs0) ⊦ m = n, Rely(m, cs, cs0) ∧ (Idle(m, cs) ↔ Idle(m, cs0)) ∧ (act0(m) ↔ act(m))
n ≠ m ∧ Guar(n, cs, cs0) ∧ Inv(cs) ∧ Inv(cs0), CInv(n0, act0, cs0), CInv(n0, act, cs), Guar(n, cs, cs0), ∀ m0. m0 ≠ n → (act0(m0) ↔ act(m0)) ∧ (Idle(m0, cs) ↔ Idle(m0, cs0)), (¬ act(n) → Idle(n, cs)) → ¬ act0(n) → Idle(n, cs0) ⊦ m = n, true ∧ (Idle(m, cs) ↔ Idle(m, cs0)) ∧ (act0(m) ↔ act(m))
Used terms: n, cs0, cs, m