Section Prog.
Variable T : prog V A this.
Definition inject_set t :=
t = Unfinished \/ exists t', t' \In T /\ t = Inject w t'.
Definition inject_prog := @Prog _ _ _ inject_set (or_introl (erefl _)).
End Prog.
Definition inject_s : spec A :=
(fun i => exists i1 i2, i = i1 \+ i2 /\ i1 \In Coh V /\ s.1 i1,
fun i y m => forall i1 i2, i = i1 \+ i2 -> i1 \In Coh V ->
exists m1 m2, [/\ m = m1 \+ m2, s.2 i1 y m1 &
network_rely W2 this i2 m2]).

Lemma inject_has_spec : inject_prog (code_of e) \In has_spec this W inject_s.