anchor.diff:          match (U.un_uinst hd).n, args with
           | Tm_fvar fv, [_; (l, _); (r, _)] when S.fv_eq_lid fv PC.eq2_lid ->
               if not (do_unify g.context l r)
  -            then fail2 "trefl: not a trivial equality (%s vs %s)" (N.term_to_string g.context l) (N.term_to_string g.context r)
  +            then fail2 "trefl: not a trivial equality (%s vs %s)" (tts g.context l) (tts g.context r)
               else solve g U.exp_unit
           | hd, _ ->
  -            fail1 "trefl: not an equality (%s)" (N.term_to_string g.context t)
  +            fail1 "trefl: not an equality (%s)" (tts g.context t)
           end
        | None ->
           fail "not an irrelevant goal")
  
positive.code:     if do_unify goal.context typ goal.goal_ty
      then solve goal t
      else fail3 "%s : %s does not exactly solve the goal %s"
                      (N.term_to_string goal.context t)
                      (N.term_to_string goal.context typ)
                      (N.term_to_string goal.context goal.goal_ty)))))
  
  let t_exact set_expected_typ force_guard tm : tac<unit> = wrap_err "exact" <|
      mlog (fun () -> BU.print1 "exact: tm = %s\n" (Print.term_to_string tm)) (fun _ ->
  
negative.code:     let g_binders = Env.all_binders g.context |> Print.binders_to_string ", " in
      let w = bnorm g.context g.witness in
      let t = bnorm g.context g.goal_ty in
      Util.format3 "%s |- %s : %s" g_binders (tts g.context w) (tts g.context t)
  
  let tacprint  (s:string)       = BU.print1 "TAC>> %s\n" s
  let tacprint1 (s:string) x     = BU.print1 "TAC>> %s\n" (BU.format1 s x)
  