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