Template Struct DGVectorSpace

Struct Documentation

template<typename MT>
struct DGVectorSpace

a class for a differential graded vector space.

This encapsulates both chain and cochain complex constructions

degree is the degree of the differential: -1 for chain complexes (default) +1 for cochain complexes

differential holds the differential maps

We store maps starting on the edge (-1,0) (-1) &#8212; (0) &#8212; (1) &#8212; (2) &#8212; … This map is 0 in the case of standard chain/cochain complexes but can be non-zero for augmented chain/cochain complexes

TODO: need to handle +1 boundary in maxdim

Public Functions

inline MT &operator[](ssize_t k)

Access maps in various dimensions

if degree is +1 (cohomolgical type), then lowest map index is -1 -[-1]-> * -[0]-> * -[1]-> …

if degree is -1 (homological type) then lowest map index is 0 <-[0]- * <-[1]- * <-[2]- …

inline const MT &operator[](ssize_t k) const
inline DGVectorSpace()
inline DGVectorSpace(size_t maxd, int deg = -1)

Construct a DGVector space with maxd dimensions

inline DGVectorSpace(const std::vector<MT> &diff, int deg = -1)

Construct a DGVector space explicitly from differentials

template<typename CpxT>
inline DGVectorSpace(const CpxT &X, const int deg = -1, const bool augmented = false)
inline ssize_t maxdim() const
inline size_t dim(ssize_t k) const
inline void permute_basis(ssize_t k, const std::vector<size_t> &perm)
inline void permute_basis(const std::vector<std::vector<size_t>> &perm)
inline void ipermute_basis(ssize_t k, const std::vector<size_t> &perm)
inline void ipermute_basis(const std::vector<std::vector<size_t>> &perm)
inline bool is_differential(size_t k)

checks that d_{k-degree} d_k = 0

Public Members

int degree
std::vector<MT> differential