Definition bounded_mem (m: mem) := bounded_maps.bounded_map (snd (getMaxPerm m)) .

(* Specifications: *)
Lemma mem_alloc_bounded: forall m lo hi m1 b, bounded_mem m -> Mem.alloc m lo hi = (m1, b) -> bounded_mem m1.
Lemma drop_perm_bounded: forall m b lo hi P m', bounded_mem m -> Mem.drop_perm m b lo hi P = Some m' -> bounded_mem m'.
Lemma store_bounded: forall Mint32 m b ofs v m', bounded_mem m -> Mem.store Mint32 m b ofs v = Some m' -> bounded_mem m'.
Lemma bounded_getMaxPerm: forall m p Hlt, @bounded_mem m -> @bounded_mem (@restrPermMap p m Hlt).
Lemma store_init_data_bounded: forall F V ge m b ofs data m', bounded_mem m -> @Globalenvs.Genv.store_init_data F V ge m b ofs data = Some m' -> bounded_mem m'.
Lemma store_init_data_list_bounded: forall F V ge m b ofs B m', bounded_mem m -> @Globalenvs.Genv.store_init_data_list F V ge m b ofs B = Some m' -> bounded_mem m'.
Lemma store_zeros_init_data_bounded: forall m b ofs a m', bounded_mem m -> Globalenvs.store_zeros m b ofs a = Some m' -> bounded_mem m'.
Lemma alloc_global_bounded: forall F V ge m m' a, @bounded_mem m -> @Globalenvs.Genv.alloc_global F V ge m a = Some m' -> @bounded_mem m'.
Lemma mem_alloc_bounded: forall m lo hi m1 b, bounded_mem m -> Mem.alloc m lo hi = (m1, b) -> bounded_mem m1.
Lemma drop_perm_bounded: forall m b lo hi P m', bounded_mem m -> Mem.drop_perm m b lo hi P = Some m' -> bounded_mem m'.
Lemma store_bounded: forall Mint32 m b ofs v m', bounded_mem m -> Mem.store Mint32 m b ofs v = Some m' -> bounded_mem m'.
Lemma bounded_getMaxPerm: forall m p Hlt, @bounded_mem m -> @bounded_mem (@restrPermMap p m Hlt).
Lemma store_init_data_bounded: forall F V ge m b ofs data m', bounded_mem m -> @Globalenvs.Genv.store_init_data F V ge m b ofs data = Some m' -> bounded_mem m'.
Lemma store_init_data_list_bounded: forall F V ge m b ofs B m', bounded_mem m -> @Globalenvs.Genv.store_init_data_list F V ge m b ofs B = Some m' -> bounded_mem m'.
Lemma store_zeros_init_data_bounded: forall m b ofs a m', bounded_mem m -> Globalenvs.store_zeros m b ofs a = Some m' -> bounded_mem m'.
Lemma alloc_global_bounded: forall F V ge m m' a, @bounded_mem m -> @Globalenvs.Genv.alloc_global F V ge m a = Some m' -> @bounded_mem m'.