The ChainCon Software (Release 0.03)
Functions
ssquaressim.h File Reference

Computation of the Steenrod squares for simplicial cells. More...

#include <istream>
#include <ostream>
#include <vector>
#include "chomp/system/config.h"
#include "chomp/struct/hashsets.h"
#include "chomp/struct/multitab.h"
#include "chaincon/chain.h"
#include "chaincon/tensor.h"
#include "chaincon/linmap.h"
#include "chaincon/pair.h"
#include "chaincon/prodcell.h"
#include "chaincon/ez_aw.h"
#include "chaincon/ez_shi.h"

Go to the source code of this file.

Functions

template<class ProdCellT , class CoefT >
void swapProduct (const tChain< ProdCellT, CoefT > &input, tChain< ProdCellT, CoefT > &result)
 Swaps the components of all of the product cells in the chain. More...
 
template<class CellT , class ProdCellT , class CoefT >
void computeDiagonal (const tChain< CellT, CoefT > &x, tChain< ProdCellT, CoefT > &result)
 Computes the diagonal of a chain. More...
 
template<class CellT , class ProdCellT , class CoefT >
void flattenProduct (const tChain< ProdCellT, CoefT > &chain, tChain< CellT, CoefT > &result)
 Converts a chain of cells encoded as trivial product cells to the chain of the actual cells. More...
 
template<class Cell1T , class Cell2T , class ProdCell1T , class ProdCell2T , class CoefT >
void flattenProduct (const tTensor< ProdCell1T, ProdCell2T, CoefT > &tensor, tTensor< Cell1T, Cell2T, CoefT > &result)
 Converts a chain of cells encoded as trivial product cells to the chain of the actual cells. More...
 
template<class SimCellT , class CoefT >
void ssquares1 (const std::vector< std::vector< SimCellT > > &cohomRepresentants, const tLinMap< SimCellT, SimCellT, CoefT > &pi, const tLinMap< SimCellT, SimCellT, CoefT > &incl, chomp::homology::hashedset< tPair< SimCellT, int > > &cellsSquares, chomp::homology::multitable< tChain< SimCellT, CoefT > > &squareValues)
 Computes the Steenrod squares, given a minimal model and cohomology representants. More...
 
int ssquare_S (int k, const std::vector< int > &ii, int n, int m)
 Computes the k-th value of the index S in the sum ranges defined in Corollary 3.2 in [CombSteenSq], pg. More...
 
template<class SimCellT >
SimCellT ssquare_face (const SimCellT &xCell, const std::vector< int > &ii, int n, int m, bool right_hand_side)
 Computes the faces of a simplicial cell. More...
 
template<class SimCellT , class CoefT >
CoefT ssquare (int i, int j, const SimCellT &cCell, const tChain< SimCellT, CoefT > &xChain, const tLinMap< SimCellT, SimCellT, CoefT > &pi)
 Computes a single Steenrod square. More...
 
template<class SimCellT , class CoefT >
void ssquares2 (const std::vector< std::vector< SimCellT > > &cohomRepresentants, const tLinMap< SimCellT, SimCellT, CoefT > &pi, const tLinMap< SimCellT, SimCellT, CoefT > &incl, chomp::homology::hashedset< tPair< SimCellT, int > > &cellsSquares, chomp::homology::multitable< tChain< SimCellT, CoefT > > &squareValues)
 Computes the Steenrod squares, given a minimal model and cohomology representants. More...
 
template<class SimCellT , class CoefT >
void ssquares (const std::vector< std::vector< SimCellT > > &cohomRepresentants, const tLinMap< SimCellT, SimCellT, CoefT > &pi, const tLinMap< SimCellT, SimCellT, CoefT > &incl, chomp::homology::hashedset< tPair< SimCellT, int > > &cellsSquares, chomp::homology::multitable< tChain< SimCellT, CoefT > > &squareValues)
 Computes the Steenrod squares, given a minimal model and cohomology representants. More...
 

Detailed Description

Computation of the Steenrod squares for simplicial cells.

Definition in file ssquaressim.h.

Function Documentation

◆ computeDiagonal()

template<class CellT , class ProdCellT , class CoefT >
void computeDiagonal ( const tChain< CellT, CoefT > &  x,
tChain< ProdCellT, CoefT > &  result 
)
inline

Computes the diagonal of a chain.

This corresponds to "(x,x)" in [CombSteenSq], pg. 95, formula (3).

Definition at line 78 of file ssquaressim.h.

Referenced by ssquares1().

◆ flattenProduct() [1/2]

template<class CellT , class ProdCellT , class CoefT >
void flattenProduct ( const tChain< ProdCellT, CoefT > &  chain,
tChain< CellT, CoefT > &  result 
)
inline

Converts a chain of cells encoded as trivial product cells to the chain of the actual cells.

Definition at line 94 of file ssquaressim.h.

Referenced by ssquares1().

◆ flattenProduct() [2/2]

