anchor.diff:      let f_sort = (fst f_b).sort |> SS.subst substs |> SS.compress in
       let f_sort_is = effect_args_from_repr f_sort (Env.is_layered_effect env ct.effect_name) r in
       List.fold_left2
  -      (fun g i1 i2 -> Env.conj_guard g (Rel.teq env i1 i2))
  +      (fun g i1 i2 -> Env.conj_guard g (Rel.layered_effect_teq env i1 i2 (Some lift_name)))
         Env.trivial_guard c_is f_sort_is in
   
     let lift_ct = lift_c |> SS.subst_comp substs |> U.comp_to_comp_typ in
  
positive.code:         is |> List.map fst |> List.map (SS.subst substs)
        | _ -> raise_error (conjunction_t_error "g's type is not a repr type") r in
      List.fold_left2
        (fun g i2 g_i -> Env.conj_guard g (Rel.teq env i2 g_i))
        Env.trivial_guard is2 g_sort_is in
  
    let body = SS.subst substs body in
  
negative.code:     env rest_bs [NT (a_b |> fst, t1); NT (b_b |> fst, t2)]
      (fun b -> BU.format3
        "implicit var for binder %s of %s at %s"
        (Print.binder_to_string b) bind_name (Range.string_of_range r1)) r1 in
  
    let subst = List.map2
      (fun b t -> NT (b |> fst, t))
  