Mackey  V3.3
A C++ library for computing RO(G) graded homology
BC4S2.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "Space.hpp"
3 #include "Utility/Generators.hpp"
4 
7 
8 namespace mackey {
9 
12  template<typename group_t>
13  class BC4S2 : public Space<BC4S2<group_t>, group_t> {
14 
15  public:
18  BC4S2(int dimension);
19 
20  private:
21  typedef typename Space<BC4S2<group_t>, group_t>::cell_coefficient_pair ccp;
22  typedef typename std::vector<ccp> boundary_t;
23  typedef typename Space<BC4S2<group_t>, group_t>::equivariant_index eq_t;
24  typedef typename Space<BC4S2<group_t>, group_t>::nonequivariant_index neq_t;
25  typedef typename group_t::rank_t rank_t;
26  typedef typename group_t::diff_t diff_t;
27 
28  struct cell_expanded {
29  std::vector<char> cell;
30  cell_expanded action() const;
32  bool operator==(const cell_expanded& c) const;
33  bool isfaceof(const cell_expanded& c) const;
34  };
35  struct cell_compressed {
36  std::vector<uint32_t> cell;
37  bool operator==(const cell_compressed& c) const;
38  };
39 
40  const int dimension;
41  std::vector<std::vector<cell_compressed>> cells_equivariant;
42  std::vector<std::vector<std::vector<int>>> cuts;
43  std::vector<std::vector<cell_expanded>> cells_nonequivariant;
44 
45  int getrank(const cell_compressed& v) const;
46  rank_t getrank(const std::vector<cell_compressed>& v) const;
47 
48  void setcells();
49  void setexpandedcells();
50 
51  std::vector<cell_expanded> getfaces(int dim, eq_t k);
52 
53  cell_expanded getexpandedcell(int dim, eq_t i) const;
54 
55  int64_t estimate_nonzero_entries(int i);
56  auto boundary(int dim, eq_t k);
57 
58  template<typename T>
59  std::pair<cell_compressed, int> erase_by_criterion(const cell_compressed& v, const T& criterion) const;
60 
61  std::array<std::pair<cell_compressed, int>, 2> quickcut(const cell_compressed& v) const;
62  std::pair<std::vector<cell_compressed>, std::vector<std::vector<int>>> quickcut(const std::vector<cell_compressed>& v) const;
63 
65  friend class Space<BC4S2<group_t>, group_t>;
66  };
67 
68 }
69 #include "impl/BC4S2.ipp"
Contains classes for generating permutations, combinations and a factory for such classes.
Contains the class mackey::Space.
The space up to given dimension.
Definition: BC4S2.hpp:13
BC4S2(int dimension)
Constructs BC4S2 as a cellular equivariant space up to given dimension.
An equivariant space with an equivariant cellular decomposition.
Definition: Space.hpp:24
nonequivariant_index action(nonequivariant_index n, int dimension) const
Produces g*n given cell n.
Everything in this library is under this namespace.
Definition: Box.hpp:9