17 #ifndef VCSN_ALGORITHMS_COMPOSITION_COVER_HXX
18 # define VCSN_ALGORITHMS_COMPOSITION_COVER_HXX
33 # include <vaucanson/algebra/concept/freemonoid_product.hh>
34 # include <vaucanson/automata/concept/automata.hh>
39 template <
typename S,
typename M1,
typename M2,
typename Auto_t>
41 do_composition_cover (
const AutomataBase<S>&,
42 const algebra::FreeMonoidProduct<M1, M2>&,
46 BENCH_TASK_SCOPED(
"composition_cover");
47 AUTOMATON_TYPES(Auto_t);
48 ret = splitting::outsplitting (fmp);
52 template <
typename S,
typename M1,
typename M2,
typename Auto_t>
54 do_composition_co_cover (
const AutomataBase<S>&,
55 const algebra::FreeMonoidProduct<M1, M2>&,
59 BENCH_TASK_SCOPED(
"composition_co_cover");
60 AUTOMATON_TYPES(Auto_t);
61 ret = splitting::insplitting (fmp);
68 template <
typename S,
typename T>
73 AUTOMATON_TYPES(auto_t);
85 template <
typename S,
typename T>
90 typedef Element<S, T> auto_t;
91 AUTOMATON_TYPES(auto_t);
93 for_all_states (s, ret)
95 do_composition_cover (fmp.structure(),
96 fmp.structure().series().monoid(),
104 template <typename S, typename T>
109 AUTOMATON_TYPES(auto_t);
111 automaton_t ret(fmp.structure());
113 do_composition_co_cover (fmp.structure(),
114 fmp.structure().series().monoid(),
121 template <
typename S,
typename T>
126 typedef Element<S, T> auto_t;
127 AUTOMATON_TYPES(auto_t);
129 for_all_states (s, ret)
131 do_composition_cover (fmp.structure(),
132 fmp.structure().series().monoid(),
139 #endif // ! VCSN_ALGORITHMS_COMPOSITION_COVER_HXX