Ltac solve_tc_val H :=
  rewrite tc_val_tc_val_PM in H; inv H.Ltac solve_tc_val' H :=
  rewrite tc_val_tc_val_PM' in H; inv H.

Lemma tc_val_sem_cmp_binarith': forall sem_int sem_long sem_float sem_single t1 t2 t v1 v2 (TV2: tc_val t2 v2) (TV1: tc_val t1 v1), is_numeric_type t1 = true -> is_numeric_type t2 = true -> is_int_type t = true -> tc_val t (force_val (Clight_Cop2.sem_binarith (fun s n1 n2 => Some (Val.of_bool (sem_int s n1 n2))) (fun s n1 n2 => Some (Val.of_bool (sem_long s n1 n2))) (fun n1 n2 => Some (Val.of_bool (sem_float n1 n2))) (fun n1 n2 => Some (Val.of_bool (sem_single n1 n2))) t1 t2 v1 v2)).