(*From Cminorgenproof*)
Remark val_inject_function_pointer:
  forall v fd j tv,
  Genv.find_funct ge v = Some fd ->
  globalfunction_ptr_inject j ->
  val_inject j v tv ->
  tv = v.

Lemma FreelistEffect_PropagateLeft: forall m e m' (FL : Mem.free_list m (Clight.blocks_of_env e) = Some m') mu m2 (SMV : sm_valid mu m m2) (WD: SM_wd mu) te (MENV: match_env (restrict (as_inj mu) (vis mu)) e te) b2 ofs (EFF : FreelistEffect m2 (blocks_of_env te) b2 ofs = true) (LB: locBlocksTgt mu b2 = false), exists b1 delta, foreign_of mu b1 = Some (b2, delta) /\ FreelistEffect m (Clight.blocks_of_env e) b1 (ofs - delta) = true /\ Mem.perm m b1 (ofs - delta) Max Nonempty.