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