(* Lemma match_env_same_blocks: forall j e te, match_env j e te -> blocks_of_env te = Clight.blocks_of_env e. *)

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.