anchor.diff:          //            (Print.args_to_string [last_arg_rhs]);
           let t_lhs, u_lhs, _lhs_args = lhs in
           let lhs', lhs'_last_arg, wl =
  -              let _, t_last_arg, wl = copy_uvar u_lhs (fst <| U.type_u()) wl in
  +              let _, t_last_arg, wl = copy_uvar u_lhs [] (fst <| U.type_u()) wl in
                 //FIXME: this may be an implicit arg ... fix qualifier
  -              let _, u_lhs', wl = copy_uvar u_lhs (U.arrow (bs_lhs@[S.null_binder t_last_arg]) (S.mk_Total t_res_lhs)) wl in
  -              let lhs' = S.mk_Tm_app u_lhs' bs_lhs_args None t_lhs.pos in
  -              let _, u_lhs'_last_arg, wl = copy_uvar u_lhs (U.arrow bs_lhs (S.mk_Total t_last_arg)) wl in
  -              let lhs'_last_arg = S.mk_Tm_app u_lhs'_last_arg bs_lhs_args None t_lhs.pos in
  +              let _, lhs', wl = copy_uvar u_lhs (bs_lhs@[S.null_binder t_last_arg]) t_res_lhs wl in
  +              let _, lhs'_last_arg, wl = copy_uvar u_lhs bs_lhs t_last_arg wl in
                 lhs', lhs'_last_arg, wl
           in
           //if Env.debug env <| Options.Other "Rel"
  
positive.code:               solve env (attempt [sub_prob] (solve_prob orig None [sol] wl))
  
              | (x, imp)::formals ->
                let _ctx_u_x, u_x, wl = copy_uvar u_lhs (U.arrow (bs_lhs@bs) (S.mk_Total (U.type_u() |> fst))) wl in
                let t_y = S.mk_Tm_app u_x (bs_lhs_args@bs_terms) None x.sort.pos in
                //printfn "Generated formal %s where %s" (Print.term_to_string t_y) (Print.ctx_uvar_to_string ctx_u_x);
                let y = S.new_bv (Some (S.range_of_bv x)) t_y in
                aux (bs@[y, imp]) (bs_terms@[S.bv_to_name y, imp]) formals wl
           in
           aux [] [] formals wl
  
negative.code:              let out_args, wl =
                 List.fold_right
                   (fun (a, i) (out_args, wl) ->
                     let _, t_a, wl = copy_uvar u_lhs [] (fst <| U.type_u()) wl in
                     let _, a', wl = copy_uvar u_lhs bs t_a wl in
                     (a',i)::out_args, wl)
                   ((S.as_arg ct.result_typ)::ct.effect_args)
                   ([], wl)
  