I don’t understand homotopy groups of spheres, and it’s OK if you don’t either. Nobody fully understands them. This post is really more about **information compression** than homotopy. That is, I’ll be looking at ways to summarize what is known without being overly concerned about what the results mean.

## The task: map two integers to a list of integers

For each positive integer *k*, and non-negative integer *n*, the *k*th homotopy group of the sphere *S*^{n} is a finitely generated Abelian group, something that can be described by a finite list of numbers. So we’re looking at simply writing a function that takes two integers as input and returns a list of integers. This function is implemented in an online calculator that lets you lookup homotopy groups.

Computing homotopy groups of spheres is far from easy. The first Fields medal given to a topologist was for partial work along these lines. There are still groups that haven’t been computed, and potentially more Fields medals to win. But our task is much more modest: simply to **summarize** what has been discovered.

This is not going to be too easy, as suggested by the sample of results in the table below.

This table was taken from the Homotopy Type Theory book, and was in turn based on the Wikipedia article on homotopy groups of spheres.

## Output data representation

To give an example of what we’re after, the table says that π_{13}(*S*²), the 13th homotopy group of the 2-sphere, is *Z*_{12} × *Z*_{2}. All we need to know is the subscripts on the *Z*‘s, the orders of the cyclic factors, and so our function would take as input (13, 2) and return (12, 2).

The table tells us that π_{8}(*S*^{4}) = *Z*_{2}^{2}. This is another way of writing *Z*_{2} × *Z*_{2}, and so our function would take (8, 4) as input and return (2, 2).

When I said above that our function would return a list of integers I glossed over one thing: some of the *Z*‘s don’t have a subscript. That is some of the factors are the group of integers, not the group of integers mod some finite number. So we need to add an extra symbol to indicate a factor with no subscript. I’ll use ∞ because the integers as the infinite cyclic group. For example, our function would take (7, 4) and return (∞, 12). I will also use 1 to denote the trivial group, the group with 1 element.

Some results are unknown, and so we’ll return an empty list for these.

The order of the numbers in the output doesn’t matter, but we will list the numbers in descending order because that appears to be conventional.

## Theorems

Some of the values of our function can be filled in by a general theorem, and some will simply be data.

If we call our function *f*, then there is a theorem that says *f*(*k*, *n*) = (1) if *k* < *n*. This accounts for the zeros in the upper right corner of the chart above.

There’s another theorem that says *f*(*n*+*m*, *n*) is independent of *n* if *n* > *m* + 1. These are the so-called stable homotopy groups.

The rest of the groups are erratic; we can’t do much better than just listing them as data.

(By the way, the corresponding results for **homology** rather than **homotopy** are ridiculously simple by comparison. For *k* > 0, the *k*th homology group of *S*^{n} is isomorphic to the integers if *k* = *n* and is trivial otherwise.)