The cohomology of 2-groups

groups of order 8
groups of order 16
groups of order 32
groups of order 64

The computations include Stiefel-Whitney classes, Chern classes and Steenrod operations.
The results are available in SAGE format.

How were the computations done ? Are they valid ?

A paper is now available, explaining the methods employed. You can also have a look at the source code. So you can check for yourself that the results are valid. (You can also compare with the results which you happen to know already.)

Among the results, one thing should be ignored though: the Steenrod operations given on generators other than Stiefel-Whitney classes are not correct (unless it is specified that I have manually added the answer). There are, on the whole, very few classes which are not Stiefel-Whitney (see group 6 of order 16 for the smallest example).

Let me point out that my own calculations rely on those by Jon Carlson, so that you have to believe in his results in order to believe in mine.

Some Steenrod operations seem to be missing...

No. The trivial operations Sqn(x) = x2 when n=deg(x) are not given, for concision. Also, recall that Sqm(x)=0 for m> n.

How are the representations numbered ?
Which is which ?

Let us start with the complex representations - they appear together with the information given on Chern classes, and you need to understand them in order to understand the real ones.

Start GAP (or SAGE). For the i-th group of order n, type:

G:= SmallGroup(n,i);
T:= CharacterTable(G);
irr:= Irr(G);

Then irr[k] is the character of what i've written rk-1 when k> 2, while irr[1] is the trivial character.
Now we need to compute the Schur indices. Start with:

squares:= PowerMap(T,2);

To compute the Schur index of irr[k], enter:

type:= Sum( [ 1 .. n ], i -> SizesConjugacyClasses(T)[i] * irr[k][ squares[i] ] );

Here's how the notation works for real representations. It may seem confusing at first, since the notation rk can have a different meaning according to the context. It should not lead to confusion, however, if one remembers that except for the information on Chern classes, everything else on a group's page refers to the real representations, and rk is to be understood accordingly. Anyway, it goes as follows:

  • if type > 0, then the complex representation rk-1 is of real type, i.e. it is the complexification of a real, irreducible representation. This real representation is also written rk-1. Its character is still irr[k].
  • if type = 0, then rk-1 is of complex type, and its realification is irreducible (it has character irr[k] + ComplexConjugate(irr[k])). We write rk-1 for the realification.
  • if type < 0, then rk-1 is of quaternion type. In this case also we write rk-1 for the realification, which is irreducible (irr[k] has real values and the character of the realification is 2*irr[k]).
Any irreducible, real representation is obtained from a complex representation in one of the three ways above. The only redundancy is that two conjugate complex representations of type=0 give rise to the same real representation. And indeed, you will see that we only give the Stiefel-Whitney classes for one representation in each pair of conjugates.

Trick: You can tell immediately the value of 'type' without doing any computations. Indeed, when the type is complex, resp quaternion, the only Stiefel-Whitney classes given on the page are in even degrees, resp degrees divisible by 4 (the others being 0). If w1 is given (whether it is 0 or not!), the type is real.

There is an issue with GAP here. The GAP manual asserts that irr[1] is often the trivial character, but not necessarily always. I have never come accross an example of a group for which it isn't (while working manually, that is).
To be on the safe side, my programs look for the trivial character and move it to the beginning of the list. The numbering just explained happens then.
I am pretty sure that the groups I'm considering are not concerned with this issue anyway.
Also, I hope GAP does not change its numbering in the future.

The relations seem more complicated than those given by other authors. There'd better be a very good reason !

There is. It is best to look at the paper if you want to understand it.

In the meanwhile, I can at least say that I've tried to keep the relations which have a "geometric", or "representation-theoretic", meaning. Let me give an example.

Consider the group of quaternions, i.e. the 4th group of order 8. The cohomology is generated by w4(r4), w1(r2) and w1(r3). The relations are presented as

  • (1)          w1(r2)2 + w1(r2)w1(r3) + w1(r3)2 = 0
  • Sq1(1)          w1(r2)2w1(r3) + w1(r2)w1(r3)2 = 0
Now, you might want to replace the second equation by just w1(r2)3=0, which is equivalent but more compact.

Well, for a start we see that the second equation is obtained by applying a Steenrod operation to the first one, so that the ideal of relations is generated by the first relation alone as a "Steenrod ideal".

What is more, both relations are the direct translation in terms of Stiefel-Whitney classes of the single relation:

lambda2(r4) = r1 + r2 + r3 + 3(trivial rep)
(lambda = exterior power.)

I'm slightly cheating here, as I am also using the relation r3=r1r2, which gives w1(r3) = w1(r1) + w1(r2), so there is a simple substitution to do in order to obtain the second equation. However, I see this equation as more meaningful than w1(r2)3=0.

Finding out which relation between the representations has been translated into a given equation between the Stiefel-Whitney classes (if indeed there is one) is not so straightforward, unfortunately. It is also unclear how much time I will spend trying to resolve the situation.

For the time being, if the address of a group page is, say:
then you should try
and see what you can find in this file. It was produced by the computer during the computation.

You can also have a look at the .homlog files. They give extra information on the computation. Both the .replog and the .homlog files are a bit messy, and I apologize for this. Originally they were just debugging files for my own use, not meant to be made public.

What is the "algebra of Milnor constants" ??

Milnor has defined a sequence of derivations Q_0, Q_1, Q_2, ..., on any unstable algebra. (In fact Q_0 = Sq^1 and Q_{n+1} is the commutator of Q_n and Sq^{2^n}). The kernel of each derivation is a subalgebra, and the elements belonging to all these kernels simultaneously I call the Milnor constants.

My interest in these elements stems from the following result: it can be shown that if a cohomology class is supported by an algebraic cycle, then it is a Milnor constant. So computing this subalgebra gives an upper bound for the ring generated by all algebraic cycles.

One knows that Chern classes are (supported by) algebraic cycles. Therefore, if the algebra of Milnor constants happens to be generated by Chern classes, then we have completely determined which classes are algebraic. This was the original aim of all the computations on this page.