anchor.diff:                                            (Print.lid_to_string c1.effect_name)
                                             (Print.lid_to_string c2.effect_name))) env.range
                in
  +
                if BU.physical_equality wpc1 wpc2
                then solve_t env (problem_using_guard orig c1.result_typ problem.relation c2.result_typ None "result type") wl
                else let c2_decl, qualifiers = must (Env.effect_decl_opt env c2.effect_name) in
  
positive.code:                    *)
                    let apply_op op phi1 phi2 =
                      let squash phi =
                        match env.universeof_well_typed_term env phi with
                        | Some U_zero -> phi
                        | Some u -> U.mk_squash u phi
                        | None -> U.mk_squash (Env.new_u_univ ()) phi in
                      op (squash phi1) (squash phi2) in
                    let combine_refinements t_base p1_opt p2_opt =
                        let refine x t =
  
negative.code:                        umax_heuristic_ok=false;
                         attempting=[];
                         wl_deferred=[];
                         wl_implicits=[]} in
      let tx = UF.new_transaction () in
      match try_solve env wl' with
      | Success (_, defer_to_tac, imps) ->
        UF.commit tx;
        let wl = extend_wl wl defer_to_tac imps in
        solve env wl
      | Failed (p, s) ->
        UF.rollback tx;
  