anchor.diff:      if is_irrelevant g then
           bind dismiss (fun _ -> add_smt_goals [g])
       else
  -        fail (BU.format1 "goal is not irrelevant: cannot dispatch to smt (%s)"
  -                         (Print.term_to_string g.goal_ty))
  +        fail1 "goal is not irrelevant: cannot dispatch to smt (%s)" (Print.term_to_string g.goal_ty)
       )
   
   let divide (n:int) (l : tac<'a>) (r : tac<'b>) : tac<('a * 'b)> =
  
positive.code:                 dismiss
              end
          | hd, _ ->
              fail (BU.format1 "trefl: not an equality (%s)" (Print.term_to_string t))
          end
       | None ->
          fail "not an irrelevant goal")
  
negative.code:                     | _ -> failwith "apply_lemma: impossible: not a lemma"
      in
      match Rel.try_teq false goal.context (U.mk_squash post) goal.goal_ty with
      | None -> fail2 "apply_lemma: does not unify with goal: %s vs %s"
                                   (Print.term_to_string (U.mk_squash post))
                                   (Print.term_to_string goal.goal_ty)
      | Some g ->
          let g = Rel.solve_deferred_constraints goal.context g |> Rel.resolve_implicits in
          let solution = S.mk_Tm_app tm uvs None goal.context.range in
  