6 #include <vcsn/dyn/fwd.hh>
12 template <Automaton Aut>
16 "is_complete: requires free labelset");
18 if (aut->num_initials() == 0)
21 using label_set_t = std::set<typename labelset_t_of<Aut>::letter_t>;
23 const auto& letters = aut->labelset()->generators();
24 for (
auto state : aut->states())
26 label_set_t missing_letters = {std::begin(letters), std::end(letters)};
28 for (
auto tr :
all_out(aut, state))
29 missing_letters.erase(aut->label_of(tr));
31 if (!missing_letters.empty())
47 template <Automaton Aut>
bool is_complete(const Aut &aut)
Whether aut is complete.
typename detail::labelset_t_of_impl< base_t< ValueSet >>::type labelset_t_of
bool is_complete(const automaton &aut)
Bridge.
auto & as()
Extract wrapped typed automaton.
auto all_out(const Aut &aut, state_t_of< Aut > s)
Indexes of transitions leaving state s.