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