*Being part of the subject of algebraic topology, this post assumes the reader has read our previous primers on both topology and group theory. As a warning to the reader, it is more advanced than most of the math presented on this blog, and it is woefully incomplete. Nevertheless, the aim is to provide a high level picture of the field with a peek at the details.*

## An Intuitive and Totally Uncomputable Topological Invariant

Our eventual goal is to get comfortable with the notion of the “homology group” of a topological space. That is, to each topological space we will associate a group (really, a family of groups) in such a way that whenever two topological spaces are homeomorphic their associated groups will be isomorphic. In other words, we will be able to distinguish between two spaces by computing their associated groups (if even one of the groups is different).

In general, there may be many many ways to associate a group with an object (for instance, it could be a kind of symmetry group or a group action). But what we want to do, and what will motivate both this post and the post on homology, is figure out a reasonable way to *count holes* in a space. Of course, the difficult part of this is determining what it means mathematically to have a “hole” in a space.

The simplest example of this is a circle :

That is, we think of this space (not embedded in any particular Euclidean space) as having a single one-dimensional “hole” in it. Furthermore, a sphere has a two-dimensional “hole” in it (the hollow interior).

So our approach to make “holes” rigorous will follow a commonly tread mathematical trail: come up with a definition which fits with our intuition for these special cases, and explore how the definition generalizes to other cases. In this post we will stick exclusively to one-dimensional holes (with a small exception when we take a peek at the chaos of higher homotopy groups at the end of this post), and the main object we use to represent them is called the *fundamental group*.

On the other hand, we will find that the fundamental group is too unwieldy to compute (and for deep reasons). Since we want to be able to readily compute the number of holes in twisted and tied-up spaces, we will need to scrap the fundamental group and try something else. Instead, we’ll derive various kinds of other groups associated to a topological space, which will collectively fall under the name *homology groups*. After that, we will be able to actually write a program which computes homology of sufficiently nice spaces (simplicial complexes). Our main use for this will actually be to compute the topological features of a *data set*, but let’s cross that bridge when we get to it.

For now, we will develop the idea of homotopy and the fundamental group. It will show us how to think geometrically about topology and give us our first interplay between topology and algebra.

## Paths and Homotopy

For the remainder of this post (and all of our future posts in topology), a *map* will always mean a continuous function. The categorical way to say this, which we will use increasingly often as we approach more advanced topics, is by saying that continuous maps are “the morphisms in the category of topological spaces.”

So we define by a *path* in a topological space to be a map (that is, a continuous function ). There are many kinds of paths in a space:

Paths are necessarily oriented, and we can think of the starting point of the path as , and the ending point as . And if we label the starting point, say, and the ending point we will call a path from to . We call the *endpoints* of . We also speak of “moving along a path,” in the sense that as we increase from zero to one, we continuously move along its image in . We certainly allow paths to intersect themselves, as in the blue path given above, and we do not require that paths are smooth (in fact, they need not be differentiable in any sense, as in the green path above). We will call a path *simple* if it is injective (that is, it doesn’t intersect itself). The black and green paths in the figure above are simple. The most trivial of paths is the constant path. We will denote it by and it is simply defined by sending the entire interval to a single point .

The language of paths already gives us a nice topological invariant. We call a space *path-connected* if for every two points there exists a path from to . The knowledgeable reader will recognize that this is distinct from the usual topological notion of connectedness (which is in fact weaker than path-connectedness). It is not hard to see that if two topological spaces are homeomorphic, then is path connected if and only if is path connected. As a quick warmup proof, we note that any map giving a homeomorphism is continuous, and the composition of a path with any map is again a path:

By path connectivity in and the fact that is surjective, we can always find a path between any two points : just find a path between and shoot it through (compose it with) . The same argument goes in the reverse direction using , and this establishes the if and only if.

Back to our mission of describing holes, we want to be able to continuously transform two paths into each other. That is, in the following picture, we want to be able to say that the red and blue paths are “equivalent” because we can continuously slide one to the other, while always keeping the endpoints fixed.

