16 template <Automaton Aut>
27 return {
labelset_t{*aut->labelset(), *aut->labelset()},
33 template <Automaton Aut>
38 template <Automaton Aut>
47 automaton_t
res = make_shared_ptr<automaton_t>(part_id_ctx::value(aut));
53 map[aut->pre()] = res->pre();
54 map[aut->post()] = res->post();
57 for (
auto st : aut->states())
58 map[st] = res->new_state();
62 res->new_transition(map[aut->src_of(tr)],
64 label_t{aut->label_of(tr), aut->label_of(tr)},
79 template <Automaton Aut>
83 const auto& a = aut->
as<Aut>();
typename detail::partial_identity_context< Aut >::context_t partial_identity_context_t_of
automaton partial_identity(const automaton &aut)
Bridge.
weightset_t_of< Aut > weightset_t
OutExpSet::value_t partial_identity(const InExpSet &in_rs, const OutExpSet &out_rs, const typename InExpSet::value_t &v)
Partial identity of a rational expression.
Provide a variadic mul on top of a binary mul(), and one().
typename detail::label_t_of_impl< base_t< ValueSet >>::type label_t_of
typename Aut::element_type::template fresh_automaton_t< Context > fresh_automaton_t_of
Given an automaton type, the type of its copies.
typename detail::labelset_t_of_impl< base_t< ValueSet >>::type labelset_t_of
size_t states_size(const Aut &aut)
The largest state number, plus one.
static context_t value(const Aut &aut)
typename detail::state_t_of_impl< base_t< ValueSet >>::type state_t_of
labelset_t_of< Aut > in_labelset_t
fresh_automaton_t_of< Aut, partial_identity_context_t_of< Aut > > partial_identity(const Aut &aut)
Create a partial identity transducer from aut.
typename detail::weightset_t_of_impl< base_t< ValueSet >>::type weightset_t_of
auto & as()
Extract wrapped typed automaton.
auto all_transitions(const Aut &aut)
All the transition indexes between all states (including pre and post).