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 {
00049 };
00050
00051
00055 namespace algebra {
00056
00060
00061
00062
00063
00065 struct TropicalMin
00066 {
00067 };
00068
00070 struct TropicalMax
00071 {
00072 };
00073
00074
00075
00076
00077
00079 template <class TropicalKind>
00080 struct TropicalSemiring
00081 : SemiringBase<TropicalSemiring<TropicalKind> >
00082 {
00083 bool operator == (const TropicalSemiring&) const;
00084 };
00085
00089 }
00090
00094
00095
00096
00097
00099 template<class TropicalKind, typename T>
00100 struct MetaElement<algebra::TropicalSemiring<TropicalKind> , T>
00101 : MetaElement<algebra::SemiringBase<algebra::TropicalSemiring<TropicalKind> >, T>
00102 {};
00103
00107 }
00108
00109
00110 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00111 # include <vaucanson/algebra/concept/tropical_semiring.hxx>
00112 # endif // VCSN_USE_INTERFACE_ONLY
00113
00114
00115 #endif // ! VCSN_ALGEBRA_CONCEPT_TROPICAL_SEMIRING_HH