On the other hand, if there is a hole in the space, as shown by the black disk below, no way to slide the red path to the blue path can be continuous; it would need to “jump” over the hole, which is a non-continuous operation. Indeed, no matter how small this hole is we can never overcome this problem; even if just a single point is missing, the nature of continuity ensures it.

In order to make this rigorous, we need to define a “path of paths,” so to speak. That is, we need a continuously parameterized family of continuous maps which for the parameter 0 gives the first path, and for 1 the second path.

**Definition: **Let be two paths in with the same endpoints. A *homotopy *from to is a family of paths such that the following properties hold:

- as paths in
- as paths in
- For all , the path has the same endpoints as and .
- is continuous in and simultaneously

If there is a homotopy between two paths, we call the two paths *homotopic, *and denote the relationship .

We often think of as the time variable, describing how far along we are in the transformation from to . Here is a nice animation showing a homotopy of two paths:

But don’t be fooled by the suggestive nature of these paths. While it will often be the case that two paths which are homeomorphic as topological spaces in themselves (viewed as subspaces of ) will be homotopic, this is neither a sufficient nor a necessary condition for a homotopy to exist. Indeed, one can come up with a homotopy between a simple curve and a non simple curve, but these are not homeomorphic spaces (one has a cut-point). And in our picture above we give an example of two simple curves which are not homotopic: there is a hole in that stops them from being so. So the existence of a homotopy depends almost entirely on the space that the paths are in, and on *where* the paths are in that space. This is good, because in the end we don’t care about the paths. We just care about what they tell us about .

Often times we will not need to give explicit homotopies; they can be quite complicated to construct. But here’s one widely used example: let us take two paths in the Euclidean plane from to . Then we can construct the *straight line homotopy* between them as follows. Set . For we get the path ; for we get the path ; and for any fixed value of we get a path from to (plug in and verify the endpoints agree, and that the function is continuous in both variables). This example shows that all paths with the same endpoints in are homotopic. The same is true of in general, and we will use this fact later.

Because every path is homotopic to itself (the constant homotopy for all ), homotopy is symmetric ( gives an inverse homotopy to ), and homotopy is transitive (given in the parenthetical below), homotopy becomes an equivalence relation on paths in . So we may speak of the equivalence class of a path as the set of all paths homotopic to it.

(Transitivity: given homotopies and from , we can construct a homotopy from as follows. The main difficulty is that the variable in our homotopy must go from 0 to 1, and so we cannot directly compose and . Instead, we “run twice as fast” and then “run twice as fast.” That is, we define piecewise to be when and when . The composition of continuous functions is continuous, so changing the variable doesn’t break continuity. Moreover, since at time the homotopies coincide, and elsewhere they are continuous, we preserve continuity everywhere.)

This equivalence relation is precisely what we’ll use to define the existence of a hole. Intuitively speaking, if two paths with the same endpoints are *not* homotopic to each other, then there must be some obstruction stopping the homotopy. Then the number of distinct equivalence classes of paths with fixed endpoints will count the number of holes (plus one). Because endpoints are a little bit messy (one has to pick endpoints for non-equivalent paths to count holes), we instead implement this idea with loops.

**Definition:** A path is a *loop* if . Since the two endpoints of a loop are the same, we call it the *basepoint*.

With loops or with paths, we need one more additional operation. The operation is called *path composition*, but it essentially “doing one path after the other.” That is, let be paths in such that . Then to compose after , denoted via juxtaposition , is the path defined by when and when . The same argument for “composing” homotopies works here: we run along at twice the normal speed and then at twice its normal speed to get .

And now we turn to the main theorem of this post.

## The Fundamental Group

Instead of looking at paths, we will work with loops with a fixed basepoint. The amazing thing that happens is that the set of equivalence classes of loops (with respect to homotopy) forms a group.

**Definition: **Let be a topological space and fix a point . Define by the set of equivalence classes of loops with basepoint . This set is called the *fundamental group of * (although we have not yet proved it is a group), or the *first homotopy group of *.

**Theorem: **The fundamental group is a group with respect to the operation of path composition.

*Proof*. In order to prove this we must verify the group operations. Let’s recall them here:

