anchor.diff:    if debug env <| Options.Other "Rel" then
       BU.print3 "sub_comp of %s --and-- %s --with-- %s\n" (Print.comp_to_string c1) (Print.comp_to_string c2) (if rel = EQ then "EQ" else "SUB");
     let prob, wl = new_problem (empty_worklist env) env c1 rel c2 None (Env.get_range env) "sub_comp" in
  +  let wl = { wl with repr_subcomp_allowed = true } in
     let prob = CProb prob in
     def_check_prob "sub_comp" prob;
     let (r, ms) = BU.record_time
  
positive.code:     defer_ok=true;
      smt_ok=true;
      umax_heuristic_ok=true;
      wl_implicits=[]
  }
  
  let giveup env (reason : lstring) prob =
  
negative.code:     umax_heuristic_ok: bool;                    //whether or not it's ok to apply a structural match on umax us = umax us'
      tcenv:        Env.env;
      wl_implicits: implicits;                    //additional uvars introduced
      repr_subcomp_allowed:bool;                  //whether subtyping of effectful computations
                                                  //with a representation (which need a monadic lift)
                                                  //is allowed; disabled by default, enabled in
                                                  //sub_comp which is called by the typechecker, and
                                                  //will insert the appropriate lifts.
  }
  
  (* --------------------------------------------------------- *)
  