Definition copy_trans (c : Config) (s1 s2 : Site) :=
  mkconfig (S (time c)) (dt c) (Inc_send_table (st c) s1) 
    (rt c) (Post_message copy (bm c) s1 s2).

(* Specifications: *)
Lemma copy_trans_le_dt_time : forall s0 : Site, dt c0 s0 <= time c0 -> dt (copy_trans c0 s1 s2) s0 <= time (copy_trans c0 s1 s2).
Lemma copy_trans_diff_site : forall s3 s4 : Site, (In_queue Message copy (bm c0 s3 s4) -> s3 <> s4) -> In_queue Message copy (bm (copy_trans c0 s1 s2) s3 s4) -> s3 <> s4.
Lemma copy_trans_st : forall s0 : Site, st (copy_trans c0 s1 s2) s0 = (if eq_site_dec s0 s1 then (st c0 s0 + 1)%Z else st c0 s0).
Lemma copy_trans_in_queue : forall s0 s3 s4 : Site, In_queue Message (inc_dec s0) (bm (copy_trans c0 s1 s2) s3 s4) -> In_queue Message (inc_dec s0) (bm c0 s3 s4).
Lemma copy_trans_st_rt : forall s0 : Site, s0 <> owner -> access s1 (rt c0) -> ((st c0 s0 > 0)%Z -> rt c0 s0 = true) -> (st (copy_trans c0 s1 s2) s0 > 0)%Z -> rt (copy_trans c0 s1 s2) s0 = true.
Lemma copy_trans_ctrl_copy : forall s' : Site, ctrl_copy s0 s' (bm (copy_trans c0 s1 s2)) = (if eq_site_dec s0 s1 then if eq_site_dec s' s2 then (ctrl_copy s0 s' (bm c0) + 1)%Z else ctrl_copy s0 s' (bm c0) else ctrl_copy s0 s' (bm c0)).
Lemma copy_trans_ctrl_dec : forall s' : Site, ctrl_dec s0 s' (bm (copy_trans c0 s1 s2)) = ctrl_dec s0 s' (bm c0).
Lemma copy_trans_ctrl_inc : forall s' : Site, ctrl_inc s0 s' (bm (copy_trans c0 s1 s2)) = ctrl_inc s0 s' (bm c0).