Mackey  V3.3
A C++ library for computing RO(G) graded homology
From Math to Code

In a nutshell

The aim of this library is to solve the following problem:
Given inputs:

  • \(G\) = the ambient group eg \(C_4\).
  • \(R\) = the base PID with trivial \(G\)-action eg \(\mathbf Z\) or \(\mathbf Z/p\).
  • \(X\) = a \(G\)-CW space eg a point or \(B_{C_4}\Sigma_2\).
  • The bottom level chain complexes \(C_*^e(S^V)\) corresponding to finite \(G\)-CW decompositions of \(S^V\) where \(V\) ranges over all real non-virtual \(G\)-reps.
  • The bottom level chain complex \(C_*^e(X)\) corresponding to a finite \(G\)-CW decomposition of \(X\).

produce output:

  • The \(RO(G)\) graded homology \(H_{\star}(X)\) and cohomology \(H^{\star}(X)\) as Mackey functor modules over the Green functor \(H_{\star}\).

The library can also compute Massey products \(\langle a,b,c\rangle\) for \(a,b,c\in H_{\star}\) with \(ab=bc=0\).

Note
  • \(X=B_{C_4}\Sigma_2\) is an infinite dimensional CW-complex so we replace it by the finite skeleta \(B_{C_4}\Sigma_2(j)\).
  • Computing the multiplicative structure (including Massey products) involves comparing generators from homotopy equivalent chain complexes. This is not always possible without an explicit chain homotopy (see A caveat).

Briefly

What enables this library to work is that free Mackey functors are determined on their bottom level by transferring:

  • By a "free Mackey functor" we mean a finite sum of the form:

    \[\oplus_H\underline{R[G/H]}\]

    where \(H\) ranges over (conjugacy classes of) subgroups of \(G\) (we allow repetitions).
  • For a free Mackey functor \(M\) we have \(M(G/H)=M(G/e)^H\).

An application of this: box products of free Mackey functors are tensor products on the bottom level. This is not true for the higher levels, however we can obtain those by transferring. The same applies to duals.

Our approach that starts with \(C_*^e(X), C_*^e(S^V)\) and computes \(H_{\star}(X)\) can be summarized in the following diagram (in the case of \(G=C_4\)):





Note
Cohomology can be computed in the same way by first dualizing \(C_*^e(X)\) to get \(C^*_e(X)\). So in what follows we will only discuss the homology case.

To fully computerize this approach we make the following modifications:

  • We replace all chain complex differentials with matrices.
  • Tensor/dual/transfer/homology all correspond to operations on matrices. For example homology is computed via the Smith Normal Form algorithm.
  • The generators of each level of \(H_{\star}(X)\) are reductions of explicit elements on \(C_{\star}(X)\). This means that we can compute the effect of transfer/restriction/Weyl group action on them (by performing the computation on \(C_{\star}(X)\)), giving us the Mackey functor structure of \(H_{\star}(X)\).

We multiply the additive generators of \(H_{\star}\) by performing the tensor/cross product on the chain level. This involves restricting and then inverting restrictions (which is possible since we have free Mackey functors). Diagrammatically:





We similarly compute Massey products in \(H_{\star}\) and the module structure of \(H_{\star}(X)\) over \(H_{\star}\).

Obtaining a useful output

Let us take \(G=C_{p^n}\) and \(R=\mathbf Z\).

"Universal" Mackey functor notation

While a Mackey functor is determined by the level-wise groups, transfers, restrictions and Weyl group actions, it is desirable to have a "universal" notation to concisely describe any Mackey functor.

  • The notation

    \[a_0...a_n \sharp b_0...b_m\]

    describes the Mackey functor \(M\):

    \[M(C_{p^n}/C_{p^i})=\begin{cases}\mathbf Z/a_i&\text{ if }a_i\neq 1\\ \mathbf Z&\text{ if }a_i= 1\end{cases} \\ Tr_{{p^i}}^{{p^{i+1}}}(x)=\begin{cases}x&\text{ if }i=b_j\text{ for some }j\\ 2x&\text{ else }\end{cases}\\ Res_{{p^i}}^{{p^{i+1}}}(x)=\begin{cases}2x&\text{ if }i=b_j\text{ for some }j\\x&\text{ else }\end{cases}\]

    Here we assume \(0\leq b_0<\cdots<b_m<n\). The Weyl group actions are determined by the double coset formula.
  • More generally we extend the notation linearly to define arbitrary finite sums:

    \[a_0...a_n \sharp b_0...b_m + \cdots + c_0...c_n\sharp d_0...d_l\]

  • For \(G=C_4\), every Mackey functor can be written in this notation. For \(G=C_8\) and \(\mathbf Z\) coefficients there are three exceptional Mackey functors that can't be expressed in our "universal" notation.

Isomorphic Mackey functors

Isomorphic Mackey functors can have different "universal" notations. To find if two different notations correspond to isomorphic Mackey functors (and are thus equivalent), it suffices to compute all different notations in each isomorphism class.

