Inductive direct_son : Site -> Prop :=
    direct_son_intro :
      forall s : Site,
      s <> owner ->
      rt c0 s = true ->
      (forall s1 : Site, ~ inc_dec_in_queue s1 (bm c0 s owner)) ->
      direct_son s.Inductive direct_son : Site -> Prop :=
    direct_son_intro :
      forall s : Site,
      s <> owner ->
      rt c0 s = true ->
      (forall s1 : Site, ~ inc_dec_in_queue s1 (bm c0 s owner)) ->
      direct_son s.Inductive indirect_son1 : Site -> Prop :=
    indirect_son1_intro :
      forall s : Site,
      s <> owner ->
      rt c0 s = true ->
      ~ (forall s1 : Site, ~ inc_dec_in_queue s1 (bm c0 s owner)) ->
      indirect_son1 s.Inductive indirect_son1 : Site -> Prop :=
    indirect_son1_intro :
      forall s : Site,
      s <> owner ->
      rt c0 s = true ->
      ~ (forall s1 : Site, ~ inc_dec_in_queue s1 (bm c0 s owner)) ->
      indirect_son1 s.(*  {s1:Site | (inc_dec_in_queue s1 (bm c0 s owner))}  *)

Inductive indirect_son2 : Site -> Prop :=
    indirect_son2_intro :
      forall s s1 : Site,
      s <> owner /\ rt c0 s = true /\ direct_son s1 /\ ancestor s1 s ->
      indirect_son2 s.(*  {s1:Site | (inc_dec_in_queue s1 (bm c0 s owner))}  *)

Inductive indirect_son2 : Site -> Prop :=
    indirect_son2_intro :
      forall s s1 : Site,
      s <> owner /\ rt c0 s = true /\ direct_son s1 /\ ancestor s1 s ->
      indirect_son2 s.

