sig
  type 'a trans
  type 'a tlist = 'a list Trans.trans
  val store : (Task.task -> 'a) -> 'Trans.trans
  val apply : 'Trans.trans -> Task.task -> 'a
  val identity : Task.task Trans.trans
  val identity_l : Task.task Trans.tlist
  val singleton : 'Trans.trans -> 'Trans.tlist
  val return : '-> 'Trans.trans
  val bind : 'Trans.trans -> ('-> 'Trans.trans) -> 'Trans.trans
  val bind_comp :
    ('a * Task.task) Trans.trans -> ('-> 'Trans.trans) -> 'Trans.trans
  val trace_goal : string -> Task.task Trans.trans -> Task.task Trans.trans
  val compose : Task.task Trans.trans -> 'Trans.trans -> 'Trans.trans
  val compose_l : Task.task Trans.tlist -> 'Trans.tlist -> 'Trans.tlist
  val seq : Task.task Trans.trans list -> Task.task Trans.trans
  val seq_l : Task.task Trans.tlist list -> Task.task Trans.tlist
  val par : Task.task Trans.trans list -> Task.task Trans.tlist
  val fold : (Task.task_hd -> '-> 'a) -> '-> 'Trans.trans
  val fold_l : (Task.task_hd -> '-> 'a list) -> '-> 'Trans.tlist
  val fold_decl : (Decl.decl -> '-> 'a) -> '-> 'Trans.trans
  val fold_map :
    (Task.task_hd -> 'a * '-> 'a * 'b) -> '-> '-> 'Trans.trans
  val fold_map_l :
    (Task.task_hd -> 'a * '-> ('a * 'b) list) -> '-> '-> 'Trans.tlist
  val decl :
    (Decl.decl -> Decl.decl list) -> Task.task -> Task.task Trans.trans
  val decl_l :
    (Decl.decl -> Decl.decl list list) -> Task.task -> Task.task Trans.tlist
  type diff_decl = Goal_decl of Decl.decl | Normal_decl of Decl.decl
  val decl_goal_l :
    (Decl.decl -> Trans.diff_decl list list) ->
    Task.task -> Task.task Trans.tlist
  val tdecl :
    (Decl.decl -> Theory.tdecl list) -> Task.task -> Task.task Trans.trans
  val tdecl_l :
    (Decl.decl -> Theory.tdecl list list) ->
    Task.task -> Task.task Trans.tlist
  val goal :
    (Decl.prsymbol -> Term.term -> Decl.decl list) -> Task.task Trans.trans
  val goal_l :
    (Decl.prsymbol -> Term.term -> Decl.decl list list) ->
    Task.task Trans.tlist
  val tgoal :
    (Decl.prsymbol -> Term.term -> Theory.tdecl list) ->
    Task.task Trans.trans
  val tgoal_l :
    (Decl.prsymbol -> Term.term -> Theory.tdecl list list) ->
    Task.task Trans.tlist
  val rewrite :
    (Term.term -> Term.term) -> Task.task -> Task.task Trans.trans
  val rewriteTF :
    (Term.term -> Term.term) ->
    (Term.term -> Term.term) -> Task.task -> Task.task Trans.trans
  val add_decls : Decl.decl list -> Task.task Trans.trans
  val add_tdecls : Theory.tdecl list -> Task.task Trans.trans
  val on_meta :
    Theory.meta ->
    (Theory.meta_arg list list -> 'Trans.trans) -> 'Trans.trans
  val on_meta_excl :
    Theory.meta ->
    (Theory.meta_arg list option -> 'Trans.trans) -> 'Trans.trans
  val on_used_theory :
    Theory.theory -> (bool -> 'Trans.trans) -> 'Trans.trans
  val on_cloned_theory :
    Theory.theory ->
    (Theory.symbol_map list -> 'Trans.trans) -> 'Trans.trans
  val on_tagged_ty :
    Theory.meta -> (Ty.Sty.t -> 'Trans.trans) -> 'Trans.trans
  val on_tagged_ts :
    Theory.meta -> (Ty.Sts.t -> 'Trans.trans) -> 'Trans.trans
  val on_tagged_ls :
    Theory.meta -> (Term.Sls.t -> 'Trans.trans) -> 'Trans.trans
  val on_tagged_pr :
    Theory.meta -> (Decl.Spr.t -> 'Trans.trans) -> 'Trans.trans
  exception UnknownFlagTrans of Theory.meta * string * string list
  exception IllegalFlagTrans of Theory.meta
  type ('a, 'b) flag_trans = ('-> 'Trans.trans) Wstdlib.Hstr.t
  val on_flag :
    Theory.meta ->
    ('a, 'b) Trans.flag_trans -> string -> '-> 'Trans.trans
  val on_flag_t :
    Theory.meta ->
    ('a, 'b) Trans.flag_trans ->
    ('-> 'Trans.trans) -> '-> 'Trans.trans
  val print_meta : Debug.flag -> Theory.meta -> Task.task Trans.trans
  val create_debugging_trans :
    string -> Task.task Trans.trans -> Task.task Trans.trans
  exception TransFailure of string * exn
  exception UnknownTrans of string
  exception KnownTrans of string
  val register_env_transform :
    desc:Pp.formatted -> string -> (Env.env -> Task.task Trans.trans) -> unit
  val register_env_transform_l :
    desc:Pp.formatted -> string -> (Env.env -> Task.task Trans.tlist) -> unit
  val register_transform :
    desc:Pp.formatted -> string -> Task.task Trans.trans -> unit
  val register_transform_l :
    desc:Pp.formatted -> string -> Task.task Trans.tlist -> unit
  val lookup_transform : string -> Env.env -> Task.task Trans.trans
  val lookup_transform_l : string -> Env.env -> Task.task Trans.tlist
  val list_transforms : unit -> (string * Pp.formatted) list
  val list_transforms_l : unit -> (string * Pp.formatted) list
  val named : string -> 'Trans.trans -> 'Trans.trans
  type naming_table = {
    namespace : Theory.namespace;
    known_map : Decl.known_map;
    coercion : Coercion.t;
    printer : Ident.ident_printer;
    aprinter : Ident.ident_printer;
    meta_id_args : Ident.ident Wstdlib.Mstr.t;
  }
  exception Bad_name_table of string
  type trans_with_args =
      string list ->
      Env.env -> Trans.naming_table -> Env.fformat -> Task.task Trans.trans
  type trans_with_args_l =
      string list ->
      Env.env -> Trans.naming_table -> Env.fformat -> Task.task Trans.tlist
  val list_transforms_with_args : unit -> (string * Pp.formatted) list
  val list_transforms_with_args_l : unit -> (string * Pp.formatted) list
  val register_transform_with_args :
    desc:Pp.formatted -> string -> Trans.trans_with_args -> unit
  val register_transform_with_args_l :
    desc:Pp.formatted -> string -> Trans.trans_with_args_l -> unit
  type gentrans =
      Trans_one of Task.task Trans.trans
    | Trans_list of Task.task Trans.tlist
    | Trans_with_args of Trans.trans_with_args
    | Trans_with_args_l of Trans.trans_with_args_l
  val lookup_trans : Env.env -> string -> Trans.gentrans
  val lookup_trans_desc : string -> Pp.formatted
  val list_trans : unit -> string list
  exception Unnecessary_arguments of string list
  val apply_transform : string -> Env.env -> Task.task -> Task.task list
  val apply_transform_args :
    string ->
    Env.env ->
    string list ->
    Trans.naming_table -> Env.fformat -> Task.task -> Task.task list
end