let rec has_ctype typ term = has_object (object_of typ) term
and has_object obj term =
match obj with
| C_float _ | C_pointer _ -> p_true
| C_int i -> p_call (is_int i) [term]
| C_comp c -> p_call (IsComp.obtain c) [term]
| C_array info ->
let ta = darray_of_arrayinfo info 1 in
match object_of (fst ta) with
| C_float _ | C_pointer _ -> p_true
| C_array _ -> Wp_parameters.fatal "non canonical array-dimension"
| C_int _ | C_comp _ ->
p_call (IsArray.obtain ta) [term]