anchor.diff:  // solving any of these two goals. In any case, if ?u is not solved, we fail afterwards.
   let rec __apply (uopt:bool) (tm:term) (typ:typ) : tac<unit> =
       bind cur_goal (fun goal ->
  -    bind (trytac (exact tm)) (fun r ->
  +    bind (trytac (__exact tm)) (fun r ->
       match r with
       | Some r -> ret r // if tm is a solution, we're done
       | None ->
  
positive.code: module Print = FStar.Syntax.Print
  module TcUtil = FStar.TypeChecker.Util
  module TcTerm = FStar.TypeChecker.TcTerm
  module N = FStar.TypeChecker.Normalize
  module RD = FStar.Reflection.Data
  module UF = FStar.Syntax.Unionfind
  
negative.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_goal_from_guard goal.context guard goal.opts) (fun _ ->
          bind (add_goal_from_guard goal.context g   goal.opts) (fun _ ->
          bind (add_irrelevant_goal goal.context pre goal.opts) (fun _ ->
          // Try to discharge the precondition, which is often trivial
          bind (trytac trivial) (fun _ ->
          add_goals sub_goals))))))))
  
  let destruct_eq' (typ : typ) : option<(term * term)> =
      match U.destruct_typ_as_formula typ with
  