anchor.diff:          let hd, args = U.head_and_args' t in
           match (U.un_uinst hd).n, args with
           | Tm_fvar fv, [_; (l, _); (r, _)] when S.fv_eq_lid fv PC.eq2_lid ->
  -            if not (Rel.teq_nosmt g.context l r)
  +            if not (do_unify g.context l r)
               then fail2 "trefl: not a trivial equality (%s vs %s)" (Print.term_to_string l) (Print.term_to_string r)
               else
               begin
  
positive.code:                     | pre::post::_ -> fst pre, fst post
                      | _ -> failwith "exact_lemma: impossible: not a lemma"
      in
      if Rel.teq_nosmt goal.context post goal.goal_ty
      then let _ = solve goal t in bind dismiss (fun _ -> add_irrelevant_goal goal.context pre goal.opts)
      else fail3 "%s : %s does not exactly solve the goal %s"
                      (Print.term_to_string t)
  
negative.code:              let body = S.bv_to_name bv in
               let lbs, body = SS.close_let_rec [lb] body in
               let tm = mk (Tm_let ((true, lbs), body)) None goal.witness.pos in
               let res = trysolve goal tm in
               if res
               then bind (replace_cur ({ goal with context = env';
  