Mackey  V3.3
A C++ library for computing RO(G) graded homology
MackeyFunctor.hpp
Go to the documentation of this file.
1 #pragma once
2 #include <string>
3 #include <iostream>
4 #include <numeric>
5 #include "Homology/Abelian.hpp"
6 
9 
10 namespace mackey
11 {
13  template<typename rank_t>
14  using iso_t = std::vector<dense_t<rank_t>>;
15 
17  template<typename rank_t>
18  class MackeyFunctor {
19  public:
20 
21  std::vector<AbelianGroup<rank_t>> levels;
22 
25 
28  std::vector<dense_t<rank_t>> tr;
29 
30  std::vector<dense_t<rank_t>> res;
31  std::vector<dense_t<rank_t>> act;
32 
33  std::string name;
34 
36  std::string print() const;
37 
39  void resize(int);
40 
42  MackeyFunctor() = default;
43 
45  MackeyFunctor(const rank_t&, int);
46 
48  bool operator==(const MackeyFunctor<rank_t>&) const;
49 
52 
54  std::pair<std::vector<iso_t<rank_t>>, std::vector<iso_t<rank_t>>> automorphisms() const;
55 
57  std::vector<MackeyFunctor<rank_t>> isomorphism_class() const;
58 
60  bool isomorphic(const std::vector<MackeyFunctor<rank_t>>& isoclass) const;
61 
64 
67 
71  void notation();
72  };
73 
75  template<typename rank_t>
76  std::ostream& operator<<(std::ostream&, const MackeyFunctor<rank_t>&);
77 }
78 #include "impl/MackeyFunctor.ipp"
Contains the class mackey::AbelianGroup.
A Mackey Functor.
Definition: MackeyFunctor.hpp:18
std::vector< dense_t< rank_t > > res
Same as transfers, but now using restrictions.
Definition: MackeyFunctor.hpp:30
void notation()
Computes name for certain Mackey functors in our universal notation.
bool operator==(const MackeyFunctor< rank_t > &) const
Compares two Mackey and returns 1 if equal.
MackeyFunctor< rank_t > apply(const iso_t< rank_t > &, const iso_t< rank_t > &) const
Applies given isomorphism to Mackey functor (the inverse of the isomorphism must also be provided)
MackeyFunctor()=default
Default constructor.
std::pair< std::vector< iso_t< rank_t > >, std::vector< iso_t< rank_t > > > automorphisms() const
Returns all automorphisms of a Mackey Functor and their inverses.
std::vector< AbelianGroup< rank_t > > levels
The levels starting at level 0 (see Homology for the labeling)
Definition: MackeyFunctor.hpp:21
std::string name
The name of the Mackey functor.
Definition: MackeyFunctor.hpp:33
void resize(int)
Resize all member variables.
std::vector< dense_t< rank_t > > act
Same as transfers, but now using the act group action.
Definition: MackeyFunctor.hpp:31
bool isomorphic(const std::vector< MackeyFunctor< rank_t >> &isoclass) const
Returns 1 if the Mackey functor belongs to the provided isomorphism class.
std::string print() const
Prints a Mackey functor ignoring the name.
std::vector< dense_t< rank_t > > tr
The transfers from level i to level i+1. They are encoded as matrices because the levels may be noncy...
Definition: MackeyFunctor.hpp:28
bool isomorphic(const MackeyFunctor< rank_t > &)
Returns 1 if the Mackey functors are isomorphic.
std::vector< MackeyFunctor< rank_t > > isomorphism_class() const
Returns the isomorphism class of a Mackey Functor.
MackeyFunctor(const rank_t &, int)
When there is only one generator at each level we can use this convenient constructor
Everything in this library is under this namespace.
Definition: Box.hpp:9
std::ostream & operator<<(std::ostream &, const Chains< rank_t, diff_t > &)
Prints chain complex.
std::vector< dense_t< rank_t > > iso_t
Isomorphism type of Mackey Functors.
Definition: MackeyFunctor.hpp:14