sig
  val name : string
  exception Error of string
  type term = Nunchaku_core.TermInner.Default.t
  type ty = Specialize.term
  type decode_state
  val specialize_problem :
    (Specialize.term, Specialize.term) Nunchaku_core.Problem.t ->
    (Specialize.term, Specialize.term) Nunchaku_core.Problem.t *
    Specialize.decode_state
  val decode_term :
    Specialize.decode_state -> Specialize.term -> Specialize.term
  val pipe :
    print:bool ->
    check:bool ->
    ((Specialize.term, Specialize.ty) Nunchaku_core.Problem.t,
     (Specialize.term, Specialize.ty) Nunchaku_core.Problem.t,
     (Specialize.term, Specialize.ty) Nunchaku_core.Problem.Res.t,
     (Specialize.term, Specialize.ty) Nunchaku_core.Problem.Res.t)
    Nunchaku_core.Transform.t
  val pipe_with :
    ?on_decoded:('-> unit) list ->
    decode:(Specialize.decode_state -> '-> 'c) ->
    print:bool ->
    check:bool ->
    ((Specialize.term, Specialize.ty) Nunchaku_core.Problem.t,
     (Specialize.term, Specialize.ty) Nunchaku_core.Problem.t, 'b, 'c)
    Nunchaku_core.Transform.t
end