17 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_TROPICAL_SEMIRING_HH
18 # define VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_TROPICAL_SEMIRING_HH
20 # include <vaucanson/algebra/concept/tropical_semiring.hh>
33 template<
class TropicalKind,
typename T>
34 T identity_value(
SELECTOR(algebra::TropicalSemiring<TropicalKind>),
37 template<
class TropicalKind,
typename T>
38 bool show_identity_value(
SELECTOR(algebra::TropicalSemiring<TropicalKind>),
43 T zero_value(
SELECTOR(algebra::TropicalSemiring<algebra::TropicalMax>),
47 T zero_value(
SELECTOR(algebra::TropicalSemiring<algebra::TropicalMin>),
53 template<
class TropicalKind,
typename T>
54 bool op_contains(
const algebra::TropicalSemiring<TropicalKind>& s, T c);
59 template<
class TropicalKind,
typename T,
typename U>
60 void op_in_mul(
const algebra::TropicalSemiring<TropicalKind>& s1,
63 template<
class TropicalKind,
typename T,
typename U>
64 T op_mul(
const algebra::TropicalSemiring<TropicalKind>& s, T a, U b);
69 template<
typename T,
typename U>
70 void op_in_add(
const algebra::TropicalSemiring<algebra::TropicalMax>& s1,
73 template<
typename T,
typename U>
74 void op_in_add(
const algebra::TropicalSemiring<algebra::TropicalMin>& s1,
77 template<
typename T,
typename U>
78 T op_add(
const algebra::TropicalSemiring<algebra::TropicalMax>& s,
81 template<
typename T,
typename U>
82 T op_add(
const algebra::TropicalSemiring<algebra::TropicalMin>& s,
90 op_starable(
const algebra::TropicalSemiring<algebra::TropicalMin>&, T b);
94 op_in_star(
const algebra::TropicalSemiring<algebra::TropicalMin>& s, T& b);
98 op_starable(
const algebra::TropicalSemiring<algebra::TropicalMax>&, T b);
102 op_in_star(
const algebra::TropicalSemiring<algebra::TropicalMax>&, T& b);
104 template <
class TropicalKind,
class T>
105 Element<algebra::TropicalSemiring<TropicalKind>, T>
106 op_choose(
const algebra::TropicalSemiring<TropicalKind>&
set,
SELECTOR(T));
108 template <
class TropicalKind,
typename T>
113 template <
class TropicalKind,
typename T>
114 Element<algebra::TropicalSemiring<TropicalKind>, T>
118 template <
class TropicalKind,
typename T>
119 Element<algebra::TropicalSemiring<TropicalKind>, T>
126 template<
typename St,
typename T>
127 St&
op_rout(
const algebra::TropicalSemiring<algebra::TropicalMax>& s,
130 template<
typename St,
typename T>
131 St&
op_rout(
const algebra::TropicalSemiring<algebra::TropicalMin>& s,
136 template<
class TropicalKind,
typename T>
137 struct semiring_traits<algebra::TropicalSemiring<TropicalKind>, T>
139 enum { is_positive = 1 };
146 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
147 # include <vaucanson/algebra/implementation/semiring/tropical_semiring.hxx>
148 # endif // VCSN_USE_INTERFACE_ONLY
151 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_TROPICAL_SEMIRING_HH