Mackey  V3.1
A C++ library for computing RO(G) graded homology
MultGraph< group_t > Class Template Reference

The Multiplication Graph created from the Multiplication Table. More...

#include <Mult_Graph.hpp>

Inheritance diagram for MultGraph< group_t >:
[legend]
Collaboration diagram for MultGraph< group_t >:
[legend]

Public Types

typedef Graph< Neighborhood< size_t, bicolored_edge_with_id, std::vector > > graph_t
 

Public Member Functions

std::vector< int > getdegree (int i) const
 Retrieve the degree of the i-th generator. More...
 
Eigen::Matrix< int, 1, -1 > getelement (int i) const
 Retrieve the element the i-th generator corresponds to. More...
 
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. More...
 
- Public Member Functions inherited from Mult_Table< group_t >
 Mult_Table ()=default
 Default constructor. More...
 
 Mult_Table (int, const std::vector< int > &, const std::vector< int > &, const std::vector< std::vector< int >> &)
 Constructs the multiplication table given the maximum and minimum spheres and the basic irreducibles. More...
 
int getdegreeindex (const std::vector< int > &) const
 Retrieve the degree index of the given degree. Returns -1 if no such degree can be found. More...
 

Public Attributes

int number_of_generators
 The number of generators in the multiplication graph. More...
 
graph_t graph
 

Protected Member Functions

 MultGraph (int, const std::vector< int > &, const std::vector< int > &, const std::vector< std::vector< int >> &)
 Constructs the multiplication graph given the maximum and minimum spheres and the basic irreducibles. More...
 
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]. More...
 
 MultGraph (Mult_Table< group_t > &)
 Constructs the multiplication graph given the multiplication table. More...
 
- Protected Member Functions inherited from Mult_Table< group_t >
std::vector< int > getsphere (const std::vector< int > &deg)
 Isolate sphere from the degree vector (i.e. get everything but first entry) More...
 
Green< group_t > triple_product (int, int, int)
 Multiplies the given index with two basic irreducibles. Only used by Mult_Graph_Identify when all other identification techniques fail. More...
 

Protected Attributes

std::vector< rank_t > element
 An element (linear combination of generators) in each NonZeroHomology group of the table. More...
 
std::vector< int > tracker
 Maps element index to degree index. More...
 
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 equal then compares the elements first to last entry. More...
 
- Protected Attributes inherited from Mult_Table< group_t >
int level
 The Mackey functor level we are working in. More...
 
std::map< std::vector< int >, IDGenerators< rank_t > > NonZeroHomology
 
std::vector< std::vector< int > > degree
 Maps each index of NonZeroHomology to the corresponding degree. More...
 
std::map< std::vector< int >, int > antidegree
 Maps each degree to the corresponding index of NonZeroHomology. More...
 
Eigen::Matrix< int, -1, -1 > index_product
 Maps each index and irreducible to the index of their product. More...
 
std::vector< int > minsphere
 The lower bound on the range of our spheres. More...
 
std::vector< int > maxsphere
 The upper bound on the range of our spheres. More...
 
std::vector< std::vector< int > > basicIrreducibles
 The basic irreducibles we use to produce the factorizations (eg Euler and orientation classes) More...
 
std::vector< std::vector< Green< group_t > > > Greens
 Each entry in the multiplication table. More...
 
std::map< std::array< int, 3 >, Green< group_t > > tripleGreens
 The tripleGreens set and used by Mult_Graph_Identify when all other identification techniques fail. More...
 

Friends

template<typename >
class Mult_Graph_Identify
 
template<typename >
class Mult_Graph_Connectivity
 

Detailed Description

template<typename group_t>
class Mackey::MultGraph< group_t >

The Multiplication Graph created from the Multiplication Table.

A node is an element in a nonzero homology group, a linear combination of the generators. At initialization we only use generators, but as products of generators might not be generators, after that initial stage we add multiples and linear combinations into the mix. We have a new index for the elements, and use various vectors and ordered maps to keep track of the element index and the degree index.

Member Typedef Documentation

◆ graph_t

typedef Graph<Neighborhood<size_t, bicolored_edge_with_id, std::vector> > graph_t

Constructor & Destructor Documentation

◆ MultGraph() [1/2]

MultGraph ( int  ,
const std::vector< int > &  ,
const std::vector< int > &  ,
const std::vector< std::vector< int >> &   
)
protected

Constructs the multiplication graph given the maximum and minimum spheres and the basic irreducibles.

◆ MultGraph() [2/2]

MultGraph ( Mult_Table< group_t > &  )
protected

Constructs the multiplication graph given the multiplication table.

Member Function Documentation

◆ getdegree()

std::vector<int> getdegree ( int  i) const

Retrieve the degree of the i-th generator.

◆ getelement()

Eigen::Matrix<int, 1, -1> getelement ( int  i) const

Retrieve the element the i-th generator corresponds to.

◆ getelementindex()

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.

◆ isMultiple()

int isMultiple ( int  i,
int  j 
) const
protected

Returns k if element[i]=k*element[j]. Returns 0 if element[a] is not a multiple of element[b].

Friends And Related Function Documentation

◆ Mult_Graph_Identify

friend class Mult_Graph_Identify
friend

◆ Mult_Graph_Connectivity

friend class Mult_Graph_Connectivity
friend

Member Data Documentation

◆ number_of_generators

int number_of_generators

The number of generators in the multiplication graph.

◆ graph

graph_t graph

◆ element

std::vector<rank_t> element
protected

An element (linear combination of generators) in each NonZeroHomology group of the table.

◆ tracker

std::vector<int> tracker
protected

Maps element index to degree index.

◆ antielement

std::map<std::pair<int, rank_t>, int, implementation_details::compareElements> antielement
protected

Maps (degree_index, element)->element_index. The comparator first compares the degree_index and if equal then compares the elements first to last entry.


The documentation for this class was generated from the following file: