00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGORITHMS_PROJECTIONS_FMP_HH
00018 # define VCSN_ALGORITHMS_PROJECTIONS_FMP_HH
00019
00031 # include <vaucanson/automata/concept/automata.hh>
00032 # include <vaucanson/algebra/implementation/free_monoid/words.hh>
00033 # include <vaucanson/algebra/concept/freemonoid_product.hh>
00034 # include <vaucanson/algebra/implementation/series/series.hh>
00035
00036 namespace vcsn
00037 {
00038
00039
00040
00041
00042 template <typename S, typename S2, typename T, typename T2>
00043 void
00044 domain(const Element<S,T>& aut, Element<S2, T2>& res);
00045
00046 template <typename S, typename S2, typename T, typename T2>
00047 Element<S2, T2>
00048 domain(const Element<S,T>& aut);
00049
00050
00051
00052
00053
00054
00055 template <typename S, typename S2, typename T, typename T2>
00056 void
00057 image(const Element<S,T>& aut, Element<S2, T2>& res);
00058
00059 template <typename S, typename S2, typename T, typename T2>
00060 Element<S2, T2>
00061 image(const Element<S,T>& aut);
00062
00063
00064
00065
00066
00067
00068 template <typename S, typename S2, typename T, typename T2>
00069 void
00070 identity(const Element<S,T>& aut, Element<S2, T2>& res);
00071
00072 template <typename S, typename S2, typename T, typename T2>
00073 Element<S2, T2>
00074 identity(const Element<S,T>& aut);
00075
00076 }
00077
00078
00079 # ifndef VCSN_USE_INTERFACE_ONLY
00080 # include <vaucanson/algorithms/projections_fmp.hxx>
00081 # endif // VCSN_USE_INTERFACE_ONLY
00082
00083
00084 #endif // ! VCSN_ALGORITHMS_PROJECTIONS_FMP_HH