Arguments aftA [A B s p P].
Arguments aftI [A s p P Q].
End Always.
Section AlwaysInject.
Variables (V W : world) (K : hooks) (A : Type) (w : injects V W K) (this: nid).
Notation W2 := (inj_ext w).

Lemma alw_inject (p : proc this V A)
(P : state -> proc this V A -> Prop) i j :
i \+ j \In Coh W ->
always i p P ->
always (i \+ j) (Inject w p)
(fun m q => exists i' j',
[/\ m = i' \+ j', i' \In Coh V, network_rely W2 this j j' &
(exists q', q = Inject w q' /\ P i' q') \/
(exists v', q = Ret v' /\ P i' (Ret v'))]).