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_waitprep d r (C : coh d) next_data recvd: Inv d -> getStC C = (r, CWaitPrepResponse next_data recvd) -> exists lg, cn_PhaseOneReceive d r next_data lg recvd.