(***********************************************************)
(* Lemmas about specific sub-predicates *)

Lemma cn_PhaseOneReceive_consume d round next_data lg recvd i m from :
cn_PhaseOneReceive d round next_data lg recvd ->
find i (dsoup d) = Some {| content := m; from := from; to := cn; active := true |} ->
from \in pts ->
from \in map fst recvd ->
coh d ->
let: d' :=
{|
dstate := upd cn (mkLocal (round, CWaitPrepResponse next_data recvd, lg)) (dstate d);
dsoup := consume_msg (dsoup d) i |}
in
cn_PhaseOneReceive d' round next_data lg recvd.