(* no longer useful 'cos copy is out of band and could be last *)

(* Specifications: *)
Lemma alt_post_inc_old :
forall s1 : Site,
alternate (b0 s0 owner) ->
b0 s0 owner = empty Message \/
last Message (b0 s0 owner) = value Message dec ->
alternate (Post_message Message (inc_dec s1) b0 s0 owner s0 owner).
Lemma in_q_before_append :
forall q1 q2 : queue Message,
In_queue_before Message dec is_inc_dec (append Message q1 q2) ->
In_queue_before Message dec is_inc_dec
(append Message q1 (input Message copy q2)).
Lemma in_q_before_append2 :
forall q1 q2 : queue Message,
In_queue_before Message dec is_inc_dec
(append Message q1 (input Message copy q2)) ->
In_queue_before Message dec is_inc_dec (append Message q1 q2).
Lemma alt_shuffle_copy1 :
forall q1 q2 : queue Message,
alternate (input Message copy (append Message q1 q2)) ->
alternate (append Message q1 (input Message copy q2)).
Lemma alt_shuffle_copy2 :
forall q1 q2 : queue Message,
alternate (append Message q1 (input Message copy q2)) ->
alternate (append Message q1 q2).
Lemma alt_shuffle_copy :
forall q1 q2 q3 q4 : queue Message,
append Message q1 q2 = append Message q3 q4 ->
alternate (append Message q1 (input Message copy q2)) ->
alternate (append Message q3 (input Message copy q4)).
Lemma D_shuffle_copy1 :
forall q1 q2 : queue Message,
D_queue (input Message copy (append Message q1 q2)) ->
D_queue (append Message q1 (input Message copy q2)).
Lemma D_shuffle_copy :
forall q1 q2 q3 q4 : queue Message,
append Message q1 q2 = append Message q3 q4 ->
D_queue (append Message q1 (input Message copy q2)) ->
D_queue (append Message q3 (input Message copy q4)).