Definition xi (s0 : Site) :=
  (Int (rt c0 s0) + ctrl_copy owner s0 (bm c0) + ctrl_dec owner s0 (bm c0))%Z.Definition yi (s0 : Site) :=
  sigma Site LS (fun s' : Site => ctrl_inc s' s0 (bm c0)).Definition sigma_xi := sigma Site LS (fun s' : Site => xi s').Definition sigma_yi := sigma Site LS (fun s' : Site => yi s').(* decompte des messages sur une file d'attente alternee *)

Remark S_card_mess :
 forall (q0 : queue Message) (m : Message),
 card_mess m (input Message m q0) = (card_mess m q0 + 1)%Z.Remark card_mess_diff :
 forall (q0 : queue Message) (m m' : Message),
 m <> m' -> card_mess m (input Message m' q0) = card_mess m q0.Remark S_sigma_card_inc :
 forall (s0 : Site) (q0 : queue Message),
 sigma Site LS
   (fun s' : Site => card_mess (inc_dec s') (input Message (inc_dec s0) q0)) =
 (sigma Site LS (fun s' : Site => card_mess (inc_dec s') q0) + 1)%Z.Remark diff_sigma_card_inc :
 forall q0 : queue Message,
 sigma Site LS
   (fun s' : Site => card_mess (inc_dec s') (input Message dec q0)) =
 sigma Site LS (fun s' : Site => card_mess (inc_dec s') q0).

(* Specifications: *)
Lemma alt_dec_inc : forall q0 : queue Message, alternate q0 -> (card_mess dec q0 + 1 >= sigma Site LS (fun s' : Site => card_mess (inc_dec s') q0))%Z.
Lemma D_dec_inc : forall q0 : queue Message, alternate q0 -> D_queue q0 -> (card_mess dec q0 >= sigma Site LS (fun s' : Site => card_mess (inc_dec s') q0))%Z.