anchor.diff:              begin
               match try_match_heuristic env orig wl t1 t2 o with
               | Inl _defer_ok ->
  -              giveup_or_defer orig "delaying match heuristic"
  +              giveup_or_defer orig (Thunk.mkv "delaying match heuristic")
   
               | Inr (Some wl) ->
                 solve env wl
  
positive.code:                     if debug env <| Options.Other "Rel" then BU.print2 "solve_c for %s and %s\n" (c1.effect_name.str) (c2.effect_name.str);
                      match Env.monad_leq env c1.effect_name c2.effect_name with
                      | None ->
                         giveup env (BU.format2 "incompatible monad ordering: %s </: %s"
                                                (Print.lid_to_string c1.effect_name)
                                                (Print.lid_to_string c2.effect_name)) orig
                      | Some edge ->
                          solve_sub c1 edge c2
                   end
  
negative.code: (* Types used in the output of the solver *)
  type solution =
    | Success of deferred * implicits
    | Failed  of prob * lstring
  
  type variance =
      | COVARIANT
  