Mackey  V3.3
A C++ library for computing RO(G) graded homology
Massey.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "Green.hpp"
3 
6 
7 namespace mackey {
8 
10  template<typename group_t>
11  class Massey {
12  typedef typename group_t::rank_t rank_t;
13  typedef typename group_t::diff_t diff_t;
14 
15  public:
16  rank_t basis;
17  rank_t normalBasis;
19  std::array<rank_t, 2> indeterminacy;
21  bool exists;
23  bool isZero;
24 
26  Massey();
27 
29  Massey(const chains_t<group_t>&, const chains_t<group_t>&, const chains_t<group_t>&, int, int, int, int, int, int, int, bool);
30  };
31 
32 
33  namespace internal
34  {
36  template<typename group_t>
37  class MasseyCompute {
38  typedef typename group_t::rank_t rank_t;
39  typedef typename group_t::diff_t diff_t;
40 
41  Massey<group_t> Mass;
42 
43  const chains_t<group_t>& C, D, E;
44  gen_t<rank_t, diff_t> resgenC, resgenD, resgenE, boundaryCD, boundaryDE;
45 
46  chains_t<group_t> BoxCD, BoxDE;
48 
50 
51  std::vector<std::vector<int64_t>> CD_detailedrank, DE_detailedrank;
52  std::vector<int64_t> CD_E_detailedrank, C_DE_detailedrank;
53 
54  const int level, degreeC, degreeD, degreeE, selectC, selectD, selectE;
55  Eigen::PermutationMatrix<-1, -1, int64_t> BoxDE_to_BoxCD;
56 
57  typedef typename mackey::Tensor<chains_t<group_t>, std::vector<std::vector<int64_t>>> tensortype;
58  gen_t<rank_t, diff_t> box_boundary(const chains_t<group_t>&, const chains_t<group_t>&, const tensortype&, const gen_t<rank_t, diff_t>&, const gen_t<rank_t, diff_t>&, int, int);
59  gen_t<rank_t, diff_t> product_bottom(const chains_t<group_t>&, const chains_t<group_t>&, const std::vector<int64_t>&, const gen_t<rank_t, diff_t>&, const gen_t<rank_t, diff_t>&, int, int);
60 
61  MasseyCompute(const chains_t<group_t>&, const chains_t<group_t>&, const chains_t<group_t>&, int, int, int, int, int, int, int, bool);
62 
63  void getGens();
64  void box();
65  void compute();
66  void indeterminacy();
67 
69  template<typename>
70  friend class mackey::Massey;
71  };
72  }
73 }
74 #include "impl/Massey.ipp"
Contains the classes mackey::Green, mackey::internal::GreenCompute, mackey::internal::ChainsLevelGen,...
A chain complex.
Definition: Chains.hpp:31
Two levels of a Mackey functor, used for identification.
Definition: Identify.hpp:13
Stores Massey products and their indeterminacy.
Definition: Massey.hpp:11
AbelianGroup< rank_t > group
The homology group the product lives in.
Definition: Massey.hpp:18
IDGenerators< rank_t > boxID
Identification data for the generators of the Massey product.
Definition: Massey.hpp:20
rank_t basis
Expresses the Massey product as a linear combination of the generators of the box product.
Definition: Massey.hpp:16
bool isZero
If the Massey product is 0.
Definition: Massey.hpp:23
Massey(const chains_t< group_t > &, const chains_t< group_t > &, const chains_t< group_t > &, int, int, int, int, int, int, int, bool)
Compute Massey product given level, generator degrees and selections.
Massey()
Set 0 by default.
rank_t normalBasis
Same as basis, but normalized.
Definition: Massey.hpp:17
bool exists
If the Massey product exists.
Definition: Massey.hpp:21
bool noIndeterminacy
If the Massey product has no indeterminacy.
Definition: Massey.hpp:22
std::array< rank_t, 2 > indeterminacy
The indeterminacy of the Massey product, stored as two bases.
Definition: Massey.hpp:19
Tensor product of chain complexes and more.
Definition: Box.hpp:43
Computes homology and identification data.
Definition: Identify.hpp:46
Computes Massey products and their indeterminacy.
Definition: Massey.hpp:37
Everything in this library is under this namespace.
Definition: Box.hpp:9
typename Homology< rank_t, diff_t >::gen_t gen_t
Type of generators in homology.
Definition: Aliases.hpp:72