template<class Cell1T , class Cell2T , class ProdCell1T , class ProdCell2T , class CoefT >
void flattenProduct ( const tTensor< ProdCell1T, ProdCell2T, CoefT > &  tensor,
tTensor< Cell1T, Cell2T, CoefT > &  result 
)
inline

Converts a chain of cells encoded as trivial product cells to the chain of the actual cells.

Definition at line 111 of file ssquaressim.h.

References ssquares1().

◆ ssquare()

template<class SimCellT , class CoefT >
CoefT ssquare ( int  i,
int  j,
const SimCellT &  cCell,
const tChain< SimCellT, CoefT > &  xChain,
const tLinMap< SimCellT, SimCellT, CoefT > &  pi 
)
inline

Computes a single Steenrod square.

Follows the formulas in Corollary 3.2 in [CombSteenSq], pg. 97.

Definition at line 357 of file ssquaressim.h.

References ssquare_face(), ssquare_S(), and ssquares2().

Referenced by ssquares2().

◆ ssquare_face()

template<class SimCellT >
SimCellT ssquare_face ( const SimCellT &  xCell,
const std::vector< int > &  ii,
int  n,
int  m,
bool  right_hand_side 
)
inline

Computes the faces of a simplicial cell.

The faces appear in the formulas in Corollary 3.2 in [CombSteenSq], pg. 97.

Definition at line 285 of file ssquaressim.h.

Referenced by ssquare().

◆ ssquare_S()

int ssquare_S ( int  k,
const std::vector< int > &  ii,
int  n,
int  m 
)
inline

Computes the k-th value of the index S in the sum ranges defined in Corollary 3.2 in [CombSteenSq], pg.

Definition at line 258 of file ssquaressim.h.

Referenced by ssquare().

◆ ssquares()

template<class SimCellT , class CoefT >
void ssquares ( const std::vector< std::vector< SimCellT > > &  cohomRepresentants,
const tLinMap< SimCellT, SimCellT, CoefT > &  pi,
const tLinMap< SimCellT, SimCellT, CoefT > &  incl,
chomp::homology::hashedset< tPair< SimCellT, int > > &  cellsSquares,
chomp::homology::multitable< tChain< SimCellT, CoefT > > &  squareValues 
)
inline

Computes the Steenrod squares, given a minimal model and cohomology representants.

For cells of simplicial type. Please, make sure to include the appropriate header file with the definition of the Alexander-Whitney diagonal for the cells in use before including the header file containing this procedure. Follows Corollary 3.2 in [CombSteenSq], pg. 97.

Definition at line 537 of file ssquaressim.h.

References ssquares2().

Referenced by ssquares2().

◆ ssquares1()

template<class SimCellT , class CoefT >
void ssquares1 ( const std::vector< std::vector< SimCellT > > &  cohomRepresentants,
const tLinMap< SimCellT, SimCellT, CoefT > &  pi,
const tLinMap< SimCellT, SimCellT, CoefT > &  incl,
chomp::homology::hashedset< tPair< SimCellT, int > > &  cellsSquares,
chomp::homology::multitable< tChain< SimCellT, CoefT > > &  squareValues 
)
inline

Computes the Steenrod squares, given a minimal model and cohomology representants.

For cells of simplicial type. Please, make sure to include the appropriate header file with the definition of the Alexander-Whitney diagonal for the cells in use before including the header file containing this procedure. Follows Equation (3) in [CombSteenSq], pg. 95. Warning: This procedure is very inefficient. Please, use "ssquares2" instead.

Definition at line 139 of file ssquaressim.h.

References computeDiagonal(), EZ_AW(), EZ_SHI(), flattenProduct(), and swapProduct().

Referenced by flattenProduct().

◆ ssquares2()

template<class SimCellT , class CoefT >
void ssquares2 ( const std::vector< std::vector< SimCellT > > &  cohomRepresentants,
const tLinMap< SimCellT, SimCellT, CoefT > &  pi,
const tLinMap< SimCellT, SimCellT, CoefT > &  incl,
chomp::homology::hashedset< tPair< SimCellT, int > > &  cellsSquares,
chomp::homology::multitable< tChain< SimCellT, CoefT > > &  squareValues 
)
inline

Computes the Steenrod squares, given a minimal model and cohomology representants.

For cells of simplicial type. Please, make sure to include the appropriate header file with the definition of the Alexander-Whitney diagonal for the cells in use before including the header file containing this procedure. Follows the formulas in Corollary 3.2 in [CombSteenSq], pg. 97.

Definition at line 462 of file ssquaressim.h.

References ssquare(), and ssquares().

Referenced by ssquare(), and ssquares().

◆ swapProduct()

template<class ProdCellT , class CoefT >
void swapProduct ( const tChain< ProdCellT, CoefT > &  input,
tChain< ProdCellT, CoefT > &  result 
)
inline

Swaps the components of all of the product cells in the chain.

Adds the result to the resulting chain (which is assumed to be empty). Corresponds to the operator "t" in [CombSteenSq], pg. 94, for p=2.

Definition at line 62 of file ssquaressim.h.

Referenced by ssquares1().