# A-infinity Algebra Structures on Group Cohomology

As described in [[Keller, 2001](../../references.md#cite-keller2001), [Keller, 2002](../../references.md#cite-keller2002)], an $A\infty$-algebra structure can be induced on $H^{*}A$ for any differential graded algebra $A$. Consider $\hbox{Ext}^{*}_R(S,S)$, for $R$ a quiver algebra quotient and $S$ the direct sum of all simple $R$-modules. Regarded as the homology of the endomorphism algebra of a projective resolution of $S$, Keller further demonstrates how this additional algebraic structure allows recovery of $R$ from $\hbox{Ext}^{*}_R(S,S)$.

An $A\infty$-algebra structure on a vector space $V$ consists of higher structural operations $m_1,\dots$ defined as $m_i:V^{\otimes i}\to V$ fulfilling the Stasheff axioms for all $n$:

$$
\sum_{i+j-1=n,0\leq k\leq n-j}\pm
m_i(a_1,\dots,a_{k-1},m_j(a_k,\dots,a_{k+j}),a_{k+j+1},\dots,a_n) = 0
$$

An $A\infty$-algebra homomorphism from an $A\infty$-algebra $A$ to an $A\infty$-algebra $B$ is a family $f_i$ of maps $A^{\otimes i}\to B$ such that the homomorphism axioms hold for all $n$: $\sum_{i+j-1=n,0\leq k\leq n-j} \pm f_i(a_1,\dots,a_{k-1},m_j(a_k,\dots,a_{k+j}),a_{k+j+1},\dots,a_n) =$$\sum_{i_1+\dots+i_r=n} \pm m_r(f_{i_1}(a_1,\dots,a_{i_1}),\dots,f_{i_r}(a_{n-i_r+1},\dots,a_n))$

According to a theorem fundamental to the algebraic uses of $A\infty$-techniques, for a differential graded algebra $A$, there is an $A\infty$-structure on $H^{*}A$ and an $A\infty$-algebra homomorphism $f:H^{*}A\to A$ such that $f_1$ is a quasiisomorphism of differential graded algebras, and induced by the identity map on $H^{*}A$.

A blackbox method of calculation can be based on Kadeishvilis’ proof of this statement, using the homomorphism axioms to recursively calculate any specific values that are needed, and choosing the $m_i$ and $f_i$ in such a way as not to violate the axioms. The following package implements this method for the special case of $\hbox{Ext}^{*}_{kG}(k,k)$ for $G$ a $p$-group, $k$ a prime field of characteristic $p$ and also the one-dimensional unique simple $kG$-module.

## `AInfinityRecord(G, n): Grp, RngIntElt -> Rec`

Constructs a record carrying all relevant information to calculate $A\infty$-operations on a group cohomology ring. Among the data carried can be found the cohomology ring in `R`, the cohomology ring quotient in `S`, the projective resolution used in `P`, the simple module resolved in `k` and the basic algebra in `A`.

## `MasseyProduct(Aoo, terms): Rec, SeqEnum[RngElt] -> RngElt`

## `HighProduct(Aoo, terms): Rec, SeqEnum[RngElt] -> RngElt`

Given an $A\infty$ object $Aoo$ corresponding to a group cohomology ring, this intrinsic calculates the structure map $m_i(t_1\otimes\dots\otimes t_i)$, where the $i$ give the length of terms, and $t_1,\dots,t_i$ are the elements of terms.

## `HighMap(Aoo, terms): Rec, SeqEnum[RngElt] -> MapChn`

Given an $A\infty$ object $Aoo$ corresponding to a group cohomology ring, this intrinsic calculates the value of an $A\infty$-quasiisomorphism $f$ at the point $t_1\otimes\dots\otimes t_i$, where the $i$ gives the length of terms, and $t_1,\dots,t_i$ are the elements of terms.

## `Example: A-infinity mod 2 (ex-b55050)`

The $A\infty$-structures on the cohomology rings of cyclic $p$-groups are well known examples in the literature: the $A\infty$-structure on $H^{*}(C_n,F_2)$ has one single higher structure nontrivial operation, namely $m_n$, which takes any $n$-tuple of odd coclasses to the even coclass of appropriate degree.

In order to verify this for a specific example, we start by constructing an $A\infty$ record that contains all relevant information for the cohomology ring.

```magma
> Aoo := AInfinityRecord(CyclicGroup(4),10);
> S<x,y> := Aoo`S;
> HighProduct(Aoo,[x,x,x,x]);
y
> HighMap(Aoo,[x,x,x,x]);
Basic algebra chain map of degree -1

```

## `Example: A-infinity mod 3 (ex-21e1bf)`

The code as written handles odd characteristics well, with the sign choices featured in Kadeishvilis article [[Kadeishvili, 1980](../../references.md#cite-kadeishvili80)] embedded in the code.

```magma
> Aoo := AInfinityRecord(CyclicGroup(3),10);
> S<x,y> := Aoo`S;
> HighProduct(Aoo,[x,x,x]);
y
> HighMap(Aoo,[x,x,x]);
Basic algebra chain map of degree -1

```

## Homological Algebra Toolkit

For the computation of $A\infty$-structures, several methods are used that would invite a wider use in a generic homological algebra toolkit.

### `ActionMatrix(A, x): AlgBas, Mtrx -> ModMatFldElt`

Produces a matrix of the right action of the Basic algebra element described by $x$ in the Basic algebra $A$.

### `CohomologyRingQuotient(CR): Rec -> Rng, Map`

Computes the actual cohomology ring as a quotient ring of a multivariate polynomial ring from a cohomology ring record.

### `LiftToChainmap(P, f, d): ModCpx, Mtrx, RngIntElt -> MapChn`

Lifts the function described by $f$ to a chain map from $P$ to $P$ of degree $d$.

### `NullHomotopy(f): MapChn -> MapChn`

Constructs a null homotopy of the null homotopic chain map $f$. If $f$ is not null homotopic, the function will throw an error message, since in that case some of the equations encountered on the way are not solvable.

### `IsNullHomotopy(f, H): MapChn, MapChn -> BoolElt`

Confirms that $H$ is a null homotopy of $f$, in other words that $f=dH-Hd$, with $d$ the differential of the corresponding chain complexes.

### `ChainmapToCohomology(f, CR): MapChn, Rec -> RngElt`

Takes a chain map $f$ and returns the element in the cohomology quotient ring to which the chain map corresponds.

### `CohomologyToChainmap(xi, CR, P): RngElt, Rec, ModCpx -> MapChn`

Takes an element $xi$ of a cohomology quotient ring of the cohomology ring record $CR$ and a projective resolution corresponding to that cohomology ring, and returns a chain map in the coclass represented by $xi$.

### `Example: Nullhomotopy (ex-ca2dae)`

To illustrate the code that generates null homotopies, we consider the cohomology ring of a cyclic group, and pick out chain map representatives for the degree $1$ coclass. Although this squares to zero, the corresponding chainmaps do not compose to the zero chainmap.

```magma
> A := BasicAlgebra(CyclicGroup(4));
> k := SimpleModule(A,1);
> P := ProjectiveResolution(k,5);
> R := CohomologyRing(k,5);
> S<x,y> := CohomologyRingQuotient(R);
> xi := CohomologyToChainmap(x,R,P);
> x*x;
0
> IsZero(xi*xi);
false
> ModuleMaps(xi*xi);
[*
    [0 0 1 0]
    [0 0 0 1]
    [0 0 0 0]
    [0 0 0 0],

    [0 0 1 0]
    [0 0 0 1]
    [0 0 0 0]
    [0 0 0 0],

    [0 0 1 0]
    [0 0 0 1]
    [0 0 0 0]
    [0 0 0 0],

    [0 0 1 0]
    [0 0 0 1]
    [0 0 0 0]
    [0 0 0 0]
*]
> H := NullHomotopy(xi*xi);
> ModuleMaps(H);
[*
    [0 0 0 0]
    [0 0 0 0]
    [0 0 0 0]
    [0 0 0 0],

    [0 1 0 0]
    [0 0 1 0]
    [0 0 0 1]
    [0 0 0 0],

    [0 0 0 0]
    [0 0 0 0]
    [0 0 0 0]
    [0 0 0 0],

    [0 1 0 0]
    [0 0 1 0]
    [0 0 0 1]
    [0 0 0 0],

    [0 0 0 0]
    [0 0 0 0]
    [0 0 0 0]
    [0 0 0 0]
*]
> IsNullHomotopy(xi*xi,H);
true

```
