anchor.diff:      match next_prob probs with
       | Some (hd, tl, rank) ->
         let probs = {probs with attempting=tl} in
  +      def_check_prob "solve,hd" hd;
         begin match hd with
         | CProb cp ->
               solve_c env (maybe_invert cp) probs
  
positive.code:     smt_ok=true;
      wl_implicits=[]
  }
  let singleton wl prob smt_ok     = {wl with attempting=[prob]; smt_ok = smt_ok}
  let wl_of_guard env g            = {empty_worklist env with attempting=List.map snd g}
  let defer reason prob wl         = {wl with wl_deferred=(wl.ctr, reason, prob)::wl.wl_deferred}
  let attempt probs wl             = {wl with attempting=probs@wl.attempting}
  
  let giveup env reason prob =
      if debug env <| Options.Other "Rel"
      then BU.print2 "Failed %s:\n%s\n" reason (prob_to_string env prob);
  
negative.code:         def_check_scoped_comp (msgf "rhs")        prob p.rhs
          end
  
  let singleton wl prob smt_ok     = {wl with attempting=[prob]; smt_ok = smt_ok}
  let wl_of_guard env g            = {empty_worklist env with attempting=List.map snd g}
  let defer reason prob wl         = {wl with wl_deferred=(wl.ctr, reason, prob)::wl.wl_deferred}
  let attempt probs wl             =
      List.iter (def_check_prob "attempt") probs;
      {wl with attempting=probs@wl.attempting}
  
  let mk_eq2 wl prob t1 t2 : term * worklist =
      (* NS: Rather than introducing a new variable, it would be much preferable
              to simply compute the type of t1 here.
  