Definition client_send_trans :=
SendTrans client_send_safe_coh client_send_safe_in client_step_def client_step_coh.
End ClientGenericSendTransitions.
Section ClientSendTransitions.
Definition client_send_update_prec (to : nid) (m : seq nat) :=
exists e v, m = [:: e; v].
Program Definition client_send_update_trans : send_trans ResourceCoh :=
@client_send_trans update_tag client_send_update_prec _.
Next Obligation.
by left.
Qed.
Definition client_send_read_prec (to : nid) (m : seq nat) :=
exists e, m = [:: e].
Program Definition client_send_read_trans : send_trans ResourceCoh :=
@client_send_trans read_tag client_send_read_prec _.
Next Obligation.
by right.
Qed.
End ClientSendTransitions.
Section ClientGenericReceiveTransitions.
Notation coh := ResourceCoh.
Variable the_tag : nat.
Variable client_recv_wf : forall d, coh d -> nid -> nid -> TaggedMessage -> bool.
Definition rc_step : receive_step_t coh :=
fun this (from : nid) (m : seq nat) d (pf : coh d) (pt : this \in nodes) =>
getLocal this d.

(* Specifications: *)
Lemma rc_step_coh : r_step_coh_t client_recv_wf the_tag rc_step.
Definition rc_recv_trans := ReceiveTrans rc_step_coh.