(*CompCert imports*)

(* Specifications: *)
Lemma pos_succ_plus_assoc: forall n m,
(Pos.succ n + m = n + Pos.succ m)%positive.
Lemma mem_unchanged_on_sub: forall (P Q: block -> BinInt.Z -> Prop) m m',
Mem.unchanged_on Q m m' ->
(forall b ofs, P b ofs -> Q b ofs) ->
Mem.unchanged_on P m m'.
Lemma inject_separated_same_meminj: forall j m m',
Events.inject_separated j j m m'.
Lemma mem_inj_id_trans: forall m1 m2 (Inj12: Mem.mem_inj inject_id m1 m2) m3
(Inj23: Mem.mem_inj inject_id m2 m3),Mem.mem_inj inject_id m1 m3.
Lemma extends_trans: forall m1 m2
(Ext12: Mem.extends m1 m2) m3 (Ext23: Mem.extends m2 m3), Mem.extends m1 m3.
Lemma memval_inject_id_refl: forall v, memval_inject inject_id v v.
Lemma extends_refl: forall m, Mem.extends m m.
Lemma compose_meminj_idR: forall j, j = compose_meminj j inject_id.
Lemma compose_meminj_idL: forall j, j = compose_meminj inject_id j.
Lemma perm_decE:
forall m b ofs k p PF,
(Mem.perm_dec m b ofs k p = left PF <-> Mem.perm m b ofs k p).
Lemma flatinj_E: forall b b1 b2 delta (H:Mem.flat_inj b b1 = Some (b2, delta)),
b2=b1 /\ delta=0 /\ Plt b2 b.
Lemma flatinj_I: forall bb b, Plt b bb -> Mem.flat_inj bb b = Some (b, 0).
Lemma flatinj_mono: forall b b1 b2 b' delta
(F: Mem.flat_inj b1 b = Some (b', delta)),
Plt b1 b2 -> Mem.flat_inj b2 b = Some (b', delta).
Lemma pos_succ_plus_assoc: forall n m,
(Pos.succ n + m = n + Pos.succ m)%positive.
Lemma mem_unchanged_on_sub: forall (P Q: block -> BinInt.Z -> Prop) m m',
Mem.unchanged_on Q m m' ->
(forall b ofs, P b ofs -> Q b ofs) ->
Mem.unchanged_on P m m'.
Lemma inject_separated_same_meminj: forall j m m',
Events.inject_separated j j m m'.
Lemma mem_inj_id_trans: forall m1 m2 (Inj12: Mem.mem_inj inject_id m1 m2) m3
(Inj23: Mem.mem_inj inject_id m2 m3),Mem.mem_inj inject_id m1 m3.
Lemma extends_trans: forall m1 m2
(Ext12: Mem.extends m1 m2) m3 (Ext23: Mem.extends m2 m3), Mem.extends m1 m3.
Lemma memval_inject_id_refl: forall v, memval_inject inject_id v v.
Lemma extends_refl: forall m, Mem.extends m m.
Lemma compose_meminj_idR: forall j, j = compose_meminj j inject_id.
Lemma compose_meminj_idL: forall j, j = compose_meminj inject_id j.
Lemma perm_decE:
forall m b ofs k p PF,
(Mem.perm_dec m b ofs k p = left PF <-> Mem.perm m b ofs k p).
Lemma flatinj_E: forall b b1 b2 delta (H:Mem.flat_inj b b1 = Some (b2, delta)),
b2=b1 /\ delta=0 /\ Plt b2 b.
Lemma flatinj_I: forall bb b, Plt b bb -> Mem.flat_inj bb b = Some (b, 0).
Lemma flatinj_mono: forall b b1 b2 b' delta
(F: Mem.flat_inj b1 b = Some (b', delta)),
Plt b1 b2 -> Mem.flat_inj b2 b = Some (b', delta).