anchor.diff:      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.
   }
   
   (* --------------------------------------------------------- *)
  
positive.code:     defer_ok=true;
      smt_ok=true;
      umax_heuristic_ok=true;
      wl_implicits=[]
  }
  
  let giveup env (reason : lstring) prob =
  
negative.code:         solve env (attempt sub_probs wl) in
  
      let solve_sub c1 edge c2 =
          if problem.relation <> SUB then
            failwith "impossible: solve_sub";
          let r = Env.get_range env in
          let lift_c1 () =
               let univs =
  