Section SAFETY.
(* ou l'on verifie que si un site different du proprietaire est actif (drapeau rt) alors le compteur du proprietaire est strictement positif. On utilise pour cela la relation parent, en remontant a la racine depuis le site actif. Cette racine se caracterise par un yi nul (il n'y a pas de message inc_dec dans sa file avec le proprietaire) et un xi strictement positif car son drapeau est actif. En sommant tous les xi-yi on obtient donc une valeur strictement positive pour le compteur du proprietaire *)
Variable c0 : Config.
Hypothesis Hlegal : legal c0.
Variable s0 : Site.
Hypothesis s0_not_owner : s0 <> owner.
Hypothesis access_so : rt c0 s0 = true.
Definition root_parent :=
root Site (dt c0) (parent c0) (parent_dec c0)
(fun s1 s2 : Site => parent_cr c0 s1 s2 Hlegal).

(* Specifications: *)
Lemma root_no_parent : forall y : Site, ~ parent c0 y (root_parent s0).
Lemma rt_root : rt c0 (root_parent s0) = true.
Lemma pos_root_xi : (xi c0 (root_parent s0) > 0)%Z.
Lemma root_no_in_queue_inc :
forall y : Site,
~ In_queue Message (inc_dec y) (bm c0 (root_parent s0) owner).
Lemma null_root_ctrl_inc :
(fun s : Site => ctrl_inc s (root_parent s0) (bm c0)) =
(fun s : Site => 0%Z).
Lemma null_root_yi : yi c0 (root_parent s0) = 0%Z.
Lemma lt_root_xi_yi : (xi c0 (root_parent s0) > yi c0 (root_parent s0))%Z.
Lemma lt_sigma_xi_yi : (sigma_xi c0 > sigma_yi c0)%Z.
Lemma pos_st_owner : (st c0 owner > 0)%Z.
End SAFETY.