method vpredicate = function
    | Prel(rel,t1,t2)
        when app_term_type isPointerType false t1.term_type
          && not (is_null_term t1 || is_null_term t2
                  || is_base_addr t1 || is_base_addr t2) ->
        let loc = range_loc t1.term_loc t2.term_loc in
        let tsub = {
          term_node = TBinOp(MinusPP,t1,t2);
          term_type = Ctype theMachine.ptrdiffType;
          term_loc = loc;
          term_name = [];
        } in
        let p = Prel(rel,tsub,constant_term loc 0Lin
        ChangeDoChildrenPost (p, fun x -> x)
    | _ -> DoChildren