sig
  val decl_map :
    (Term.term -> Term.term) ->
    (Term.term -> Term.term) -> Decl.decl -> Decl.decl
  val decl_fold :
    ('a -> Term.term -> 'a) ->
    ('a -> Term.term -> 'a) -> 'a -> Decl.decl -> 'a
  val decl_map_fold :
    ('a -> Term.term -> 'a * Term.term) ->
    ('a -> Term.term -> 'a * Term.term) -> 'a -> Decl.decl -> 'a * Decl.decl
end