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.

Lemma effstepN_add : forall n m U c1 m1 c3 m3, effstepN (n+m) U c1 m1 c3 m3 <-> exists c2, exists m2, effstepN n U c1 m1 c2 m2 /\ effstepN m (fun b z => U b z || freshloc m1 m2 b) c2 m2 c3 m3.