- The group must be closed under the group operation: clearly the composition of two loops based at is again a loop at , but we need to verify this is well-defined. That is, the operation gives the same value regardless of which representative we choose from the equivalence class.
- The group operation must be associative.
- The group must have an identity element: the constant path will fill this role.
- Every element must have an inverse: we will show that the loop which “runs in reverse” will serve this purpose.

To prove the first point, let be loops, and suppose are homotopic to respectively. Then it should be the case that is homotopic to . Suppose that are homotopies between relevant loops. Then we can define a new homotopy which runs the two homotopies simultaneously, and composes their paths for any fixed . This is almost identical to the original definition of a path composition, since we simply need to define our new family of loops by composing the loops and . That is,

for and

for

So the operation is well-defined on equivalence classes.

Associativity is messier to prove, but has a similar mechanic. We just need to define a homotopy which scales the speed of each of the paths for a fixed to be in sync. We omit the details for brevity.

For the identity, let be a path and denote the constant path at $late x_0$. Then we must find a homotopy from to and to . Since the argument is symmetric we prove the former. The path sits at for half of the time and performs at twice speed for the rest. All we need to do is “continuously move” the time at which we stop and start from to , and run faster for the remaining time. We can equivalently perform this idea backwards (the algebra is simpler) to get

for , and

for .

To verify this works, plugging in gives precisely the definition of the composition , and for we recover . Moreover for any value of setting gives and gives . Finally, the point at which the two pieces meet is , and we only need verify that the piecewise definition agrees there. That is, the argument of must be zero for that value of regardless of the choice of . Indeed it is.

Finally, for inverses define to be the “reverse path” of . Now we simply need to prove that is homotopic to . That is, we need to run *part way*, and then run starting from that spot in the reverse direction. The point at which we stop to turn back is , which continuously moves from to . We leave the formal specification of this homotopy as an exercise to the reader (hint: we need to appropriately change the speed at which run in order to make everything fit together). From here on we will identify the two notations as homotopy equivalence classes of paths.

The high-level implications of this theorem are quite important. Although we have not proved it here, the fundamental group is a topological invariant. That is, if and are two topological spaces, , and there is an isomorphism which takes , then are isomorphic as groups. That is (and this is the important bit) if and have different fundamental groups, then we know immediately that they cannot be homeomorphic. The way to prove this is to use to construct a new *induced homomorphism* of groups and proving that it is an isomorphism. We give a description of this in the next section.

In fact, we can say something stronger: the fundamental group is a *homotopy invariant*. That is, we can generalize the idea of a path homotopy into a “homotopy of maps,” and say that two spaces are *homotopy equivalent* if there are maps with (the identity function on ) and . The important fact is that two spaces which are homotopy equivalent necessarily have isomorphic fundamental groups. It should also be clear that homeomorphic spaces are homotopy equivalent (the homeomorphism map is also a homotopy equivalence map), so this realizes the fundamental group as a topological invariant as well. We will not prove this here, and instead refer to Hatcher, Chapter 1.

An important example of two spaces which are homotopy equivalent but not homeomorphic is that of the Möbius band and the circle. Proving it requires some additional tools we haven’t covered on this blog, but the idea is that one can squeeze the Möbius strip down onto its center circle, and so the loops in the former correspond to loops in the latter. So the Möbius band also has fundamental group .

Additionally, if the space is path-connected, then the choice of a basepoint is irrelevant. A sketch of the proof goes as follows: let be two choices of basepoints, and pick a path from to . Then we can naturally take any loop based at to a corresponding loop at by composing as in the following picture (here we traverse the paths in left-to-right order, which is the opposite of how function composition usually works; this is so we can read the paths from left-to-right in the order they are traversed in the diagram).

More rigorously this operation induces a homomorphism on the fundamental group (we define this fully in the next section), and for path connected spaces this is an isomorphism of groups. And so we can speak of *the* fundamental group when we work with sufficiently nice spaces (and in practice we always will).

## Computing Fundamental Groups

So now we have seen that the fundamental group is in fact a group, but how can we compute it? Groups can be large and wild, and so can topological spaces. So it’s really impressive that we can compute these groups at all.