(* Specifications: *)
Lemma decide_direct_son : forall s1 : Site, s1 <> owner -> {direct_son s1} + {~ direct_son s1}.
Lemma direct_or_indirect_son1 : forall s : Site, s <> owner -> rt c0 s = true -> {direct_son s} + {indirect_son1 s}.
Lemma disjoint_case_for_site : forall s : Site, {s = owner} + {rt c0 s = false} + {direct_son s} + {indirect_son1 s}.
Lemma ancestor_transitive : forall s1 s2 s3 : Site, ancestor s1 s2 -> ancestor s2 s3 -> ancestor s1 s3.
Lemma aux : forall s0 s1 s2 : Site, parent s0 s2 -> direct_son s0 -> ancestor s1 s2 -> s1 = s0.
Lemma decide_ancestor : forall x s s1 : Site, direct_son x -> ancestor x s -> indirect_son1 s1 -> (s1 = s \/ ancestor s1 s) \/ s1 <> s /\ ~ ancestor s1 s.
Lemma long_inv : forall (c : Config) (s0 s1 s2 : Site), parent c s0 s1 -> ancestor c s1 s2 -> ancestor c s0 s2.
Lemma inc_dec_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> m <> inc_dec s1 -> inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), ~ inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_not_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> ~ inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 q -> ~ inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> inc_dec_in_queue s3 q -> inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_not_in_collect : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> ~ inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect2 : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner) -> inc_dec_in_queue s3 (b s0 owner).
Lemma not_inc_dec_in : forall q : queue Message, (forall s : Site, ~ inc_dec_in_queue s q) -> forall s : Site, ~ In_queue Message (inc_dec s) q.
Lemma joining_node : forall (c : Config) (s2 : Site), legal c -> rt c s2 = false -> forall s3 s4 : Site, parent c s3 s4 -> s2 <> s3.
Lemma ancestor_rt : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s1 = true.
Lemma ancestor_rt2 : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s2 = true.
Lemma parent_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> parent (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> ancestor (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma parent_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> parent (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> ancestor (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma inc_dec_in_append1 : forall (s0 : Site) (q1 q2 : queue Message), inc_dec_in_queue s0 (append Message q1 q2) -> inc_dec_in_queue s0 (append Message q1 (input Message copy q2)).
Lemma inc_dec_in_append2 : forall (s0 : Site) (q1 q2 : queue Message), inc_dec_in_queue s0 (append Message q1 (input Message copy q2)) -> inc_dec_in_queue s0 (append Message q1 q2).
Lemma inc_dec_in_append : forall (s0 : Site) (q1 q2 q3 q4 : queue Message), append Message q1 q2 = append Message q3 q4 -> inc_dec_in_queue s0 (append Message q3 (input Message copy q4)) -> inc_dec_in_queue s0 (append Message q1 (input Message copy q2)).
Lemma decide_direct_son : forall s1 : Site, s1 <> owner -> {direct_son s1} + {~ direct_son s1}.
Lemma direct_or_indirect_son1 : forall s : Site, s <> owner -> rt c0 s = true -> {direct_son s} + {indirect_son1 s}.
Lemma disjoint_case_for_site : forall s : Site, {s = owner} + {rt c0 s = false} + {direct_son s} + {indirect_son1 s}.
Lemma ancestor_transitive : forall s1 s2 s3 : Site, ancestor s1 s2 -> ancestor s2 s3 -> ancestor s1 s3.
Lemma aux : forall s0 s1 s2 : Site, parent s0 s2 -> direct_son s0 -> ancestor s1 s2 -> s1 = s0.
Lemma decide_ancestor : forall x s s1 : Site, direct_son x -> ancestor x s -> indirect_son1 s1 -> (s1 = s \/ ancestor s1 s) \/ s1 <> s /\ ~ ancestor s1 s.
Lemma inc_dec_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> m <> inc_dec s1 -> inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), ~ inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_not_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> ~ inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 q -> ~ inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> inc_dec_in_queue s3 q -> inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_not_in_collect : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> ~ inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect2 : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner) -> inc_dec_in_queue s3 (b s0 owner).
Lemma not_inc_dec_in : forall q : queue Message, (forall s : Site, ~ inc_dec_in_queue s q) -> forall s : Site, ~ In_queue Message (inc_dec s) q.
Lemma joining_node : forall (c : Config) (s2 : Site), legal c -> rt c s2 = false -> forall s3 s4 : Site, parent c s3 s4 -> s2 <> s3.
Lemma ancestor_rt : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s1 = true.
Lemma ancestor_rt2 : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s2 = true.
Lemma parent_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> parent (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> ancestor (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma parent_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> parent (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> ancestor (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma ancestor_not_reflexive : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> s1 <> s2.
Lemma decide_direct_son : forall s1 : Site, s1 <> owner -> {direct_son s1} + {~ direct_son s1}.
Lemma direct_or_indirect_son1 : forall s : Site, s <> owner -> rt c0 s = true -> {direct_son s} + {indirect_son1 s}.
Lemma disjoint_case_for_site : forall s : Site, {s = owner} + {rt c0 s = false} + {direct_son s} + {indirect_son1 s}.
Lemma ancestor_transitive : forall s1 s2 s3 : Site, ancestor s1 s2 -> ancestor s2 s3 -> ancestor s1 s3.
Lemma aux : forall s0 s1 s2 : Site, parent s0 s2 -> direct_son s0 -> ancestor s1 s2 -> s1 = s0.
Lemma decide_ancestor : forall x s s1 : Site, direct_son x -> ancestor x s -> indirect_son1 s1 -> (s1 = s \/ ancestor s1 s) \/ s1 <> s /\ ~ ancestor s1 s.
Lemma inc_dec_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> m <> inc_dec s1 -> inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), ~ inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_not_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> ~ inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 q -> ~ inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> inc_dec_in_queue s3 q -> inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_not_in_collect : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> ~ inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect2 : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner) -> inc_dec_in_queue s3 (b s0 owner).
Lemma not_inc_dec_in : forall q : queue Message, (forall s : Site, ~ inc_dec_in_queue s q) -> forall s : Site, ~ In_queue Message (inc_dec s) q.
Lemma joining_node : forall (c : Config) (s2 : Site), legal c -> rt c s2 = false -> forall s3 s4 : Site, parent c s3 s4 -> s2 <> s3.
Lemma ancestor_rt : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s1 = true.
Lemma ancestor_rt2 : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s2 = true.
Lemma parent_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> parent (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> ancestor (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma parent_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> parent (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> ancestor (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma ancestor_not_reflexive : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> s1 <> s2.
Lemma ancestor_has_positive_st : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> (st c s1 > 0)%Z.
Lemma decide_direct_son : forall s1 : Site, s1 <> owner -> {direct_son s1} + {~ direct_son s1}.
Lemma direct_or_indirect_son1 : forall s : Site, s <> owner -> rt c0 s = true -> {direct_son s} + {indirect_son1 s}.
Lemma disjoint_case_for_site : forall s : Site, {s = owner} + {rt c0 s = false} + {direct_son s} + {indirect_son1 s}.
Lemma ancestor_transitive : forall s1 s2 s3 : Site, ancestor s1 s2 -> ancestor s2 s3 -> ancestor s1 s3.
Lemma aux : forall s0 s1 s2 : Site, parent s0 s2 -> direct_son s0 -> ancestor s1 s2 -> s1 = s0.
Lemma decide_ancestor : forall x s s1 : Site, direct_son x -> ancestor x s -> indirect_son1 s1 -> (s1 = s \/ ancestor s1 s) \/ s1 <> s /\ ~ ancestor s1 s.
Lemma inc_dec_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> m <> inc_dec s1 -> inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_post : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), ~ inc_dec_in_queue s1 (b s0 owner) -> (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner).
Lemma inc_dec_not_in_post2 : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), (forall s4 : Site, m <> inc_dec s4) -> ~ inc_dec_in_queue s1 (Post_message Message m b s2 s3 s0 owner) -> ~ inc_dec_in_queue s1 (b s0 owner).
Lemma inc_dec_not_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 q -> ~ inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_in_first_out : forall (q : queue Message) (m : Message) (s3 : Site), first Message q = value Message m -> m <> inc_dec s3 -> inc_dec_in_queue s3 q -> inc_dec_in_queue s3 (first_out Message q).
Lemma inc_dec_not_in_collect : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> ~ inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> ~ inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect : forall (b : Bag_of_message) (s0 s1 s2 s3 : Site) (m : Message), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (b s0 owner) -> m <> inc_dec s3 -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner).
Lemma inc_dec_in_collect2 : forall (b : Bag_of_message) (m : Message) (s0 s1 s2 s3 : Site), first Message (b s1 s2) = value Message m -> inc_dec_in_queue s3 (Collect_message Message b s1 s2 s0 owner) -> inc_dec_in_queue s3 (b s0 owner).
Lemma not_inc_dec_in : forall q : queue Message, (forall s : Site, ~ inc_dec_in_queue s q) -> forall s : Site, ~ In_queue Message (inc_dec s) q.
Lemma joining_node : forall (c : Config) (s2 : Site), legal c -> rt c s2 = false -> forall s3 s4 : Site, parent c s3 s4 -> s2 <> s3.
Lemma ancestor_rt : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s1 = true.
Lemma ancestor_rt2 : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> rt c s2 = true.
Lemma parent_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> parent (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join : forall (c0 : Config) (s2 s3 s4 : Site), legal c0 -> legal (rec_copy2_trans c0 s2) -> ancestor (rec_copy2_trans c0 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 owner s2) = value Message copy -> s3 <> s2.
Lemma parent_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> parent (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma ancestor_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> ancestor (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
Lemma ancestor_not_reflexive : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> s1 <> s2.
Lemma ancestor_has_positive_st : forall c : Config, legal c -> forall s1 s2 : Site, ancestor c s1 s2 -> (st c s1 > 0)%Z.