Definition alloc_left_sm (mu: SM_Injection) b1 b2 delta: SM_Injection :=
  Build_SM_Injection (fun b => eq_block b b1 || locBlocksSrc mu b)
                     (locBlocksTgt mu) (*b2 is already in locBlocksTgt!*)
                     (pubBlocksSrc mu) (pubBlocksTgt mu)
                     (fun b => if eq_block b b1 then Some(b2, delta)
                               else local_of mu b)
                     (extBlocksSrc mu) (extBlocksTgt mu)
                     (frgnBlocksSrc mu) (frgnBlocksTgt mu) (extern_of mu).

Lemma freelist_right_inject: forall j m1 l m2 m2' (F:Mem.free_list m2 l = Some m2') (Inj : Mem.inject j m1 m2) (Hyp: forall b2 lo2 hi2 (L:In ((b2,lo2),hi2) l) b1 delta ofs k p (J:j b1 = Some (b2, delta)) (P: Mem.perm m1 b1 ofs k p) (OFS: lo2 <= ofs + delta < hi2), False), Mem.inject j m1 m2'.