Definition tpc := TwoPhaseCommitProtocol others Hnin l.(* Take the transitions *)
Notation sts := (snd_trans tpc).Notation rts := (rcv_trans tpc).Notation loc z d := (getLocal z d).Definition PhaseOne (d : dstatelet) (round : nat) (next_data : data) (l : Log) :=
  (exists sent, cn_PhaseOneSend d round next_data l sent) \/
  (exists recvd, cn_PhaseOneReceive d round next_data l recvd).(***********************************************************)
(* Elimination lemmas for the invariant to deal with cases *)
(***********************************************************)

Notation coh d := (coh tpc d).Notation PI := pf_irr.

Lemma inv_prep_send d e dt ps (C : coh d): Inv d -> getStC C = (e, CSentPrep dt ps) -> exists lg sent, cn_PhaseOneSend d e dt lg sent.