anchor.diff:          in
           bind (mk_irrelevant_goal "refine_intro refinement" g.context
                       (SS.subst [S.NT (bv, g.witness)] phi) g.opts) (fun g2 ->
  -        bind dismiss (fun _ ->
  +        bind __dismiss (fun _ ->
           add_goals [g1;g2])))
   
   let __exact_now set_expected_typ (t:term) : tac<unit> =
  
positive.code:     bind cur_goal (fun g ->
      bind (new_uvar "dup" g.context g.goal_ty) (fun u ->
      let g' = { g with witness = u } in
      bind dismiss (fun _ ->
      bind (add_irrelevant_goal "dup equation" g.context
                 (U.mk_eq2 (TcTerm.universe_of g.context g.goal_ty) g.goal_ty u g.witness) g.opts) (fun _ ->
      bind (add_goals [g']) (fun _ ->
  
negative.code: let trysolve (goal : goal) (solution : term) : tac<bool> =
      do_unify goal.context solution goal.witness
  
  let __dismiss : tac<unit> =
      bind get (fun p ->
      set ({p with goals=List.tl p.goals}))
  
  let dismiss : tac<unit> =
      bind get (fun p ->
      match p.goals with
      | [] -> fail "dismiss: no more goals"
      | _ -> __dismiss)
  
  let solve (goal : goal) (solution : term) : tac<unit> =
      bind (trysolve goal solution) (fun b ->
      if b
      then __dismiss
      else fail (BU.format3 "%s does not solve %s : %s"
                (tts goal.context solution)
                (tts goal.context goal.witness)
  