First off, the simplest possibility is that the fundamental group of is the identity group. That is, that every loop is homotopic to the trivial loop. In this case we call *simply connected*. For example, Euclidean space is simply connected. We gave the proof above showing that any two paths with the same endpoints in are homotopic, and the proof is the same in general. Since all loops are homotopic to each other, they are all homotopic to the trivial loop, and so is the trivial group. The picture becomes more interesting when we start to inspect subspaces of Euclidean space with nontrivial holes in them.

In fact, the first nontrivial fundamental group one computes in developing this theory is that of the circle . We again defer the proof to Hatcher because it is quite long, but the essential idea is as follows. View the circle as a subset of the complex plane , and fix the basepoint . The only distinct kinds of loops are those loops which loop around the circle times clockwise, or times counterclockwise, where is arbitrary. That is, we can construct a function sending to the loop which goes times around the circle (negative make it go in the negative direction). This map is an isomorphism.

From this one computation we get quite a few gains. As we will see in a moment, many fundamental groups are free products of with added relators, and the upcoming van Kampen theorem tells us how these relators are determined. On the other hand, we have already seen on this blog that the fundamental group of the circle is powerful enough to prove the fundamental theorem of algebra! It is clear from this that is a powerful notion.

Let’s take a moment to interpret this group in terms of the number of “holes” of . There may be some confusion because this group is infinite, but there is only one hole. Indeed, for each “hole” of a space one would expect to get a copy of , since one may run a loop arbitrarily many times around that hole in either clockwise or counterclockwise direction. Recall the classification theorem for finitely generated abelian groups from our recent primer. Since every such abelian group decomposes into a finite number of copies of and a torsion part, then we should be interpreting the number of holes of as the rank of (the number of copies of ).

This is great! But unfortunately nothing guarantees that the fundamental group is abelian, and for more complicated spaces things aren’t even so simple in the abelian case. In a moment, we will see an example of a space with a nonabelian fundamental group (in fact, we’ve already seen this space on this blog). One of its pieces will be . So our interpretation would say that this space has no holes in it, but what does the extra torsion factor mean? As it turns out the specific factor happens to correspond to non-orientability.

In fact it is true that for every group , there is a two-dimensional topological space whose fundamental group is (we haven’t defined dimension yet, but the notion of a surface is intuitive enough). So any weird torsion factor shows up in the fundamental group of some sufficiently awkward space. When one starts to investigate more and more of these contrived spaces, one ceases to care about the “intuitive” interpretations of the fundamental group. The group simply becomes a topological invariant, and the extra factors are just extra ways to tell spaces apart.

We want to state a powerful tool for computing fundamental groups whose rigorous version is called the van Kampen theorem. The intuition is as follows. Imagine we have a so-called “wedge” of two circles.

From our intuition of this space as two copies of a circle, we would expect its fundamental group to be . Unfortunately it is not, because we can immediately see that the fundamental group of this space is not commutative. In particular, let us label the loops and , and give them orientation:

Then the loop (we traverse these loops in left-to-right order for ease of reading) is not homotopic to the loop . Instead, this group should be the free group on the generators . Recall from our second primer on group theory that this means the two generators have no nontrivial relations between them. The reason it is free is because the intersection of the two circles (whose fundamental groups we know separately) is simply connected. If it were not, then there would be some relations. For instance, let us look at the torus , and recall its formulation as a quotient of a disk.

Here the two top edges and sides are identified, and so we can label the loops as follows:

Then the boundary of the original disk is just . Since any loop bounding a disk is homotopic to a constant loop (the straight line homotopy works here), we see that the loop in . That is, we still have two generators corresponding to the longitudinal and latitudinal circles, but traversing them in the right order is the same as doing nothing. This youtube video gives an animation showing the homotopy in action. So the fundamental group of the torus has presentation:

This is obviously just , since the defining relation is precisely saying that the two generators commute: . That is, it is the free abelian group on two generators.

