anchor.diff:       then ()
        else raise_error (Errors.Fatal_UnexpectedNumberOfUniverse,
               (BU.format4 "Expected and generalized universes in the declaration for %s:%s are different, input: %s, but after gen: %s"
  -               eff_name.str comb (Print.univ_names_to_string us) (Print.univ_names_to_string g_us)))
  +               eff_name comb (Print.univ_names_to_string us) (Print.univ_names_to_string g_us)))
               t.pos in
     g_us, t, ty
   
  
positive.code:  * n is the number of universes that the combinator should be polymorphic in
   * (us, t) is the tscheme to check and generalize (us will be [] in the first phase)
   *)
  let check_and_gen env0 (eff_name:lident) (comb:string) (n:int) (us, t) : (univ_names * term * typ) =
    let us, t = SS.open_univ_vars us t in
    let t, ty =
      let t, lc, g = tc_tot_or_gtot_term (Env.push_univ_vars env0 us) t in
      Rel.force_trivial_guard env0 g;
      t, lc.res_typ in
    let g_us, t = TcUtil.generalize_universes env0 t in
    let ty = SS.close_univ_vars g_us ty in
    //check that n = List.length g_us and that if us is set, it is same as g_us
    let univs_ok =
      if List.length g_us <> n then
        let error = BU.format5
          "Expected %s:%s to be universe-polymorphic in %s universes, but found %s (tscheme: %s)"
          eff_name.str comb (string_of_int n) (g_us |> List.length |> string_of_int)
          (Print.tscheme_to_string (g_us, t)) in
        raise_error (Errors.Fatal_MismatchUniversePolymorphic, error) t.pos;
      match us with
  
negative.code:    *   - Record k in the effect declaration (along with the combinator)
     *)
  
    let check_and_gen = check_and_gen env0 ed.mname.str in
  
  
    (*
  