Given a Mackey functor \(M\) we compute its isomorphism class as follows:

  • For each level \(M(G/H)\) we find all automorphisms \(Aut(M(G/H))\).
  • Choosing one automorphism for each \(H\) gives a Mackey functor automorphism of \(M\) (as long as the level-wise choices commute with restrictions/transfers/Weyl group actions). This gives \(Aut(M)\).
  • For finitely generated (abelian) groups with only one \(\mathbf Z\) factor, there are only finitely many automorphisms and we can easily classify them all.

    Todo:
    Make identification work even if there is more than one \(\mathbf Z\) factor (so we get infinitely many automorphisms)

Factorization

Starting with a small group of generators, the factorization process tries to write every other generator in terms of them.
It goes as follows:

  • First we form a multiplication table, where all generators (in a range) are multiplied with the "basic irreducibles". These basic irreducibles can be the Euler and orientation classes.
  • We then get a directed colored graph by drawing \(a\color{red}{\to} ab\) for \(b\) a basic irreducible.
  • If multiplication by \(b\) is an isomorphism i.e. \(a=(ab)/b\) then we also draw \(ab\color{blue}{\to} a\)
  • Since the product \(ab\) may not be a generator, but rather a multiple of it, we need to allow nonzero multiples of generators as distinct nodes.
  • To obtain a factorization, we simply need to connect 1 with any node in the graph.
  • For the most efficient factorizations, we want to minimize the number of times we alternate between blue and red edges in each path. For example consider:

    \[\frac{ab}{cd}\text{ vs } \frac{a \frac{b}{c}}{d}\]

    We also want to minimize the total length of the paths. This is done by a modified Dijkstra algorithm.
  • For the generators not connected to 1 (eg \(s\)) we need to perform the same process using different sources for our graph (eg using \(s\) as the source for all paths).

A caveat

Cyclic Generators

  • The way we prove that a transfer map is (say) multiplication by \(2\), is by computing the generators at the domain and target, computing the transfer of the domain generator and comparing with the target. Of course, there are usually multiple choices of generators, but up to isomorphism we get the same Mackey functor.
  • There is a catch however that appears when computing the multiplicative structure: If we prove that \(ab\) and \(cd\) are both generators of the same cyclic group, then we can't conclude that they are equal. Eg if the group is \(\mathbf Z/4\) or \(\mathbf Z\) then they may differ by a sign.
  • Since we are interested in generating the \(RO(G)\) homology, as opposed to finding exact relations, we don't have to distinguish between cyclic generators so we don't need to worry about this detail.
  • If we are interested in exact relations, then are ways to resolve the ambiguity as we explain in the following subsection.

Non cyclic generators

  • There is a situation where the caveat above cannot be worked-around and that's when we have non cyclic groups.
    A typical example:

    \[\mathbf Z\{x,y\}/2y=\mathbf Z\oplus \mathbf Z/2= \mathbf Z\{x+y,y\}/2y\]

    and we can't distinguish \(x\) from \(x+y\) as there is an automorphism of \(\mathbf Z\oplus \mathbf Z/2\) exchanging them.
  • Another example: Over \(\mathbf F_2\) coefficients we can't distinguish the three generators of

    \[\mathbf F_2\oplus \mathbf F_2\]

  • One way out of this is to break down our box products further until they can be directly compared. For example:

    \[S^{2\sigma+\lambda}\wedge S^{-\lambda}=S^{\sigma}\wedge S^{\sigma}\wedge S^{\lambda}\wedge S^{-\lambda}S^{\sigma+\lambda}\wedge S^{\sigma -\lambda}\]

    This is difficult to program generally and comes at a very high performance cost as we need more iterated box products.
  • Another way is to use the fact that we actually have extensions of Mackey functors, not just group extensions. So for example if we have

    \[Tr:\mathbf Z\to \mathbf Z\{x,y\}/2y\\ Tr(1)=x\]

    then we can distinguish \(x\) from \(x+y\) as only the former is a transfer.
  • This doesn't always work: We can have

    \[Res: \mathbf F_2\{x,y\}\to \mathbf F_2\\ Res(x)=0\text{ , }Res(y)=1\\ Tr:\mathbf F_2\to \mathbf F_2\{x,y\}\\ Tr(1)=0\]

    in which case we cannot distinguish between \(y\) and \(x+y\).
  • There is one final trick that can help in the case above: If for some element \(z\) we can distinguish \(xz\) and \((x+y)z\) then this also distinguishes \(x,x+y\).
  • In practice, for \(\mathbf Z\) coefficients and \(G=C_4\) we can choose to ignore these problems and not draw any edges if we can't distinguish generators; this gives us less data to work with, but it turns out to be sufficient in writing the factorization of any element.
  • That doesn't work for \(\mathbf F_2\) coefficients and \(G=C_4\), or \(\mathbf Z\) coefficients and \(G=C_8\), as there are simply too many instances of noncyclic groups. Instead we need to use all the tricks above to identify our generators and factorize every element.
  • If we are only interested in the connectivity of the multiplication graph (whether or not everything is generated by Euler+orientation classes) then we don't need to make all identifications as connecting \(a\to x\) or \(a\to x+y\) gives graphs with the same number of components.

    Todo:
    Implement Frobenius relations: The multiplicative structure is computed levelwise, but this could be done more effectively using the Frobenius relations

    \[Tr(Res(x)y)=xTr(y)\]