Section eq_dec.
Local Ltac t := hnf; decide equality; auto.
Let eq_dec_type := type_eq.
Let eq_dec_float := Float.eq_dec.
Let eq_dec_float32 := Float32.eq_dec.
Let eq_dec_int := Int.eq_dec.
Let eq_dec_int64 := Int64.eq_dec.
Let eq_dec_ident := ident_eq.
Let eq_dec_signature := signature_eq.
Let eq_dec_attr : EqDec attr. repeat t. Qed.
Let eq_dec_signedness : EqDec signedness. t. Qed.
Let eq_dec_intsize : EqDec intsize. t. Qed.
Let eq_dec_floatsize : EqDec floatsize. t. Qed.
Let eq_dec_Z : EqDec Z. repeat t. Qed.
Let eq_dec_calling_convention : EqDec calling_convention. repeat t. Qed.
Let eq_dec_option_ident := option_eq (ident_eq).
Let eq_dec_option_Z : EqDec (option Z). repeat t. Qed.
Let eq_dec_typelist : EqDec typelist. repeat t. Qed.
End eq_dec.
Instance EqDec_statement: EqDec statement := eq_dec_statement.
Instance EqDec_external_function: EqDec external_function := eq_dec_external_function.
(* Lemma safe_kseq_Slabel {Espec: OracleKind} psi n ora f ve te l c k m : @jsafeN (@OK_ty Espec) (@OK_spec Espec) psi n ora (State f ve te (@cons cont' (Kseq c) k)) m -> @jsafeN (@OK_ty Espec) (@OK_spec Espec) psi n ora (State ve te (@cons cont' (Kseq (Slabel l c)) k)) m. *)

Lemma jm_bupd_local_step
: forall {Espec: OracleKind} (ge : genv) (ora : OK_ty) (s1 : CC_core)
(m : juicy_mem) (s2 : CC_core),
cl_step ge s1 (m_dry m) s2 (m_dry m) ->
(forall m' : juicy_mem,
age m m' -> jm_bupd ora (jsafeN (@OK_spec Espec) ge (level m') ora s2) m') ->
jm_bupd ora (jsafeN (@OK_spec Espec) ge (level m) ora s1) m.