Mackey  V3.1
A C++ library for computing RO(G) graded homology
Mult_Graph_Identify.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "Mult_Graph.hpp"
3 
6 
7 namespace mackey {
8 
10  template<typename group_t>
11  class Mult_Graph_Identify : public MultGraph<group_t> {
12  typedef typename group_t::rank_t rank_t;
13  typedef typename group_t::diff_t diff_t;
14 
15  protected:
16 
18  void pass_product(const std::vector<int>&);
19 
21  void pass_division(const std::vector<int>&);
22 
23 
26 
27  bool can_do_more;
28 
31 
33  Mult_Graph_Identify(int level, const std::vector<int>& minsphere, const std::vector<int>& maxsphere, const std::vector<std::vector<int>>& basicIrreducibles);
34 
35  private:
36  void pass_identified();
37  std::vector<std::array<int, 3>> triples_to_be_done;
39  //void do_triples(int i, lock_t lock);
40 
41  std::vector<std::pair<int, int>> identified;
42  void delete_identified();
44  bool pass_triple(std::pair<int, int>, bool);
45  std::pair<int, std::vector<rank_t>> distinguish(int, const std::vector<rank_t>&);
46  rank_t determine_connection_identify(const Green<group_t>&, int, int, int, bool);
47  };
48 }
49 #include "impl/Mult_Graph_Identify.ipp"
mackey::Mult_Table
The Multiplication Table.
Definition: Mult_Table.hpp:13
mackey::Mult_Graph_Identify::pass_product
void pass_product(const std::vector< int > &)
Uses triple box products to possibly identify the products of given generators if identification fail...
mackey::Green
The result of multiplying generators in a Green functor.
Definition: Green.hpp:25
mackey::Mult_Table::level
int level
The Mackey functor level we are working in.
Definition: Mult_Table.hpp:28
mackey::Mult_Table::maxsphere
std::vector< int > maxsphere
The upper bound on the range of our spheres.
Definition: Mult_Table.hpp:39
mackey::Mult_Graph_Identify::Mult_Graph_Identify
Mult_Graph_Identify(int level, const std::vector< int > &minsphere, const std::vector< int > &maxsphere, const std::vector< std::vector< int >> &basicIrreducibles)
Uses the Multiplication Graph constructor.
mackey::Mult_Graph_Identify::Mult_Graph_Identify
Mult_Graph_Identify(Mult_Table< group_t > &M)
Uses the Multiplication Graph constructor.
mackey::Mult_Graph_Identify::pass_all_unidentified
void pass_all_unidentified()
Uses triple box products to possibly identify ALL instances where identification failed before....
mackey::Mult_Graph_Identify::can_do_more
bool can_do_more
1 if there are more triple products that can be computed for the disconnected generators
Definition: Mult_Graph_Identify.hpp:27
Mult_Graph.hpp
Contains the multiplication graph.
mackey
The namespace for everything that is group-independent.
Definition: Box.hpp:9
mackey::Mult_Graph_Identify
Provides extra identification methods using triple box products.
Definition: Mult_Graph_Identify.hpp:11
mackey::Mult_Table::minsphere
std::vector< int > minsphere
The lower bound on the range of our spheres.
Definition: Mult_Table.hpp:38
mackey::Mult_Table::basicIrreducibles
std::vector< std::vector< int > > basicIrreducibles
The basic irreducibles we use to produce the factorizations (eg Euler and orientation classes)
Definition: Mult_Table.hpp:41
mackey::MultGraph
The Multiplication Graph created from the Multiplication Table.
Definition: Mult_Graph.hpp:23
mackey::Mult_Graph_Identify::pass_division
void pass_division(const std::vector< int > &)
Uses triple box products to possibly identify the products landing in degrees of given generators if ...