(*From Cminorgenproof*)
Remark val_inject_function_pointer:
  forall v fd j tv,
  Genv.find_funct ge v = Some fd ->
  globalfunction_ptr_inject j ->
  val_inject j v tv ->
  tv = v.

Lemma binary_op_inject: forall op v1 v2 ty1 ty2 m u (SBO:sem_binary_operation op v1 ty1 v2 ty2 m = Some u) j tm (MINJ : Mem.inject j m tm) tv1 (V1: val_inject j v1 tv1) tv2 (V2: val_inject j v2 tv2), exists tu, sem_binary_operation op tv1 ty1 tv2 ty2 tm = Some tu /\ val_inject j u tu.