Section ServerGenericSendTransitions.
Definition HServ this to := (this == server /\ to \in clients).
Variable the_tag : nat.
Variable prec : server_state -> nid -> seq nid -> Prop.
Hypothesis prec_safe :
forall this to s m,
HServ this to ->
prec s to m ->
coh_msg (Msg (TMsg the_tag m) this to true) (current_epoch s).
Notation coh := LockCoh.
Definition server_send_safe (this n : nid)
(d : dstatelet) (msg : seq nat) :=
HServ this n /\
exists (C : coh d), prec (getSt_server C) n msg.
Definition server_step (this to : nid) (d : dstatelet)
(msg : seq nat)
(pf : server_send_safe this to d msg) :=
let C := server_send_safe_coh pf in
let s := getSt_server C in
Some (st :-> server_send_step s to).

Lemma server_step_def this to d msg :
server_send_safe this to d msg <->
exists b pf, @server_step this to d msg pf = Some b.