sig
  val name : string
  exception Attr_is_handle_cstor
  exception Attr_app_val
  exception Attr_proto_val of Nunchaku_core.ID.t * int
  type term = Nunchaku_core.TermInner.Default.t
  type decode_state
  val elim_recursion :
    (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.t ->
    (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.t *
    ElimRecursion.decode_state
  val decode_model :
    state:ElimRecursion.decode_state ->
    (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Model.t ->
    (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Model.t
  val pipe :
    print:bool ->
    check:bool ->
    ((ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.t,
     (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.t,
     (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.Res.t,
     (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.Res.t)
    Nunchaku_core.Transform.t
  val pipe_with :
    ?on_decoded:('-> unit) list ->
    decode:(ElimRecursion.decode_state -> '-> 'd) ->
    print:bool ->
    check:bool ->
    ((ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.t,
     (ElimRecursion.term, ElimRecursion.term) Nunchaku_core.Problem.t, 'c,
     'd)
    Nunchaku_core.Transform.t
end