let data_cmp binop ka ga kb gb =
match ka,kb with
|( Kint | Kcint _) , (Kint| Kcint _) ->
int_cmp binop (integer_of_data ka ga) (integer_of_data kb gb)
| (Kreal|Kint| Kcint _) , (Kreal|Kint| Kcint _) ->
real_cmp binop (real_of_data ka ga) (real_of_data kb gb)
| Kptr ty , Kptr _ ->
let obj = object_of ty in
ptr_cmp binop (loc_of_data obj ga) (loc_of_data obj gb)
| _ ->
Wp_error.not_yet_implemented
"boolean comparison between %a and %a"
pp_kind ka pp_kind kb