anchor.diff:  
       let env_g = Env.push_binders env [x_a] in
       List.fold_left2
  -      (fun g i1 g_i1 -> Env.conj_guard g (Rel.teq env_g i1 g_i1))
  +      (fun g i1 g_i1 -> Env.conj_guard g (Rel.layered_effect_teq env_g i1 g_i1 (Some bind_name)))
         Env.trivial_guard is2 g_sort_is
       |> Env.close_guard env [x_a] 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:     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.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
  