anchor.diff:   * calls apply_lemma to fully instantiate `u` and provide a proof of the equality.
    * If all that is successful, the term is rewritten.
    *)
  -let pointwise_rec (ps : proofstate) (tau : tac<unit>) (env : Env.env) (t : term) : tac<term> =
  +let pointwise_rec (ps : proofstate) (tau : tac<unit>) opts (env : Env.env) (t : term) : tac<term> =
       let t, lcomp, g = TcTerm.tc_term env t in
       if not (U.is_total_lcomp lcomp) || not (Rel.is_trivial g) then
           ret t // Don't do anything for possibly impure terms
  
positive.code:              | x::xs -> if f x xs then x::(filter' f xs) else filter' f xs
          in
          let sub_goals = filter' (fun g goals -> not (checkone g.witness goals)) sub_goals in
          bind (add_irrelevant_goal goal.context pre) (fun _ ->
          // Try to discharge the precondition, which is often trivial
          bind (trytac trivial) (fun _ ->
          bind (add_implicits g.implicits) (fun _ ->
  
negative.code:     log ps (fun () ->
          BU.print1 "Pointwise starting with %s\n" (Print.term_to_string gt));
      bind dismiss_all (fun _ ->
      bind (tac_bottom_fold_env (pointwise_rec ps tau g.opts) g.context gt) (fun gt' ->
      log ps (fun () ->
          BU.print1 "Pointwise seems to have succeded with %s\n" (Print.term_to_string gt'));
      bind (push_goals gs) (fun _ ->
  