Mackey  V3.3
A C++ library for computing RO(G) graded homology
Identify.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "Homology/Homology.hpp"
4 
7 
8 
9 namespace mackey {
10 
12  template<typename rank_t>
13  class IDGenerators {
14  public:
16  typedef Eigen::Matrix<typename rank_t::Scalar, -1, -1> matrix_t;
21 
23  IDGenerators()=default;
24 
27 
29  bool operator==(const IDGenerators<rank_t>&) const;
30  };
31 
33  template<typename rank_t>
34  std::vector<rank_t> id_candidates(const rank_t&, const IDGenerators<rank_t>&, const IDGenerators<rank_t>&);
35 
36 
38  template<typename rank_t>
39  bool distinguish(const std::vector<rank_t>&, const IDGenerators<rank_t>&);
40 
41 
43  namespace internal {
45  template<typename group_t>
47  typedef typename group_t::rank_t rank_t;
48  typedef typename group_t::diff_t diff_t;
49  public:
52  private:
53  rank_t rank_level;
55  IDGeneratorCompute() = default;
56 
57  //Identifies the generators in case of non cyclic homology.
58  void id(const Junction<rank_t, diff_t>&);
59 
61  template<typename>
62  friend class IDGenerators;
63 
65  template<typename, typename>
66  friend class TableInput;
67 
69  template<typename>
70  friend class GreenCompute;
71 
73  template<typename>
74  friend class MasseyCompute;
75 
76  };
77  }
78 }
79 #include "impl/Identify.ipp"
Contains the class mackey::Homology.
Contains the class mackey::MackeyFunctor.
The Homology of a Junction.
Definition: Homology.hpp:19
Two levels of a Mackey functor, used for identification.
Definition: Identify.hpp:13
AbelianGroup< rank_t > group
The homology group at our level.
Definition: Identify.hpp:17
matrix_t tr
The transfer from one level lower to our level.
Definition: Identify.hpp:19
Eigen::Matrix< typename rank_t::Scalar, -1, -1 > matrix_t
The matrix type of the transfer and restriction matrices.
Definition: Identify.hpp:16
bool operator==(const IDGenerators< rank_t > &) const
Standard equality tests if all group, group_lower, tr, res are equal.
matrix_t res
The restriction from our level to one lower.
Definition: Identify.hpp:20
MackeyFunctor< rank_t > getMackey() const
Get a two-level Mackey functor out of this data.
IDGenerators()=default
Default Constructor.
AbelianGroup< rank_t > group_lower
The homology group at one level lower.
Definition: Identify.hpp:18
A Mackey Functor.
Definition: MackeyFunctor.hpp:18
Computes the product of generators in a Green functor.
Definition: Green.hpp:119
Computes homology and identification data.
Definition: Identify.hpp:46
IDGeneratorCompute(int, const Junction< rank_t, diff_t > &, bool=0)
Computes the identification data given level, Junction at the bottom, and optionally if we want to st...
friend class TableInput
Forms the input of the Multiplication Table.
Definition: Identify.hpp:66
IDGenerators< rank_t > ID
The identification data.
Definition: Identify.hpp:50
Computes Massey products and their indeterminacy.
Definition: Massey.hpp:37
Everything in this library is under this namespace.
Definition: Box.hpp:9
bool distinguish(const std::vector< rank_t > &, const IDGenerators< rank_t > &)
Find if given elements can all be distinguished i.e. they have pairwise disjoint candidate sets.
std::vector< rank_t > id_candidates(const rank_t &, const IDGenerators< rank_t > &, const IDGenerators< rank_t > &)
Use the ID data to identify all possible candidates for an element.