Section effsemlemmas.
Context {C:Type} (Sem: @EffectSem C).
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') /\ U = (fun b z => false)
| S k => fun U c1 m1 c3 m3 => exists c2, exists m2, exists U1, exists U2,
effstep Sem U1 c1 m1 c2 m2 /\
effstepN k U2 c2 m2 c3 m3 /\
U = (fun b z => U1 b z || (U2 b z && valid_block_dec m1 b))
end.

Lemma effstepN_trans: forall n1 n2 U1 st1 m1 st2 m2 U2 st3 m3,
effstepN n1 U1 st1 m1 st2 m2 ->
effstepN n2 U2 st2 m2 st3 m3 ->
effstepN (n1+n2)
(fun b z => U1 b z || (U2 b z && valid_block_dec m1 b)) st1 m1 st3 m3.