The fundamental group of a pointed space (mostly represented here by simpectial complexes) is isomorphic to the fundamental group of the space (Seitert-Van Kampen theorem).

The homotopy group is finitely presented by generators and relations. This representation of a group is not, in general, algorithmically computable into other representations of a group.

We can therefore compute 'a' (not 'the') homotopy group for a given simplicial complex. We may also be able to apply some simplifications to this group. However, in the general case, we cannot determine if this is the simplest representation or determine if two such groups are isomophic (their corresponding simplicial complexes are homeomorphic).

Despite these fundamental limits on what is theoretically possible I still believe it is worthwhile to have the capability to generate 'a' homotopy group for a given structure.

We look at loops of maps from a point to the given space.

Each loop, in the space, from the point back to itself is a generator for the group. These loops can then be composed.


In the following I have drawn circles as triangles because we are representing topologies as simplicial complexes.

The simplest homotopy group is the fundamental group. It determines when two paths, starting and ending the point, can be continuously deformed into each other. It records information about the shape in terms of holes in the topological space. fundamental group

The circle 'a' is homotopic to the circle 'b' if there are continuous maps between f and g. That is 'a' can be continuously deformed into 'b'.

nth homotopy group. Instead of mapping a circle onto our topological space we map a sphere or higher order n-sphere onto the space. Nth homotopy group

Calculating Fundamental Group

The simplest homotopy group is the fundamental group. It determines when two paths, starting and ending the point, can be continuously deformed into each other. It records information about the shape in terms of holes in the topological space.

To generate the fundamental group from a simplicial complex:

We want to compute edge-path group so we treat the 1-skeleton as a graph.

As an example see the graph on the right:

fundamental group 1

Choose a root and generate the spanning tree for the 1-skeleton.

In this example, the tree is the blue arrows (a,b,c,d and f).

fundamental group 2

Now we select the edges that are not in the tree, shown in red in the example, these are the groups generators.

groups generators: edges in 1-skeleton not in spanning tree

fundamental group 3
groups relations: for every 2-simplex
-- e0 e1^-1 e2
-- (e0,e1,e2 are edges)

Finite Group Presentations

Example 1 - A Tetrahedron

I have tried to draw a tetrahedron with its vertices, edges and triangles all indexed:

  • The 4 vertices (in red)
  • The 6 edges (in green)
  • The 4 triangles (in blue)

For more notes about numbering these indexes see page here.


The procedure is then as follows:

  • Choose the base point as the node labeled '3' in the diagram.
  • Calculate a tree where the root is the base point. To do this we remove all edges that would cause a loop. This leaves the edges shown in red as the tree.
indexed tetrahedrion tree
  • Index all the other links (not in the tree), Shown in green. These are the generators.
indexed tetrahedrion face
  • For each face (2-simplex) we have a rule consisting of the (upto 3) edges=generators taking the inverse of the middle one. Which gives us:
  • We now have the generators and rules of the group.
    Which gives us:
    <1,2,3 | 1*2*3>
  • We can try to simplify if possible and practical.

Example 2 - Projective Space

Here is an example for projective space:

projective plane


black index = nodes
blue index = edges = gens
red lines = edges in tree (not indexed)
green = rules

Indexing Edges

We have to be careful when working out the index numbers for edges. If we get this right the rules can correspond very nicely with the rules for other mathematics such as determinants.

Assume that the nodes are already indexed and that we want to use this to calculate the indexing for the edges.

Since the nodes are all indexed, then each triangle will have a node which has the smallest value, a node with with the highest value and an index in between. On the diagram, on the right, I have called these low, medium and high.

We can therefore assign a positive direction to each edge so that the arrow goes from a lower to a higher value.

edge numbering

We can then number the edges as shown on the diagram.

If we then reverse the direction of the middle arrow (2 in this case) then this will define a winding direction for the triangle.

This alternate inversion of quantities is reminiscent of other mathematical structures.

Examples of Fundamental Group with FriCAS Output

Space FriCAS Output


<e | > - trivial group
or just: < | >


   (1)  <  |  >
                                              Type: GroupPresentation


free group on 1 generator.

<a | >


   (76)  <c |  >

Sphere solid

<e | > - trivial group
or just: < | >


   (2)  <  |  >
                                              Type: GroupPresentation

Sphere surface

<e | >


   (4)  <  |  >
                                              Type: GroupPresentation




   (5)  <m |  >
                                              Type: GroupPresentation

Möbius Band



   (6)  <k |  >
                                              Type: GroupPresentation

Torus solid

Z - Integers - free abelian group
<a | >

Torus surface


<a,b | a b a-1b-1>


                      - 1          - 1
   (7)  <o t w |   o*w   *t   o*t*w   >

                                              Type: GroupPresentation

We could do additional simplification here

Union of 2 circles

Equivalent to plane with 2 points removed.

two circles

free group on 2 generators.

<a,b | >


Union of n circles

free group on n generators.

<a,b,c... | >


Projective space

<a | a2>


   (8)  <p |   p*p>
                                              Type: GroupPresentation



                      - 1
   (9)  <v w z |   w*z   *v   v*z*w>

                                              Type: GroupPresentation

metadata block
see also:
  • I have put the code here.
Correspondence about this page

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2023 Martin John Baker - All rights reserved - privacy policy.