21 template <Automaton Aut>
24 <decltype(
transpose(std::declval<Aut>())),
28 template <Automaton Aut>
31 -> std::enable_if_t<is_free_boolean<Aut>(),
43 template <Automaton Aut>
45 std::enable_if_t<!is_free_boolean<Aut>(), Aut>
48 raise(
"minimize: invalid algorithm" 49 " (non-Boolean or non-free labelset):",
Aut transpose(const transpose_automaton< Aut > &aut)
The transpose of a transpose automaton is the original automaton.
transpose_automaton< determinized_automaton< decltype(transpose(std::declval< Aut >())), wet_kind_t::bitset > > codeterminized_automaton
The type of the codeterminized automaton.
Request for Brzozowski implementation of minimize (B and free).
auto codeterminize(const Aut &aut, Tag tag={})
ExpansionSet::value_t determinize(const ExpansionSet &xs, const typename ExpansionSet::value_t &x)
Determinize an expansion.
std::shared_ptr< detail::determinized_automaton_impl< Aut, Kind, Lazy > > determinized_automaton
A determinized automaton as a shared pointer.
Request the bitset implementation (bool weights).
std::shared_ptr< detail::transpose_automaton_impl< Aut > > transpose_automaton
An automaton wrapper that presents the transposed automaton.
auto minimize(const Aut &a, brzozowski_tag) -> std::enable_if_t< is_free_boolean< Aut >(), determinized_automaton< codeterminized_automaton< Aut >, wet_kind_t::bitset >>
Brzozowski-based minimization.