sig
  type term = Nunchaku_core.FO.T.t
  type ty = Nunchaku_core.FO.Ty.t
  type problem = (Elim_ite.term, Elim_ite.ty) Nunchaku_core.FO.Problem.t
  val name : string
  val transform_term : Elim_ite.term -> Elim_ite.term
  val transform_statement :
    (Elim_ite.term, Elim_ite.ty) Nunchaku_core.FO.statement ->
    (Elim_ite.term, Elim_ite.ty) Nunchaku_core.FO.statement
  val transform_problem : Elim_ite.problem -> Elim_ite.problem
  val pipe :
    print:bool ->
    (Elim_ite.problem, Elim_ite.problem, 'a, 'a) Nunchaku_core.Transform.t
end