Before we can prove the theorem in general we need to define an *induced homomorphism*. Given two spaces and a map , one gets a canonical *induced map* . If we consider basepoints, then we also require that preserves the basepoint. The induced map is defined by setting to be the equivalence class of the loop of . Recalling that is indeed a loop whenever is continuous, it is not hard to see that this is a homomorphism of groups. It is certainly not in general an isomorphism; for instance the trivial map which sends all of to a single point will not preserve nontrivial loops. But as we will see in the van Kampen theorem, for some maps it is.

One interesting example of an induced homomorphism is that of the inclusion map. Let be a subspace, and let be the inclusion map . This will often *not* induce an isomorphism on fundamental groups. For example, the inclusion of is not a constant map, but it induces the constant map on fundamental groups since there is only one group homomorphism from any group to the trivial group . That is, the kernel of is all of . Intuitively we are “filling in” the hole in with the ambient space from so that the loop generating is homotopic to the trivial loop. Thus, we are killing all of the loops of the circle.

The more important remark for the van Kampen theorem is, recalling our primer on group theory, that any collection of homomorphisms on groups extends uniquely to a homomorphism on the free product . The main goal of this theorem is to give us a way to build up fundamental groups in the same way we build up topological spaces. And it does so precisely by saying that this map on the free product is surjective. Using the first isomorphism theorem (again see our primer), this will allow us to compute the fundamental group of a space given subspaces and by analyzing the kernels of the homomorphisms induced by the inclusions .

The last thing we need to set up this theorem is a diagram. If we have two subspaces and we look at the inclusion , we could define it in one of two equivalent ways: first by going through and then to , or else by going through first. The diagram is as follows:

However, the induced homomorphism will depend on this choice! So we denote to include into the first piece, and to include on the second piece . The diagram here is:

Now we can state the theorem (and it is still quite a mouthful).

**Theorem: **(van Kampen) Let be the union of a family of path-connected open subspaces , each of which contains the chosen basepoint . Let be inclusions, the induced homomorphisms, and the unique extension of the inclusion to the free product .

- If all intersections of pairs are path-connected, then is a surjection.
- If in addition all triple intersections are path-connected, then the kernel of is the smallest normal subgroup generated by the elements for .

In particular, the first isomorphism theorem gives an isomorphism . That is, we can compute the fundamental group of by knowing the fundamental groups of the pieces and a little bit of extra information.

We do not have the stamina to prove such a massive theorem on this blog. However, since we have done so much just to state it, we would be cheating the reader by omitting any examples of its usage.

Let’s again look at the torus . Viewing it as in our previous primer on constructing topological spaces, it is the following quotient of a disk:

Split the disk into two subspaces as follows:

Note how these spaces overlap in an annulus whose fundamental group we’ve already seen is . Moreover, the fundamental group of is trivial, and the fundamental group of is . To see the latter, note that the torus with a disk removed is homotopy equivalent to a wedge of two circles. A simple exercise (again using the van Kampen theorem) finishes the computation of . As we said, the intersection has fundamental group (it is just an annulus).

So according to the van Kampen theorem, the fundamental group of is the free group on two generators, modulo the normal subgroup found by identifying the images of the two possible induced homomorphisms . On one hand the image going through is trivial because the group itself is trivial. On the other hand the image going through is easily seen to be homeomorphic to an oriented traversal of the boundary path . Indeed, this gives rise to a single relator: . So this verifies the presentation we gave for the fundamental group of the torus above.

A nearly identical argument gives nearly identical presentations for the Klein bottle. There is a slightly different presentation for the real projective plane, and it is interesting because there is a topological hole, but the group is just . We leave this as an exercise to the reader, using the representation as a quotient of the disk provided in our previous primer.

Our second example is that of the n-sphere . We already know , but in fact is trivial for all larger . Inductively, we can construct from two copies of the open ball by taking one to be the northern hemisphere, one to be the southern hemisphere, and their intersection to be the equator (or rather, something homotopy equivalent to ).

For the case of , we have that each hemisphere is an open ball centered at the poles (though the center is irrelevant), and the intersection is an annulus which is homotopy equivalent to . Each of the two pieces is simply connected (in fact, homeomorphic to ), and so by van Kampen’s theorem the fundamental group of is the free product of two trivial groups (modulo the trivial subgroup), and is hence the trivial group.

