Section safety_Clight.

(*First we change validty to preserve bounded memory*)
Lemma ksafe_new_step_ksafe_new_step_bounded: forall ge ds m,
(forall (n : nat) (sch : Sch),
new_valid  (mk_nstate (sch, nil, ds) m) sch ->
ksafe_new_step ge
(sch, nil, ds) m n) ->
forall (n : nat) sch,
new_valid_bound (mk_nstate (sch, nil, ds) m) sch ->
safety.ksafe new_state Sch
(new_step ge) new_valid_bound (*Notice the stronger validity*)
(mk_nstate (sch, nil, ds) m) sch n.