anchor.diff:            new_problem wl env bound EQ this_flex None tp.loc
                   (if flip then "joining refinements" else "meeting refinements")
         in
  +      def_check_prob "meet_or_join2" (TProb eq_prob);
         let _ = if Env.debug env <| Options.Other "Rel"
                 then let wl' = {wl with attempting=TProb eq_prob::sub_probs} in
                      BU.print1 "After meet/join refinements: %s\n" (wl_to_string wl') in
  
positive.code:     | None -> lg
      | Some x -> S.mk_Tm_app lg [S.as_arg x] None loc
    in
     {
      pid=next_pid();
      lhs=lhs;
  
negative.code:               //i.e., solve ?u = t_base, with the guard formula phi
              let eq_prob, wl =
                  new_problem wl env t_base EQ this_flex None tp.loc "widened subtyping" in
              def_check_prob "meet_or_join4" (TProb eq_prob);
              let phi = guard_on_element wl tp x phi in
              let wl = solve_prob' false (TProb tp) (Some (U.mk_conj phi (p_guard (TProb eq_prob)))) [] wl in
              solve env (attempt [TProb eq_prob] wl)
  