anchor.diff:          if Util.set_mem x fns_ty (* || Util.set_mem x fns_tm *)
           then fail "Cannot clear; variable appears in goal"
           else bind (new_uvar env' goal.goal_ty) (fun u ->
  -             if not (Rel.teq_nosmt goal.context goal.witness u)
  +             if not (trysolve goal u)
                then fail "clear: unification failed"
                else let new_goal = {goal with context = env'; witness = bnorm env' u} in
                     bind dismiss (fun _ ->
  
positive.code: let set (p:proofstate) : tac<unit> =
      mk_tac (fun _ -> Success ((), p))
  
  let solve goal solution =
      if Rel.teq_nosmt goal.context goal.witness solution
      then ()
      else raise (TacFailure(BU.format3 "%s does not solve %s : %s"
                            (Print.term_to_string solution)
  
negative.code:              let lbs, body = SS.close_let_rec [lb] body in
               let tm = mk (Tm_let ((true, lbs), body)) None goal.witness.pos in
               BU.print_string "calling teq_nosmt\n";
               let res = trysolve goal tm in
               if res
               then bind (replace_cur ({ goal with context = env';
                                                   goal_ty = bnorm env' (comp_to_typ c);
  