# vcsn::algebra Namespace Reference
[Algebra, Alphabet]

Namespace for algebra constructs in Vaucanson. More...

## Classes

struct | AlphabetSetBase
| Base class for structural elements of alphabets. More...
struct | alphabet_traits
| Trait for virtual types of structural elements for alphabets. More...
struct | CyclicSemiring
| Structural element that denotes tropical semiring. More...
struct | FreeMonoidBase
| Structural element for free monoid. More...
struct | FreeMonoidProduct
| Implementation of a monoid which is a product of two free monoids. More...
struct | FreeMonoidProductBase
| Structural element for free monoid product. More...
struct | MonoidBase
| `The` base class of all structures that are monoids. More...
struct | word_traits
| Trait for virtual types of structural elements for words. More...
struct | NumericalSemiring
| The set of semirings implemented with usual operations (+, *). More...
struct | mul_kind
| Empty class used as static information to denote the kind of internal operation of a semigroup. More...
struct | add_kind
| Empty class used as static information to denote the kind of internal operation of a semigroup. More...
struct | SemigroupBase
| Base class of all structures that are semigroups. More...
struct | SemiringBase
| Base class for all structures that are semirings. More...
struct | SeriesBase
| Structural element of series K<A*> from a free monoid A* to a semiring K. More...
struct | series_traits
| Meta information about series. More...
struct | TropicalMin
| Static information about the kind of tropical we are confronted with. More...
struct | TropicalMax
| Static information about the kind of tropical we are confronted with. More...
struct | TropicalSemiring
| Structural element that denotes tropical semiring. More...
struct | alphabet_traits< AlphabetSet< L >, std::set< L > >
| Meta information about the mixing of AlphabetSet with std::set. More...
struct | AlphabetSet
| Static implementation of alphabet structural element. More...
class | AlphabetDecorator
| Decorate a given alphabet implementation with meta-symbols. More...
struct | alphabet_traits< AlphabetSet< L >, AlphabetDecorator< L, T > >
| Meta information about the mixing of AlphabetSet with AlphabetDecorator. More...
struct | FreeMonoid
| Implementation of a free monoid which aggregates its alphabet. More...
struct | word_traits< FreeMonoid< A >, std::basic_string< typename A::letter_t > >
| Meta information about the mixing of FreeMonoid with std::basic_string. More...
class | TRationalNumber
| Rational numbers class. More...
struct | BinaryOp
| BinaryOp is a generic class which symbolised binary operator. More...
struct | UnaryOp
| UnaryOp is a generic class which symbolised binary operator. More...
struct | Value
| Value is a generic class which symbolised leaf of AST. More...
struct | GenericMatcher
| GenericMatcher manages the dispatch of pattern matching. More...
interface | semiring_virtual
| Virtual pure class used by bison to deal with vaucanson's templated structures. More...
interface | krat_exp_virtual
| Virtual pure class used by bison to deal with vaucanson's templated structures. More...
struct | krat_exp_proxy
| Proxy over Vaucanson Element. More...
struct | semiring_proxy
| Proxy over Vaucanson Semiring. More...
struct | DispatchFunction< rat::exp< M, W > >
| Classical dispatch function for rat::exp. More...
struct | Series
| This is the final class for series. More...

## Functions

template<typename S , typename L >
L | op_parse (const AlphabetSetBase< S > &s, const std::string &, size_t &)
| Implementation of a parser to return a letter.
template<typename S , typename St , typename T >
St & | op_rout (const AlphabetSetBase< S > &s, St &st, const T &a)
| Implementation of generic stream output operator for alphabets.
template<typename S , typename T , typename L >
bool | op_letter_equality (const AlphabetSetBase< S > &s, const T &a, L lhs, L rhs)
| Implementation of generic letter equality modulo meta-characters.
template<typename S , typename T >
bool | op_can_choose_non_starable (const algebra::SemiringBase< S > &set, SELECTOR(T))
| Whether a non-starable `Element` can be chosen from a Semiring.
template<typename S , typename T >
Element< S, T > | op_choose_starable (const algebra::SemiringBase< S > &set, SELECTOR(T))
| A random starable element in the set.
template<typename S , typename T >
Element< S, T > | op_choose_non_starable (const algebra::SemiringBase< S > &set, SELECTOR(T))
| A random non-starable element in the set.
template<typename S , typename St , typename T >
St & | op_rout (const algebra::SeriesBase< S > &s, St &st, const T &se)
| Implementation of generic stream output operator for series.
boost::tuple< unsigned int, int, int > | ext_gcd (unsigned int a, unsigned int b)
| This algorithm computes the extended gcd of a and b.
template<typename W , typename M , typename Tm , typename Tw >
bool | op_contains (const algebra::Series< W, M > &, const rat::exp< Tm, Tw > &)
template<class S , class T >
std::pair< bool, std::string > | parse (const std::string &from, Element< S, T > &exp, bool lex_trace=false, bool parse_trace=false)
| Parse a rational expression.

## Detailed Description

Namespace for algebra constructs in Vaucanson.

The algebra namespace in Vaucanson contains all the compounds which are needed to manipulate algebraic structures. Both structural elements (e.g. Alphabets, Monoids, etc.) and implementations of those elements (polynoms, rational expressions, etc.) are presents in this namespace.

See also:
  - Algebra
  - `AlphabetSet`
  - `MonoidBase`
  - `FreeMonoid`
  - `FreeMonoidProduct`
  - `SemigroupBase`
  - `NumericalSemiring`
  - `TropicalSemiring`
  - `Series`

## Function Documentation

boost::tuple<unsigned int, int, int> vcsn::algebra::ext_gcd | ( | unsigned int | a,
|  | unsigned int | b |
| ) |  |  | `[inline]`

This algorithm computes the extended gcd of a and b.

It solves the equality ax + by = d with d = gcd (a, b). If d = 1, then a and b are coprimes and x is the multiplicative inverse of a modulo b, and y is the multiplicative inverse of b modulo a.

Returns:
  Returns a boost tuple corresponding to the tuple (d, x, y).

Definition at line 41 of file implementation/semiring/cyclic_semiring.hxx.

References std::swap().

bool op_contains | ( | const algebra::Series< W, M > & | ,
|  | const rat::exp< Tm, Tw > & |  |
| ) |  |  |

Bug:
  FIXME Operators in krat.hxx are of the form:

        template<typename S, typename M ...>
          ... op(Series<S>& series, M& monoid, ...)

and should be instead:

        template<typename S, typename M ...>
          ... op(Series<S>& series, Monoid<M>& monoid, ...)

Definition at line 60 of file krat.hxx.