anchor.diff:          let force_eta t =
               if is_abs t then t
               else begin
  -                let _, ty, _ = env.type_of ({env with lax=true; use_bv_sorts=true; expected_typ=None}) t in
  +                let _, ty, _ = env.type_of_tot_or_gtot_term ({env with lax=true; use_bv_sorts=true; expected_typ=None}) t true in  //AR: TODO: type_of_well_typed?
                   (* Find the WHNF ignoring refinements. Otherwise consider
                    *
                    * let myty1 = a -> Tot b
  
positive.code:                                                     (Print.term_to_string c2_repr))
                         in
                         let wl = solve_prob orig (Some (p_guard prob)) [] wl in
                         solve env (attempt [prob] wl)
                    else
                        let g =
                           if env.lax then
  
negative.code:                                           (Print.lid_to_string c1.effect_name)
                                            (Print.lid_to_string c2.effect_name))) env.range
               in
               let univ_sub_probs, wl = [], wl in
                 // List.fold_left2 (fun (univ_sub_probs, wl) u1 u2 ->
                 //   let p, wl = sub_prob wl
                 //     (S.mk (S.Tm_type u1) Range.dummyRange)
                 //     EQ
                 //     (S.mk (S.Tm_type u2) Range.dummyRange)
                 //     "effect universes" in
                 //   (univ_sub_probs@[p]), wl) ([], wl) c1.comp_univs c2.comp_univs in
               if BU.physical_equality wpc1 wpc2
               then
                 let tprob = TProb (problem_using_guard orig c1.result_typ problem.relation c2.result_typ None "result type") in
                 solve env (attempt (univ_sub_probs@[tprob]) wl)
               else let c2_decl, qualifiers = must (Env.effect_decl_opt env c2.effect_name) in
                    if qualifiers |> List.contains Reifiable
                    then let c1_repr =
  