anchor.diff:                      (N.term_to_string goal.context (bnorm goal.context typ))
                       (N.term_to_string goal.context goal.goal_ty)))
   
  -let exact (t:term) : tac<unit> =
  -    focus (__exact t)
  +let exact (tm:term) : tac<unit> =
  +    bind (mlog (fun () -> BU.print1 "exact: tm = %s\n" (Print.term_to_string tm))) (fun _ ->
  +    focus (__exact tm)
  +    )
   
   let exact_lemma (t:term) : tac<unit> =
       bind cur_goal (fun goal ->
  
positive.code:         bind (if not (istrivial goal.context (U.mk_squash pre))
                then add_irrelevant_goal goal.context pre goal.opts
                else ret ()) (fun _ ->
          add_goals sub_goals))))))
  
  let destruct_eq' (typ : typ) : option<(term * term)> =
      match U.destruct_typ_as_formula typ with
  
negative.code:                             (N.term_to_string goal.context tm)
                              (N.term_to_string goal.context typ)
                              (N.term_to_string goal.context goal.goal_ty))
      ))
  
  let apply_lemma (tm:term) : tac<unit> = focus(
      bind (mlog (fun () -> BU.print1 "apply_lemma: tm = %s\n" (Print.term_to_string tm))) (fun _ ->
      let is_unit_t t = match (SS.compress t).n with
      | Tm_fvar fv when S.fv_eq_lid fv PC.unit_lid -> true
      | _ -> false
  