Definition marshal j m args tm targs :=
Build_SM_Injection
(fun _ => false) (fun _ => false)
(fun _ => false) (fun _ => false)
(fun _ => None)
(DomSrc j)
(DomTgt j)
(REACH m (getBlocks args))
(REACH tm (getBlocks targs))
(as_inj j).

Lemma restrict_as_inj_eq j j' m1 m2 :
SM_wd j ->
SM_wd j' ->
inject_incr (as_inj j) (as_inj j') ->
sm_inject_separated j j' m1 m2 ->
sm_valid j m1 m2 ->
restrict (as_inj j') (DomSrc j) = as_inj j.