let typ_of_elements = function
    | Ctype c ->
        let o = object_of c in
        begin
          match o with
            | C_pointer te -> te
            | C_array arr -> arr.arr_element
            | _ ->
                WpLog.fatal "elements of non-pointer type %a" Ctypes.pp_object o
        end
    | t -> WpLog.fatal "elements of non-pointer type: %a"
        !Ast_printer.d_logic_type t