Definition delete_trans (c : Config) (s : Site) :=
  mkconfig (S (time c)) (dt c) (st c) (Reset_rec_table (rt c) s)
    (Post_message dec (bm c) s owner).

(* Specifications: *)
Lemma del_trans_le_dt_time : forall s1 : Site, dt c0 s1 <= time c0 -> dt (delete_trans c0 s0) s1 <= time (delete_trans c0 s0).
Lemma del_trans_diff_site : forall s3 s4 : Site, (In_queue Message copy (bm c0 s3 s4) -> s3 <> s4) -> In_queue Message copy (bm (delete_trans c0 s0) s3 s4) -> s3 <> s4.
Lemma del_trans_rt : forall s1 : Site, Int (rt (delete_trans c0 s0) s1) = (if eq_site_dec s1 s0 then (Int (rt c0 s1) - 1)%Z else Int (rt c0 s1)).
Lemma del_trans_in_queue : forall s1 s3 s4 : Site, In_queue Message (inc_dec s0) (bm (delete_trans c0 s1) s3 s4) -> In_queue Message (inc_dec s0) (bm c0 s3 s4).
Lemma del_trans_st_rt : forall s1 : Site, st c0 s1 = 0%Z -> rt c0 s1 = true -> ((st c0 s0 > 0)%Z -> rt c0 s0 = true) -> (st (delete_trans c0 s1) s0 > 0)%Z -> rt (delete_trans c0 s1) s0 = true.
Lemma del_trans_ctrl_copy : forall s2 : Site, ctrl_copy s0 s2 (bm (delete_trans c0 s1)) = ctrl_copy s0 s2 (bm c0).
Lemma del_trans_ctrl_dec : forall s2 : Site, ctrl_dec s0 s2 (bm (delete_trans c0 s1)) = (if eq_site_dec owner s0 then if eq_site_dec s2 s1 then (ctrl_dec s0 s2 (bm c0) + 1)%Z else ctrl_dec s0 s2 (bm c0) else ctrl_dec s0 s2 (bm c0)).
Lemma del_trans_ctrl_inc : forall s2 : Site, ctrl_inc s0 s2 (bm (delete_trans c0 s1)) = ctrl_inc s0 s2 (bm c0).