End CONTROL_POS.
Section XY.
(* definition des variables xi et yi relative a un site et sommations *)
Variable c0 : Config.
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').
End XY.
Section ALT_CTRL.
(* 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.