1 #ifndef VCSN_ALGOS_IS_EPS_ACYCLIC_HH
2 # define VCSN_ALGOS_IS_EPS_ACYCLIC_HH
4 # include <unordered_map>
16 template <
typename Aut,
17 bool has_one = context_t_of<Aut>::has_one()>
23 template <
typename Aut>
29 std::unordered_map<state_t, char>
tag;
47 auto it = tag.find(s);
51 for (
auto t : aut_->out(s, empty_word))
52 if (has_epsilon_circuit(aut_->dst_of(t)))
79 , empty_word(aut->labelset()->one())
85 for (
auto s : aut_->states())
86 if (has_epsilon_circuit(s))
92 template <
typename Aut>
107 template <
typename Aut>
112 return t.is_eps_acyclic();
124 template <
typename Aut>
137 #endif // !VCSN_ALGOS_IS_EPS_ACYCLIC_HH
std::unordered_map< state_t, char > tag
REGISTER_DECLARE(accessible,(const automaton &) -> automaton)
std::shared_ptr< detail::automaton_base > automaton
static constexpr bool is_eps_acyclic()
state_t_of< automaton_t > state_t
constexpr epsilon_acyclic(const automaton_t &)
bool has_epsilon_circuit(state_t s)
label_t_of< automaton_t > label_t
typename std::remove_cv< Aut >::type automaton_t
typename detail::label_t_of_impl< base_t< ValueSet >>::type label_t_of
ATTRIBUTE_CONST bool is_eps_acyclic(const Aut &aut)
typename std::remove_cv< Aut >::type automaton_t
bool is_eps_acyclic(const automaton &aut)
epsilon_acyclic(const automaton_t &aut)
typename detail::state_t_of_impl< base_t< ValueSet >>::type state_t_of