Remark add_reduce :
forall x y a u w z : Z,
(y - a)%Z = (z + w - u)%Z -> (x + y - a - 1)%Z = (x + z + w - u - 1)%Z.

(* Specifications: *)
Lemma invariant4 :
forall c : Config,
legal c ->
st c owner =
(sigma_receive_table (rt c) +
sigma_table Site LS Z (Z_id Site)
(fun s1 : Site => reduce Message dec_count (bm c s1 owner)) +
sigma_table Site LS Z (Z_id Site)
(fun s2 : Site => reduce Message copy_count (bm c owner s2)) -
sigma_table Site LS Z (Z_id Site)
(fun s1 : Site => reduce Message new_inc_count (bm c s1 owner)) - 1)%Z.
Lemma invariant4 :
forall c : Config,
legal c ->
st c owner =
(sigma_receive_table (rt c) +
sigma_table Site LS Z (Z_id Site)
(fun s1 : Site => reduce Message dec_count (bm c s1 owner)) +
sigma_table Site LS Z (Z_id Site)
(fun s2 : Site => reduce Message copy_count (bm c owner s2)) -
sigma_table Site LS Z (Z_id Site)
(fun s1 : Site => reduce Message new_inc_count (bm c s1 owner)) - 1)%Z.
Lemma invariant4 :
forall c : Config,
legal c ->
st c owner =
(sigma_receive_table (rt c) +
sigma_table Site LS Z (Z_id Site)
(fun s1 : Site => reduce Message dec_count (bm c s1 owner)) +
sigma_table Site LS Z (Z_id Site)
(fun s2 : Site => reduce Message copy_count (bm c owner s2)) -
sigma_table Site LS Z (Z_id Site)
(fun s1 : Site => reduce Message new_inc_count (bm c s1 owner)) - 1)%Z.