33 namespace VCSN_GRAPH_IMPL
36 VCSN_CONTEXT_NAMESPACE
43 template <
class InputIterator>
45 make_automata_set(InputIterator input_alphabet_begin,
46 InputIterator input_alphabet_end,
47 InputIterator output_alphabet_begin,
48 InputIterator output_alphabet_end)
50 alphabet_t input_alpha;
51 alphabet_t output_alpha;
53 for (InputIterator e = input_alphabet_begin;
54 e != input_alphabet_end; ++e)
55 input_alpha.insert(*e);
57 for (InputIterator e = output_alphabet_begin;
58 e != output_alphabet_end; ++e)
59 output_alpha.insert(*e);
61 monoid_t output_freemonoid (output_alpha);
62 typename output_series_set_t::semiring_t semiring;
63 output_series_set_t output_series (semiring, output_freemonoid);
64 monoid_t freemonoid (input_alpha);
65 series_set_t series (output_series, freemonoid);
66 automata_set_t automata_set (series);
72 template <
class InputIterator>
74 make_automaton(InputIterator input_alphabet_begin,
75 InputIterator input_alphabet_end,
76 InputIterator output_alphabet_begin,
77 InputIterator output_alphabet_end)
79 return automaton_t(make_automata_set(input_alphabet_begin,
81 output_alphabet_begin,
82 output_alphabet_end));
87 automaton_t make_automaton(
const T& input_alphabet,
88 const T& output_alphabet)
90 return make_automaton(input_alphabet.begin(),
92 output_alphabet.begin(),
93 output_alphabet.end());
96 template <
typename TransStruct,
98 typename MonoidStruct,
100 output_series_set_elt_t
104 const MonoidImpl& input,
105 const Element<TransStruct, TransImpl>& t,
106 const Element<MonoidStruct, MonoidImpl>&)
108 return eval(t, input);
111 template <
typename TransStruct,
113 typename SeriesStruct,
117 output_series_set_elt_t
122 const Element<TransStruct, TransImpl>& t,
123 const Element<SeriesStruct, SeriesImpl>&)
125 AUTOMATON_CONTEXT::automaton_t w =
126 AUTOMATON_CONTEXT::make_automaton(t.structure().series()
127 .monoid().alphabet());
128 typename output_projection_helper<TransStruct, TransImpl>::ret::set_t
129 ret_set(t.structure().series().semiring());
130 AUTOMATON_CONTEXT::gen_automaton_t result (ret_set);
136 template <
typename TransStruct,
140 output_series_set_elt_t
141 evaluation(
const Element<TransStruct, TransImpl>& t,
142 const Element<ArgStruct, ArgImpl>& input)
144 return do_evaluation(t.structure(), t.value(),
145 input.structure(), input.value(),