(* generic receive-transition *)
Definition rc_recv_trans := ReceiveTrans rc_step_coh.Definition cn_receive_prep_yes_trans := rc_recv_trans prep_yes cn_msg_wf.Definition cn_receive_prep_no_trans := rc_recv_trans prep_no cn_msg_wf.Definition cn_receive_commit_ack_trans := rc_recv_trans commit_ack cn_msg_wf.Definition cn_receive_abort_ack_trans := rc_recv_trans abort_ack cn_msg_wf.Definition pn_safe (this n : nid)
           (d : dstatelet) (msg : data) :=
  HPn this n /\ 
  exists (Hp : HPn this n) (C : coh d), prec (getStP C (pn_this_in Hp)) msg.

Lemma pn_safe_coh this to d m : pn_safe this to d m -> coh d.