Section CONSTRUCTORS.
Variable ge: genv.
Hint Resolve make_intconst_correct make_floatconst_correct make_longconst_correct
make_floatofint_correct make_intoffloat_correct
make_longofint_correct
make_floatoflong_correct make_longoffloat_correct
eval_Eunop eval_Ebinop: cshm.
Hint Extern 2 (@eq trace _ _) => traceEq: cshm.
Hint Resolve make_cast_int_correct make_cast_float_correct: cshm.
(*Replaced by make_boolean_inject below Lemma make_boolean_correct: forall e le m a v ty b, eval_expr ge e le m a v -> bool_val v ty = Some b -> exists vb, eval_expr ge e le m (make_boolean a ty) vb /\ Val.bool_of_val vb b. *)

Lemma make_notbool_correct:
forall a tya c va v e le m,
sem_notbool va tya = Some v ->
make_notbool a tya = OK c ->
eval_expr ge e le m a va ->
eval_expr ge e le m c v.