00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef DJC_COROPA_LIBALGEBRAH_SEEN
00019 #define DJC_COROPA_LIBALGEBRAH_SEEN
00020
00021 #include <iostream>
00022 #include <sstream>
00023 #include <string>
00024 #include <deque>
00025 #include <vector>
00026 #include <map>
00027 #include <utility>
00028 #include <algorithm>
00029 #include <cmath>
00030 #include "implimentation_types.h"
00031 #include <stdlib.h>
00032 #include <cassert>
00033 #include <boost/thread/shared_mutex.hpp>
00034 #include <boost/thread/recursive_mutex.hpp>
00035 #include <boost/thread/locks.hpp>
00036
00038
00046 namespace alg
00047 {
00048
00049
00050
00051 #define __DECLARE_BINARY_OPERATOR(T1, NEWOP, OLDOP, T2) \
00052 T1 operator NEWOP(const T2& rhs) const \
00053 { T1 result(*this); return result OLDOP rhs; }
00054
00055 #define __DECLARE_UNARY_OPERATOR(NEWT, NEWOP, OLDOP, OLDT) \
00056 NEWT operator NEWOP(void) const \
00057 { return OLDT::operator OLDOP (); }
00058
00059
00060
00062
00064 template<class BASIS, class MAP = typename BASIS::MAP>
00065 class sparse_vector;
00067 template<class BASIS>
00068 class algebra;
00070 template<typename SCA, DEG n_letters, DEG max_degree = 0>
00071 class tensor_basis;
00073 template<typename SCA, typename RAT,
00074 DEG n_letters, DEG max_degree = 0>
00075 class free_tensor_basis;
00077 template<typename SCA, typename RAT,
00078 DEG n_letters, DEG max_degree = 0>
00079 class shuffle_tensor_basis;
00081 template<typename SCA, typename RAT,
00082 DEG n_letters, DEG max_degree = 0>
00083 class free_tensor;
00085 template<typename SCA, typename RAT,
00086 DEG n_letters, DEG max_degree = 0>
00087 class shuffle_tensor;
00089 class hall_basis;
00091 template<typename SCA, typename RAT,
00092 DEG n_letters, DEG max_degree = 0>
00093 class lie_basis;
00095 template<typename SCA, typename RAT,
00096 DEG n_letters, DEG max_degree = 0>
00097 class lie;
00099 template<typename SCA, typename RAT,
00100 DEG n_letters, DEG max_degree = 0>
00101 class maps;
00103 template<typename SCA, typename RAT,
00104 DEG n_letters, DEG max_degree>
00105 class cbh;
00107 template<typename SCA, typename RAT>
00108 class poly_basis;
00110 template<typename SCA, typename RAT>
00111 class poly;
00112
00113
00115 template<typename SCA, DEG n_letters, DEG max_degree = 0>
00116 class monomial_basis;
00118 template<typename SCA, typename RAT, DEG n_letters, DEG max_degree = 0>
00119 class free_monomial_basis;
00121 template<typename SCA, typename RAT, DEG n_letters, DEG max_degree = 0>
00122 class multi_polynomial;
00123
00124
00126 template<typename SCA, typename RAT, DEG n_letters, DEG max_degree = 0>
00127 class poly_lie_basis;
00128
00130 template<typename SCA, typename RAT, DEG n_letters, DEG max_degree = 0>
00131 class poly_lie;
00132
00133 #include "sparse_vector.h"
00134 #include "algebra.h"
00135 #include "tensor_basis.h"
00136 #include "tensor.h"
00137 #include "lie_basis.h"
00138 #include "lie.h"
00139 #include "utils.h"
00140 #include "poly_basis.h"
00141 #include "polynomials.h"
00142 #include "monomial_basis.h"
00143 #include "multi_polynomial.h"
00144 #include "poly_lie_basis.h"
00145 #include "poly_lie.h"
00146
00147
00148 #undef __DECLARE_UNARY_OPERATOR
00149 #undef __DECLARE_BINARY_OPERATOR
00150
00151
00152 }
00153
00154
00155
00156 #endif // DJC_COROPA_LIBALGEBRAH_SEEN
00157
00158