Section MemInterference.
Definition mem_effect_forward: mem -> Events.mem_effect -> mem -> Prop.
(* Definition mem_effect_forward m ev m':= execute ev in m, without checking for permissions. *)
Admitted.
Inductive mem_interference: mem -> list Events.mem_effect -> mem -> Prop:=
| Nil_mem_interference: forall m, mem_interference m nil m
| Build_mem_interference: forall m m' m'' ev lev,
mem_effect_forward m ev m' ->
mem_interference m' lev m'' ->
mem_interference m (ev::lev) m''.
(* OLD_mem_interference:= Mem.unchanged_on (loc_readable_cur m) m *)
Admitted.
End MemInterference.
Definition consecutive_until: block -> list Events.mem_effect -> block -> Prop.
Admitted.

Lemma strict_inj_evolution_cat:
forall j j' j'' lev1 lev1' lev2 lev2' nb nb' nb'',
strict_injection_evolution j j' lev1 lev2 ->
strict_injection_evolution j' j'' lev1' lev2' ->
consecutive_until nb lev2 nb' ->
consecutive_until nb' lev2' nb'' ->
strict_injection_evolution j j'' (lev1++lev1') (lev2++lev2').