anchor.diff:         *)
   
         if problem.relation = EQ
  -      then solve_eq c1 c2 g_lift.implicits  //AR: TODO: FIXME: THIS BREAKS IF g_lift IS MORE THAN IMPLICITS
  +      then solve_eq c1 c2 g_lift
         else
           let r = Env.get_range env in
  -        let wl = { wl with wl_implicits = g_lift.implicits@wl.wl_implicits } in  //AR: TODO: FIXME: THIS BREAKS IF g_lift IS MORE THAN IMPLICITS
  +        let wl = { wl with wl_implicits = g_lift.implicits@wl.wl_implicits } in
   
           //sub problems for uvar indices in c1
           let is_sub_probs, wl =
  
positive.code:     let sub_prob : worklist -> term -> rel -> term -> string -> prob * worklist =
          fun wl t1 rel t2 reason -> mk_t_problem wl [] orig t1 rel t2 None reason in
  
      let solve_eq c1_comp c2_comp imps =
          let _ = if Env.debug env <| Options.Other "EQ"
                  then BU.print2 "solve_c is using an equality constraint (%s vs %s)\n"
                              (Print.comp_to_string (mk_Comp c1_comp))
  
negative.code:                             then c1_comp, c2_comp
                              else Env.unfold_effect_abbrev env c1,
                                   Env.unfold_effect_abbrev env c2 in
                        solve_eq c1_comp c2_comp Env.trivial_guard
                   else begin
                      let c1 = Env.unfold_effect_abbrev env c1 in
                      let c2 = Env.unfold_effect_abbrev env c2 in
  