17 #ifndef VCSN_ALGORITHMS_IS_LTL_HXX
18 # define VCSN_ALGORITHMS_IS_LTL_HXX
22 # include <vaucanson/misc/usual_macros.hh>
24 # include <vaucanson/automata/concept/automata_base.hh>
25 # include <vaucanson/algebra/concept/freemonoid_product.hh>
29 template<
typename S,
typename A,
typename B,
typename T>
32 const AutomataBase<S>&,
34 const algebra::FreeMonoidProduct<A, B>&,
37 BENCH_TASK_SCOPED(
"is_ltl");
42 for_all_const_initial_states(i, t)
44 series_set_elt_t l = t.get_initial(*i);
45 if (l.supp().size() > 1)
49 assertion(l.supp().size() == 1);
50 monoid_elt_value_t m = *l.supp().begin();
51 if (m.first.size() > 0 || m.second.size() > 0)
55 for_all_const_transitions(e, t)
57 series_set_elt_t label = t.series_of(*e);
58 for_all_const_(series_set_elt_t::support_t, it, label.supp())
60 if (((*it).first.size() != 1) || ((*it).second.size() != 1))
65 for_all_const_final_states(f, t)
67 series_set_elt_t l = t.get_final(*f);
68 if (l.supp().size() > 1)
72 assertion(l.supp().size() == 1);
73 monoid_elt_value_t m = *l.supp().begin();
74 if (m.first.size() > 0 || m.second.size() > 0)
85 template <
typename S,
typename A>
95 #endif // ! VCSN_ALGORITHMS_IS_LTL_HXX