00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGORITHMS_SUB_NORMALIZE_HH
00018 # define VCSN_ALGORITHMS_SUB_NORMALIZE_HH
00019
00020
00035 # include <vaucanson/algebra/concept/freemonoid_product.hh>
00036 # include <vaucanson/automata/concept/copy.hh>
00037 # include <vaucanson/algorithms/cut_up.hh>
00038 # include <vector>
00039
00040 namespace vcsn
00041 {
00042
00052 template <class S, class T>
00053 Element<S, T>
00054 sub_normalize(const Element<S, T>& a);
00055
00063 template <class S, class T1, class T2>
00064 void
00065 sub_normalize(const Element<S, T1>& a, Element<S, T2>& res);
00066
00067
00073 template <class S, class T>
00074 void
00075 sub_normalize_here(Element<S, T>& a);
00076
00077
00085 template <class S, class T>
00086 bool is_sub_normalized(const Element<S, T>& a);
00087
00090 }
00091
00092 # if !defined VCSN_USE_INTERFACE_ONLY && !defined VCSN_USE_LIB
00093 # include <vaucanson/algorithms/sub_normalize.hxx>
00094 # endif // VCSN_USE_INTERFACE_ONLY
00095
00096 #endif // ! VCSN_ALGORITHMS_SUB_NORMALIZE_HH