Hint Resolve make_intconst_correct make_floatconst_correct make_longconst_correct
make_singleconst_correct make_singleoffloat_correct make_floatofsingle_correct
make_floatofint_correct: cshm.
Hint Constructors eval_expr eval_exprlist: cshm.
Hint Extern 2 (@eq trace _ _) => traceEq: cshm.

(* Specifications: *)
Lemma make_cmpu_ne_zero_correct:
forall e le m a n,
eval_expr ge e le m a (Vint n) ->
eval_expr ge e le m (make_cmpu_ne_zero a) (Vint (if Int.eq n Int.zero then Int.zero else Int.one)).
Lemma make_cmpu_ne_zero_correct_ptr:
forall e le m a b i,
eval_expr ge e le m a (Vptr b i) ->
Archi.ptr64 = false ->
Mem.weak_valid_pointer m b (Ptrofs.unsigned i) = true ->
eval_expr ge e le m (make_cmpu_ne_zero a) Vone.
Lemma make_cast_int_correct:
forall e le m a n sz si,
eval_expr ge e le m a (Vint n) ->
eval_expr ge e le m (make_cast_int a sz si) (Vint (cast_int_int sz si n)).
Lemma make_longofint_correct:
forall e le m a n si,
eval_expr ge e le m a (Vint n) ->
eval_expr ge e le m (make_longofint a si) (Vlong (cast_int_long si n)).