00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_TROPICAL_SEMIRING_HH
00018 # define VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_TROPICAL_SEMIRING_HH
00019
00020 # include <vaucanson/algebra/concept/tropical_semiring.hh>
00021
00022 namespace vcsn {
00023
00024 namespace algebra {
00025
00026
00027
00028
00029
00030
00031
00032
00033 template<class TropicalKind, typename T>
00034 T identity_value(SELECTOR(algebra::TropicalSemiring<TropicalKind>),
00035 SELECTOR(T));
00036
00037 template<class TropicalKind, typename T>
00038 bool show_identity_value(SELECTOR(algebra::TropicalSemiring<TropicalKind>),
00039 SELECTOR(T));
00040
00041
00042 template<typename T>
00043 T zero_value(SELECTOR(algebra::TropicalSemiring<algebra::TropicalMax>),
00044 SELECTOR(T));
00045
00046 template<typename T>
00047 T zero_value(SELECTOR(algebra::TropicalSemiring<algebra::TropicalMin>),
00048 SELECTOR(T));
00049
00050
00051
00052
00053 template<class TropicalKind, typename T>
00054 bool op_contains(const algebra::TropicalSemiring<TropicalKind>& s, T c);
00055
00056
00057
00058
00059 template<class TropicalKind, typename T, typename U>
00060 void op_in_mul(const algebra::TropicalSemiring<TropicalKind>& s1,
00061 T& dst, U arg);
00062
00063 template<class TropicalKind, typename T, typename U>
00064 T op_mul(const algebra::TropicalSemiring<TropicalKind>& s, T a, U b);
00065
00066
00067
00068
00069 template<typename T, typename U>
00070 void op_in_add(const algebra::TropicalSemiring<algebra::TropicalMax>& s1,
00071 T& dst, U arg);
00072
00073 template<typename T, typename U>
00074 void op_in_add(const algebra::TropicalSemiring<algebra::TropicalMin>& s1,
00075 T& dst, U arg);
00076
00077 template<typename T, typename U>
00078 T op_add(const algebra::TropicalSemiring<algebra::TropicalMax>& s,
00079 T a, U b);
00080
00081 template<typename T, typename U>
00082 T op_add(const algebra::TropicalSemiring<algebra::TropicalMin>& s,
00083 T a, U b);
00084
00085
00086
00087
00088 template <typename T>
00089 bool
00090 op_starable(const algebra::TropicalSemiring<algebra::TropicalMin>&, T b);
00091
00092 template <class T>
00093 void
00094 op_in_star(const algebra::TropicalSemiring<algebra::TropicalMin>& s, T& b);
00095
00096 template <typename T>
00097 bool
00098 op_starable(const algebra::TropicalSemiring<algebra::TropicalMax>&, T b);
00099
00100 template <class T>
00101 void
00102 op_in_star(const algebra::TropicalSemiring<algebra::TropicalMax>&, T& b);
00103
00104 template <class TropicalKind, class T>
00105 Element<algebra::TropicalSemiring<TropicalKind>, T>
00106 op_choose(const algebra::TropicalSemiring<TropicalKind>& set, SELECTOR(T));
00107
00108 template <class TropicalKind, typename T>
00109 bool
00110 op_can_choose_non_starable(const algebra::TropicalSemiring<TropicalKind>&
00111 set, SELECTOR(T));
00112
00113 template <class TropicalKind, typename T>
00114 Element<algebra::TropicalSemiring<TropicalKind>, T>
00115 op_choose_starable(const algebra::TropicalSemiring<TropicalKind>& set,
00116 SELECTOR(T));
00117
00118 template <class TropicalKind, typename T>
00119 Element<algebra::TropicalSemiring<TropicalKind>, T>
00120 op_choose_non_starable(const algebra::TropicalSemiring<TropicalKind>& set,
00121 SELECTOR(T));
00122
00123
00124
00125
00126 template<typename St, typename T>
00127 St& op_rout(const algebra::TropicalSemiring<algebra::TropicalMax>& s,
00128 St& st, const T& v);
00129
00130 template<typename St, typename T>
00131 St& op_rout(const algebra::TropicalSemiring<algebra::TropicalMin>& s,
00132 St& st, const T& v);
00133
00134 }
00135
00136 template<class TropicalKind, typename T>
00137 struct semiring_traits<algebra::TropicalSemiring<TropicalKind>, T>
00138 {
00139 enum { is_positive = 1 };
00140 };
00141
00142
00143 }
00144
00145
00146 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00147 # include <vaucanson/algebra/implementation/semiring/tropical_semiring.hxx>
00148 # endif // VCSN_USE_INTERFACE_ONLY
00149
00150
00151 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_TROPICAL_SEMIRING_HH