(* the ancestor of a node cannot be the which receives a gp for the first time *)

(* Specifications: *)
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 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_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 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.