7 #include <vcsn/dyn/fwd.hh>
13 template <Automaton Aut>
17 "is_complete: requires free labelset");
19 if (aut->num_initials() == 0)
24 using label_set_t = std::set<typename labelset_t_of<Aut>::letter_t>;
26 const auto& letters = aut->labelset()->generators();
27 for (
auto state : aut->states())
30 = label_set_t{std::begin(letters), std::end(letters)};
32 for (
auto tr :
all_out(aut, state))
33 missing_letters.erase(aut->label_of(tr));
35 if (!missing_letters.empty())
51 template <Automaton Aut>
typename detail::labelset_t_of_impl< base_t< ValueSet >>::type labelset_t_of
bool is_complete(const Aut &aut)
Whether aut is complete.
auto all_out(const Aut &aut, state_t_of< Aut > s)
Indexes of transitions leaving state s.
bool is_complete(const automaton &aut)
Bridge.
auto & as()
Extract wrapped typed automaton.