anchor.diff:      in
   
       let try_umax_components u1 u2 msg =
  +        if not wl.umax_heuristic_ok then UFailed ("Unable to unify universe terms with umax") else
           match u1, u2 with
               | U_max us1, U_max us2 ->
                 //filter out common universes in us1 and us2
  
positive.code:                    subprobs, wl
                in
                let solve_sub_probs env wl =
                    let subprobs, wl = mk_sub_probs wl in
                    let formula = U.mk_conj_l (List.map (fun p -> p_guard p) subprobs) in
                    let wl = solve_prob orig (Some formula) [] wl in
                    solve env (attempt subprobs wl)
                in
                let solve_sub_probs_no_smt env wl =
                    let subprobs, wl = mk_sub_probs wl in
                    let wl = solve_prob orig None [] wl in
                    solve env (attempt subprobs wl)
                in
                let unfold_and_retry d env wl (prob, reason) =
                    if debug env <| Options.Other "Rel"
  
negative.code:             (Print.term_to_string t2) (Print.tag_of_term t2);
          let head1, args1 = U.head_and_args t1 in
          let head2, args2 = U.head_and_args t2 in
          let solve_head_then wl k =
              if need_unif then k true wl
              else match solve_maybe_uinsts env orig head1 head2 wl with
              | USolved wl -> k true wl //(solve_prob orig None [] wl)
              | UFailed msg -> giveup env msg orig
              | UDeferred wl -> k false (defer "universe constraints" orig wl)
          in
          let nargs = List.length args1 in
          if nargs <> List.length args2
          then giveup env (BU.format4 "unequal number of arguments: %s[%s] and %s[%s]"
  