let promote a1 a2 =
  match a1 , a2 with
    | C_int i1 , C_int i2 -> C_int (i_convert i1 i2)
    | C_float f1 , C_float f2 -> C_float (f_convert f1 f2)
    | C_int _ , C_float _ -> a2
    | C_float _ , C_int _ -> a1
    | _ -> WpLog.not_yet_implemented
        "promotion between arithmetics and pointer types"