sig
  val name : string
  type term = Nunchaku_core.TermInner.Default.t
  type ty = ElimCopy.term
  type decode_state
  val elim :
    (ElimCopy.term, ElimCopy.term) Nunchaku_core.Problem.t ->
    (ElimCopy.term, ElimCopy.term) Nunchaku_core.Problem.t *
    ElimCopy.decode_state
  val pipe :
    print:bool ->
    check:bool ->
    ((ElimCopy.term, ElimCopy.ty) Nunchaku_core.Problem.t,
     (ElimCopy.term, ElimCopy.ty) Nunchaku_core.Problem.t,
     (ElimCopy.term, ElimCopy.ty) Nunchaku_core.Problem.Res.t,
     (ElimCopy.term, ElimCopy.ty) Nunchaku_core.Problem.Res.t)
    Nunchaku_core.Transform.t
end