(* Lemma init_schedule_all: forall U pmap n g m p t init_mach om, (semantics.initial_core (MachineSemantics U pmap) n g m p t) = Some (init_mach, om) -> forall U'', correct_schedule (U'', snd (fst init_mach), snd init_mach) -> schedPeek U'' = Some 1  \/ schedPeek U'' = None .  Ad_itted. *)

(* Specifications: *)
Lemma Initial_dry_ksafety:
forall (U : semax_invariant.schedule) (n : nat),
exists init_U init_tr init_st,
(semantics.initial_core (MachineSemantics U (Some ( getCurPerm (juicy_mem.m_dry (init_jmem n)), empty_map)))) 0 init_genv (juicy_mem.m_dry (init_jmem n)) init_point nil =
Some ((init_U, init_tr, init_st), None) /\
forall n' U',
ksafe_new_step (globalenv prog) (U', init_tr, init_st)
(proj1_sig (init_mem CPROOF)) n'.
Lemma Initial_dry_ksafety_valid:
forall (U : semax_invariant.schedule) (n : nat),
exists init_U init_tr init_st,
(semantics.initial_core (MachineSemantics U (Some ( getCurPerm (juicy_mem.m_dry (init_jmem n)), empty_map)))) 0 init_genv (juicy_mem.m_dry (init_jmem n)) init_point nil =
Some ((init_U, init_tr, init_st), None) /\
forall n' U',
new_valid  (mk_nstate (U', init_tr, init_st)
(proj1_sig (init_mem CPROOF))) U' ->
ksafe_new_step (globalenv prog) (U', init_tr, init_st)
(proj1_sig (init_mem CPROOF)) n'.