Notation getl := (getLocal).Notation gets := getStatelet.Notation getp := (@getProtocol _ w).Definition network_rely s1 s2 := exists n, network_rely' n s1 s2.

(* Specifications: *)
Lemma rely_trans s1 s2 s3 : network_rely s1 s2 -> network_rely s2 s3 -> network_rely s1 s3.
Lemma rely_coh' n s1 s2 : network_rely' n s1 s2 -> Coh w s1 /\ Coh w s2.
Lemma rely_coh s1 s2 : network_rely s1 s2 -> Coh w s1 /\ Coh w s2.
Lemma rely_loc s1 s2 l: network_rely s1 s2 -> find this (dstate (gets s1 l)) = find this (dstate (gets s2 l)).
Lemma rely_consume_other l s s' m tm from: network_rely s s' -> find m (dsoup (gets s l)) = Some (Msg tm from this true) -> find m (dsoup (gets s' l)) = Some (Msg tm from this true).
Lemma rely_send_other l s s' m tm to b: network_rely s s' -> find m (dsoup (gets s' l)) = Some (Msg tm this to b) -> exists b', find m (dsoup (gets s l)) = Some (Msg tm this to b') /\ (b -> b').
Lemma rely_send_other' l s s' m tm to b: network_rely s s' -> find m (dsoup (gets s l)) = Some (Msg tm this to b) -> exists b', find m (dsoup (gets s' l)) = Some (Msg tm this to b') /\ (b' -> b).