Definition mem_rmap_cohere m phi :=
  contents_cohere m phi /\
  access_cohere m phi /\
  max_access_cohere m phi /\ alloc_cohere m phi.

Lemma whole_program_sequential_safety: forall {CS: compspecs} {Espec: OracleKind} (initial_oracle: OK_ty) (dryspec: ext_spec OK_ty) (dessicate : forall (ef : external_function) jm, ext_spec_type OK_spec ef -> ext_spec_type dryspec ef) (JDE: juicy_dry_ext_spec _ (@JE_spec OK_ty OK_spec) dryspec dessicate) (DME: ext_spec_mem_evolve _ dryspec) prog V G m, @semax_prog Espec (*NullExtension.Espec*) CS prog V G -> Genv.init_mem prog = Some m -> exists b, exists q, exists m', Genv.find_symbol (Genv.globalenv prog) (prog_main prog) = Some b /\ initial_core (cl_core_sem (globalenv prog)) 0 m q m' (Vptr b Ptrofs.zero) nil /\ forall n, @dry_safeN _ _ _ OK_ty (genv_symb_injective) (coresem_extract_cenv (cl_core_sem (globalenv prog)) (prog_comp_env prog)) (*(dryspec OK_ty)*) dryspec (Build_genv (Genv.globalenv prog) (prog_comp_env prog)) n initial_oracle q m'.