7 template <Automaton Aut>
11 require(aut->labelset()->has_one(),
12 __func__,
": labelset must be nullable");
14 const auto& ls = *aut->labelset();
15 const auto& ws = *aut->weightset();
17 auto res = make_shared_ptr<Aut>(aut->context());
23 for (
const auto s: aut->states())
28 return (aut->src_of(t) != aut->pre()
29 && aut->dst_of(t) != aut->post()); });
33 return (aut->src_of(t) != aut->pre())
34 && (aut->dst_of(t) != aut->post()); });
36 res->set_initial(copy_pref.state_map().at(s));
37 res->set_final(copy_suff.state_map().at(s));
43 res->new_transition(copy_pref.state_map().at(aut->src_of(ft)),
44 copy_suff.state_map().at(aut->dst_of(it)),
56 template <Automaton Aut>
60 const auto& aut = a->as<Aut>();
automaton make_automaton(const Aut &aut)
Build a dyn::automaton.
void require(Bool b, Args &&...args)
If b is not verified, raise an error with args as message.
Aut conjugate(const Aut &aut)
typename detail::state_t_of_impl< base_t< ValueSet >>::type state_t_of
auto initial_transitions(const Aut &aut) -> decltype(aut->all_out(aut->pre()))
Indexes of transitions to (visible) initial states.
automaton conjugate(const automaton &a)
Bridge.
std::shared_ptr< detail::automaton_base > automaton
typename detail::transition_t_of_impl< base_t< ValueSet >>::type transition_t_of
auto final_transitions(const Aut &aut) -> decltype(aut->all_in(aut->post()))
Indexes of transitions from (visible) final states.
detail::copier< AutIn, AutOut > make_copier(const AutIn &in, AutOut &out, bool safe=true)
Build an automaton copier.