3 #include <unordered_map>
16 template <
typename Aut,
17 bool has_one = context_t_of<Aut>::has_one()>
23 template <
typename Aut>
36 for (
auto s : aut_->states())
37 if (has_spontaneous_circuit(s))
46 auto it = tag.find(s);
50 for (
auto t : aut_->out(s, one))
51 if (has_spontaneous_circuit(aut_->dst_of(t)))
88 std::unordered_map<state_t, status>
tag;
94 template <
typename Aut>
109 template <
typename Aut>
114 return t.is_eps_acyclic();
122 template <
typename Aut>
ATTRIBUTE_CONST bool is_eps_acyclic(const Aut &aut)
constexpr epsilon_acyclic(const automaton_t &)
typename detail::label_t_of_impl< base_t< ValueSet >>::type label_t_of
state_t_of< automaton_t > state_t
static constexpr bool is_eps_acyclic()
std::string type(const automaton &a)
The implementation type of a.
typename std::remove_cv< Aut >::type automaton_t
typename detail::state_t_of_impl< base_t< ValueSet >>::type state_t_of
bool has_spontaneous_circuit(state_t s)
bool is_eps_acyclic(const automaton &aut)
Bridge.
std::shared_ptr< detail::automaton_base > automaton
There is an eps-circuit accessible from s.
There is no eps-circuit accessible from s.
The graph reachable from s is under exploration.
std::unordered_map< state_t, status > tag
label_t_of< automaton_t > label_t
typename std::remove_cv< Aut >::type automaton_t
epsilon_acyclic(const automaton_t &aut)
#define BUILTIN_UNREACHABLE()