From mathcomp.ssreflect
From mathcomp
From fcsl
From DiSeL
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
(* Rely-transitions of the network in the presence of the given world *)
Section Rely.
Variable w : world.
Variable this: nid.
Notation getl := (getLocal).
Notation gets := getStatelet.
Notation getp := (@getProtocol _ w).
(* The following is the "rely" relation *)
Fixpoint network_rely' n s1 s2 :=
if n is n'.+1
then exists z s3,
[/\ this != z, network_step w z s1 s3 & network_rely' n' s3 s2]
else s1 = s2 /\ s1 \In Coh w.
Definition network_rely s1 s2 := exists n, network_rely' n s1 s2.

Lemma rely_coh s1 s2 :
network_rely s1 s2 -> Coh w s1 /\ Coh w s2.