anchor.diff:          end
       | _ -> (); //TODO
       ()
  +
  +let mk_eq2 prob t1 t2 =
  +    (* NS: Rather than introducing a new variable, it would be much preferable
  +            to simply compute the type of t1 here.
  +            Sadly, it seems to be way too expensive to call env.type_of here.
  +    *)
  +    let t_type, u = U.type_u () in
  +    let tt, _ = new_uvar t1.pos (p_scope prob) t_type in
  +    U.mk_eq2 u tt t1 t2
   
   let p_invert = function
      | TProb p -> TProb <| invert p
  
positive.code:                 if (may_relate head1 || may_relate head2) && wl.smt_ok
                  then let guard =
                          if problem.relation = EQ
                          then mk_eq2 env t1 t2
                          else let has_type_guard t1 t2 =
                                  match problem.element with
                                      | Some t -> U.mk_has_type t1 t t2
  
negative.code: (* --------------------------------------------------------- *)
  (* </new_uvar>                                               *)
  (* --------------------------------------------------------- *)
  
  (* Instantiation of unification variables *)
  type uvi =
  