00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGEBRA_CONCEPT_TROPICAL_SEMIRING_HH
00018 # define VCSN_ALGEBRA_CONCEPT_TROPICAL_SEMIRING_HH
00019
00020 # include <vaucanson/algebra/concept/semiring_base.hh>
00021
00022 namespace vcsn {
00023
00024 namespace algebra {
00025
00026 template <class TropicalKind>
00027 struct TropicalSemiring;
00028
00029 }
00030
00034
00035
00036
00037
00039 template<class TropicalKind>
00040 struct dynamic_traits<algebra::TropicalSemiring<TropicalKind> >
00041 : dynamic_traits<algebra::SemiringBase<algebra::TropicalSemiring<TropicalKind> > >
00042 {
00043 };
00044
00045 template<class TropicalKind>
00046 struct virtual_types<algebra::TropicalSemiring<TropicalKind> >
00047 : virtual_types<algebra::SemiringBase<algebra::TropicalSemiring<TropicalKind> > >
00048 {
00054 typedef algebra::add_kind semigroup_kind;
00055 };
00056
00057
00061 namespace algebra {
00062
00066
00067
00068
00069
00071 struct TropicalMin
00072 {
00073 };
00074
00076 struct TropicalMax
00077 {
00078 };
00079
00080
00081
00082
00083
00085 template <class TropicalKind>
00086 struct TropicalSemiring
00087 : SemiringBase<TropicalSemiring<TropicalKind> >
00088 {
00089 bool operator == (const TropicalSemiring&) const;
00090 };
00091
00095 }
00096
00100
00101
00102
00103
00105 template<class TropicalKind, typename T>
00106 struct MetaElement<algebra::TropicalSemiring<TropicalKind> , T>
00107 : MetaElement<algebra::SemiringBase<algebra::TropicalSemiring<TropicalKind> >, T>
00108 {};
00109
00113 }
00114
00115
00116 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00117 # include <vaucanson/algebra/concept/tropical_semiring.hxx>
00118 # endif // VCSN_USE_INTERFACE_ONLY
00119
00120
00121 #endif // ! VCSN_ALGEBRA_CONCEPT_TROPICAL_SEMIRING_HH