This argument works in general: if we know that each of the have trivial fundamental groups, and each of the possible intersections are path-connected (which is easy to see by looking at the construction via a simplicial complex), then van Kampen’s theorem guarantees that the fundamental group of is trivial.

So as we have seen, the fundamental group is a nice way to compute the number (or the structure) of the one-dimensional holes of a topological space. Unfortunately, even for the nicest of spaces (simplicial complexes) the problem of computing fundamental groups is in general undecidable. In fact, we get stuck at a simpler problem. The problem of determining whether the fundamental group of a finite simplicial complex is trivial is undecidable.

That is, for programmers the fundamental group is practically useless.

## Higher Homotopy Groups

There is an obvious analogue for 2-, 3-, and n-dimensional holes. That is, we can define the -th *homotopy group *of a space , denoted to be the set of homotopy equivalence classes of maps . Homotopy groups for are called *higher homotopy groups.*

As one would expect, higher homotopy groups are much more difficult and even harder to compute. In fact, the only reason we bring this up in this primer is to intimidate the reader: we don’t even know a general way to compute the higher homotopy groups of the sphere.

In particular, here is a table of the known higher homotopy groups of the sphere.

The thick black line shows the boundary between where the patterns are well-known and understood (below) and the untamed wilderness (above). This table solidifies how ridiculous the higher homotopy groups can be. As such, they are unsuitable for computational purposes.

Nevertheless, the homotopy groups are relatively easy to understand in terms of intuition, because a homotopy is easily visualized. In our next primer, we will trade this ease of intuition for ease of computation. In particular, we will develop the notion of a homology group, and for simplicial complexes their computation will be about as simple as matrix reduction.

Once this is done, we will extend the idea of homology to apply to data sets (which should not themselves be considered as topological spaces), and we will be able to compute the topological features of a data set. This is our ultimate goal, but the mathematics we lay down along the way will have their own computational problems that we can explore on this blog.

Until next time!

Hey Jeremy, these two sentences seem to contradict each other: “Then all isomorphic spaces are homotopy equivalent but not all homotopy equivalent spaces are isomorphic. So one usually proves that homotopy equivalent spaces have isomorphic fundamental groups”

I think the first sentence should be “all homotopy equivalent spaces are isomorphic but not all isomorphic spaces are homotopy equivalent”

Perhaps I should say, topological isomorphism is stronger than homotopy equivalence, and homotopy equivalence implies (and is stronger than) fundamental group isomorphism. That is, isomorphism of topological spaces -> homotopy equivalence -> fundamental groups are isomorphic, but none of the reverse implications are true.

Yes that makes sense. I mistakenly interpreted isomorphic spaces as meaning spaces with isomorphic fundamental groups, not homeomorphic spaces.

Category theory really screws with my brain because I start calling everything an isomorphism.

Ha, I know what you mean. In this context though, I didn’t think you meant it in the categorical sense given it’s meant as an introduction, but I was wrong. Either way, keep up the good work!

Hi Jeremy, I’m a CS and math student, interested in ML, and the usage of algebraic topology in ML seems extremly interestning. Could you recommend some readings for me, I wanted to learn more about this topic. I’m ok with texts that assume some knowledge of abstract algebra and topology (and actually even prefer them).

Thank you in advance!

So far I’ve been looking hard but haven’t really found much that falls into the category of ML using topology. I have found some good “data mining using topology,” and I have to emphasize that it’s almost strictly qualitative as opposed to quantitative. That is, it’s much more like descriptive statistics than automated classification. That being said, there is a big list of papers coming out of Stanford on that topic, and probably the easiest introduction is this survey paper of Carlsson.

I’ve been meaning to actually present a simplified version of the material (mostly, the algorithm) on this blog, but there’s just so much topology and algebra background to present first that it’s been taking a while. This post was meant to be a precursor to homology (and hence, to persistent homology…).

Thank you, these are all great reads, can’t wait to get my head around them!