(*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.