anchor.diff:            (string_of_bool env.phase1)
             (Print.term_to_string e)
             (Print.tag_of_term (SS.compress e))
  -          (match Env.expected_typ env with | None -> "None" | Some t -> Print.term_to_string t);
  +          (print_expected_ty env)
   
       let r, ms = BU.record_time (fun () ->
                       tc_maybe_toplevel_term ({env with top_level=false}) e) in
  
positive.code:  * Called when typechecking a Tm_abs node
   *
   * t0 is the expected type in the environment for the Tm_abs node
   *)
  and tc_abs_expected_function_typ env (bs:binders) t0 (body:term)
  : (option<typ>        (* any remaining expected type to check against *)
  * binders             (* binders from the abstraction checked against the binders in the corresponding Typ_fun, if any *)
  * binders             (* let rec binders, suitably guarded with termination check, if any *)
  
negative.code: let comp_check_expected_typ env e lc : term * lcomp * guard_t =
    match Env.expected_typ env with
     | None -> e, lc, Env.trivial_guard
     | Some (t, use_eq) ->
       let e, lc, g_c = TcUtil.maybe_coerce_lc env e lc t in
       let e, lc, g = TcUtil.weaken_result_typ env e lc t use_eq in
       e, lc, Env.conj_guard g g_c
  
  (************************************************************************************************************)
  