Mackey  V3.3
A C++ library for computing RO(G) graded homology
Mult_Graph.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "Mult_Table.hpp"
4 
7 
8 
9 namespace mackey {
10 
11  namespace implementation_details {
12  struct compareElements;
13  }
14 
17 
22  template<typename group_t>
23  class MultGraph : public MultTable<group_t> {
24  typedef typename group_t::rank_t rank_t;
25  typedef typename group_t::diff_t diff_t;
26 
27  public:
29 
31  std::vector<int> getdegree(int i) const;
32 
34  Eigen::Matrix<int, 1, -1> getelement(int i) const;
35 
37  int getelementindex(const std::vector<int>& deg, const rank_t& elmnt) const;
38 
41 
43  template<typename ...Args>
44  MultGraph(Args&&...);
45 
46  protected:
47 
50  int deg;
51  rank_t basis;
53  };
54 
59 
65 
67  std::vector<rank_t> product_candidates(const Product_Element_Irreducible&);
68 
69  std::vector<rank_t> element;
70  std::vector<int> tracker;
71 
73  std::map<std::pair<int, rank_t>, int, implementation_details::compareElements> antielement;
74 
76  int isMultiple(int i, int j) const;
77 
78  private:
79  void make();
80  std::set<std::pair<int, int>> unidentified;
81  std::vector<std::vector<int>> zeroproduct;
82 
83  void initialize();
84 
86  void add_edges(int);
88  void pass_multiples();
89 
91  int find_and_add_element(int, const rank_t&);
92 
94  auto determine_connection(int, int, const Product_Element_Irreducible&);
95 
97  void connect(const rank_t&, int, int, int);
98 
99  std::vector<int> other_elements(int) const;
100 
102  bool injection(int, int) const;
103 
105  int order(int i) const;
106 
107  template<typename>
108  friend class MultIdentify;
109 
110  template<typename>
111  friend class MultConnectivity;
112  };
113 }
114 #include "impl/Mult_Graph.ipp"
Contains the classes mackey::bicolored_edge_with_id, mackey::MinLength, mackey::MinColorsLength.
Contains the classes mackey::MultTableData and mackey::MultTable.
A directed graph.
Definition: Graph.hpp:49
The result of multiplying generators in a Green functor.
Definition: Green.hpp:25
Finds the connectivity of the multiplication graph.
Definition: Mult_Connectivity.hpp:11
The Multiplication Graph created from the Multiplication Table.
Definition: Mult_Graph.hpp:23
std::vector< rank_t > element
An element (linear combination of generators) in each NonZeroHomology group of the table.
Definition: Mult_Graph.hpp:69
std::vector< int > tracker
Maps element index to degree index.
Definition: Mult_Graph.hpp:70
Graph< Neighborhood< size_t, bicolored_edge_with_id, std::vector > > graph_t
Definition: Mult_Graph.hpp:39
std::vector< int > getdegree(int i) const
Retrieve the degree of the i-th generator.
int isMultiple(int i, int j) const
Returns k if element[i]=k*element[j]. Returns 0 if element[a] is not a multiple of element[b].
int getelementindex(const std::vector< int > &deg, const rank_t &elmnt) const
Retrieve the element index of the given degree and element. Returns -1 if no such degree can be found...
std::map< std::pair< int, rank_t >, int, implementation_details::compareElements > antielement
Maps (degree_index, element)->element_index. The comparator first compares the degree_index and if eq...
Definition: Mult_Graph.hpp:73
Product_Element_Irreducible product_element_irreducible(int i, int j)
Returns the product of element and irreducible.
Eigen::Matrix< int, 1, -1 > getelement(int i) const
Retrieve the element the i-th generator corresponds to.
int number_of_generators
The number of generators in the multiplication graph.
Definition: Mult_Graph.hpp:28
Product_Element_Irreducible product_element_irreducible(int i, int j1, int j2)
Returns the product of element and 2 irreducibles.
MultGraph(Args &&...)
Constructs the multiplication graph given the maximum and minimum spheres and the basic irreducibles.
graph_t graph
Definition: Mult_Graph.hpp:40
std::vector< rank_t > product_candidates(const Product_Element_Irreducible &)
Produces all candidates for the given product.
Provides extra identification methods using triple box products.
Definition: Mult_Identify.hpp:11
Forms the multiplication table.
Definition: Mult_Table.hpp:29
Everything in this library is under this namespace.
Definition: Box.hpp:9
Stores the product of an element and a basic irreducible.
Definition: Mult_Graph.hpp:49
Green< group_t > G
The Green functor at the degree of the product.
Definition: Mult_Graph.hpp:52
rank_t basis
The product as a linear combination in G.
Definition: Mult_Graph.hpp:51
int deg
The degree of the product.
Definition: Mult_Graph.hpp:50