Section effsemlemmas.
Context {G C:Type} (Sem: @EffectSem G C) (g:G).
Fixpoint effstepN (n:nat) : (block -> Z -> bool) -> C -> mem -> C -> mem -> Prop :=
match n with
| O => fun U c m c' m' => (c,m) = (c',m')
| S k => fun U c1 m1 c3 m3 => exists c2, exists m2,
effstep Sem g U c1 m1 c2 m2 /\
effstepN k (fun b ofs => U b ofs  || freshloc m1 m2 b)  c2 m2 c3 m3
end.
Definition effstep_plus U c m c' m' :=
exists n, effstepN (S n) U c m c' m'.
Definition effstep_star U c m c' m' :=
exists n, effstepN n U c m c' m'.
End effsemlemmas.
Definition EmptyEffect: Values.block -> Z -> bool := fun b z => false.
Definition FreeEffect m lo hi (sp b:Values.block) (ofs:Z): bool :=
if valid_block_dec m b
then eq_block b sp && zle lo ofs && zlt ofs hi
else false.

Lemma FreeEffect_free: forall m sp lo hi m'
(FREE: Mem.free m sp lo hi = Some m'),
Mem.unchanged_on  (fun b ofs => FreeEffect m lo hi sp b ofs = false) m m'.