End MAKE_BIN.
Hint Extern 2 (@eq (option val) _ _) => (simpl; reflexivity) : cshm.

(* Specifications: *)
Lemma make_add_correct: binary_constructor_correct (make_add cunit.(prog_comp_env)) (sem_add prog.(prog_comp_env)).
Lemma make_sub_correct: binary_constructor_correct (make_sub cunit.(prog_comp_env)) (sem_sub prog.(prog_comp_env)).
Lemma make_mul_correct: binary_constructor_correct make_mul sem_mul.
Lemma make_div_correct: binary_constructor_correct make_div sem_div.
Lemma make_mod_correct: binary_constructor_correct make_mod sem_mod.
Lemma make_and_correct: binary_constructor_correct make_and sem_and.
Lemma make_or_correct: binary_constructor_correct make_or sem_or.
Lemma make_xor_correct: binary_constructor_correct make_xor sem_xor.
Ltac comput val :=
let x := fresh in set val as x in *; vm_compute in x; subst x.