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.)

As one of, perhaps, a small number of your readers who are topologists converted to data scientists, I fully approve!

There is a typo in the stable range, it’s n>m+1, not m>1.

I am sure that I know even less about homotopy groups, but surely the tribal group should be represented by 1. It is Z_1. To me 0 would indicate the empty *group*, meaning that is it not possible to; so pi_k to pi_n, although this is a situation that obviously never arises.

I second Jim Simons.

Also Z is Z_0 (since it is Z/0Z) not Z_infty.

Also if the table contains S^0 it should also contain pi_0 a.k.a. the set of path-connected components

(pi_0(S_0)={*,**} and for n>=1 pi_0(S^n)={*})

There are two ways to think about Z

_{n}, either as Z /nZ or as the cyclic group withnelements. That is, you can interpret the subscript as the multiple of Z you mod out or as the order of the group. Jim and Andrei make a good argument for the former, but I prefer the latter. You could say that I’m listing the orders of the group factors, not the subscripts on Z, even though these are usually the same.It’s interesting that these agree as long as

nis finite and larger than 1, but they have opposite meanings at the extremes. I agree that using 0 for the trivial group was inconsistent, so I edited the post to use 1 for the group with 1 element.The calculator page avoids any confusion by reporting the actual groups, not their orders.

Z_1 has 1 element, so either way those 0s should be 1s. Analogously, 1 is the product of no numbers, whilst 0 is the sum of no numbers, eg k^0 and 0!.