Definition smvalid_src (mu : SM_Injection) m1 :=
  forall b1, DOM mu b1 -> Memory.Mem.valid_block m1 b1.Definition smvalid_tgt (mu : SM_Injection) m2 :=
  forall b2, RNG mu b2 -> Memory.Mem.valid_block m2 b2.

(* Specifications: *)
Lemma sm_valid_smvalid_src mu m1 m2 : sm_valid mu m1 m2 -> smvalid_src mu m1.
Lemma sm_valid_smvalid_tgt mu m1 m2 : sm_valid mu m1 m2 -> smvalid_tgt mu m2.
Lemma extern_incr_refl: forall mu, extern_incr mu mu.
Lemma intern_incr_local: forall mu mu' (INC: intern_incr mu mu'), inject_incr (local_of mu) (local_of mu').
Lemma intern_incr_extern: forall mu mu' (INC: intern_incr mu mu'), extern_of mu = extern_of mu'.
Lemma extern_incr_extern: forall mu mu' (INC: extern_incr mu mu'), inject_incr (extern_of mu) (extern_of mu').
Lemma extern_incr_local: forall mu mu' (INC: extern_incr mu mu'), local_of mu = local_of mu'.
Lemma intern_incr_trans: forall mu mu' mu'' (Inc: intern_incr mu mu') (Inc': intern_incr mu' mu''), intern_incr mu mu''.
Lemma extern_incr_trans: forall mu mu' mu'' (Inc: extern_incr mu mu') (Inc': extern_incr mu' mu''), extern_incr mu mu''.
Lemma sm_inject_separated_same_sminj: forall mu m m', sm_inject_separated mu mu m m'.
Lemma intern_incr_as_inj: forall mu mu' (INC: intern_incr mu mu') (WD': SM_wd mu'), inject_incr (as_inj mu) (as_inj mu').
Lemma extern_incr_as_inj: forall mu mu' (INC: extern_incr mu mu') (WD': SM_wd mu'), inject_incr (as_inj mu) (as_inj mu').
Lemma inject_separated_intern_incr_fwd: forall mu mu' m1 m2 mu'' m2' (SEP: sm_inject_separated mu mu' m1 m2) (SEP': sm_inject_separated mu' mu'' m1 m2') (INC: intern_incr mu mu') (INC': intern_incr mu' mu'') (FWD: mem_forward m2 m2') (WD': SM_wd mu') (WD'': SM_wd mu''), sm_inject_separated mu mu'' m1 m2.
Lemma intern_separated_incr_fwd2: forall mu0 mu mu' m10 m20 m1 m2, intern_incr mu mu' -> sm_inject_separated mu mu' m1 m2 -> intern_incr mu0 mu -> mem_forward m10 m1 -> sm_inject_separated mu0 mu m10 m20 -> mem_forward m20 m2 -> SM_wd mu' -> sm_inject_separated mu0 mu' m10 m20.
Lemma sm_locally_allocated_trans: forall mu mu' mu'' m2 m3 m2' m3' m2'' m3'' (LocAlloc23 : sm_locally_allocated mu mu' m2 m3 m2'' m3') (LocAlloc23' : sm_locally_allocated mu' mu'' m2'' m3' m2' m3'') (Fwd2 : mem_forward m2 m2'') (Fwd2' : mem_forward m2'' m2') (Fwd3 : mem_forward m3 m3') (Fwd3' : mem_forward m3' m3''), sm_locally_allocated mu mu'' m2 m3 m2' m3''.