End Exports.
End Exports.
End Injection.
Export Injection.Exports.
Module InjectExtra.

(* Specifications: *)
Lemma cohUnKR U W s s':
s \+ s' \In Coh (U \+ W) -> s \In Coh U -> s' \In Coh W.
Lemma cohUnKL U W s s':
s \+ s' \In Coh (U \+ W) -> s' \In Coh W -> s \In Coh U .
Lemma getPUn U W l :
valid (U \+ W) -> l \in dom U ->
getProtocol U l = getProtocol (U \+ W) l.
Lemma getSUn s1 s2 l :
valid (s1 \+ s2) -> l \in dom s1 ->
getStatelet s1 l = getStatelet (s1 \+ s2) l.
Lemma inject_frame U W this s1 s2 s:
valid (U \+ W) ->
s1 \+ s \In Coh (U \+ W) ->
network_step U this s1 s2 ->
network_step (U \+ W) this (s1 \+ s) (s2 \+ s).
Lemma inject_step U W this s1 s2 s1' s2' :
valid (U \+ W) ->
s1 \In Coh U -> s2 \In Coh U ->
network_step (U \+ W) this (s1 \+ s1') (s2 \+ s2') ->
network_step U this s1 s2 /\ s1' = s2' \/
network_step W this s1' s2' /\ s1 = s2.
Lemma injectL (U W : world) : valid (U \+ W) -> injects U (U \+ W).
Lemma injectR (U W : world) : valid (W \+ U) -> injects U (W \+ U).
Lemma locProjR W1 W2 l s1 s2:
(s1 \+ s2) \In Coh (W1 \+ W2) -> l \in dom W2 ->
s2 \In Coh W2 -> getStatelet (s1 \+ s2) l = getStatelet s2 l.