This article is also available as a PDF.


This article is a supplement to a longer piece I am writing about the theory of connections and it probably won’t make much sense outside the context of that larger article. It concerns a question that arose in that article’s presentation of the relationship between the holonomy and the curvature of a connection: how do we realize the holonomy of a loop as an integral of the curvature over the interior of the loop? When I was researching the connections article I couldn’t find a nice, isolated presentation of the answer to this question except in the abelian case, so I wanted to take the time to present an argument for it here.

The Argument

We start with a principal \(G\)-bundle \(\pi:P\to M\) and a principal connection on \(P\). Consider a parametrized square \(Q:[0,1]\times [0,1]\to M\) whose coordinates we’ll call \(s\) and \(t\). We’ll write \(\gamma\) from the loop based at \(Q(0,0)\) (the lower-left corner) going counterclockwise around the boundary of the square; this is the loop whose holonomy we will be interested in. Fix a point \(p\) in the fiber of \(P\) over \(Q(0,0)\).

Our goal is to relate the holonomy of \(\gamma\) to some sort of integral over the interior of \(Q\). We will proceed in two steps, first splitting \(\gamma\) into thin horizontal strips, then splitting each strip into small squares. We’ll start by introducing some notation for the paths we’ll split \(\gamma\) into:

  • \(\gamma_{s,t}\) is the counterclockwise rectangular loop with \(Q(s,t)\) as its upper-right corner (so \(\gamma=\gamma_{1,1}\))
  • \(v_t\) is the vertical path starting at \(Q(0,0)\) and moving up to \(Q(0,t)\)
  • \(h_{s,t}\) is the horizontal path starting at \(Q(0,t)\) and moving right to \(Q(s,t)\)
  • \(\sigma_{s,t}^{\Delta t}\) is a “strip” of height \(\Delta t\), a loop starting at \(Q(0,t)\), moving right toward \(Q(s,t)\), up to \(Q(s,t+\Delta t)\), left to \((0,t+\Delta t)\), and back down to \(Q(0,t)\)
  • \(\tau_{s,t}^{\Delta s,\Delta t}\) is a “tiny” counterclockwise loop starting at \(Q(s,t)\), moving right to \(Q(s+\Delta s,t)\), up to \(Q(s+\Delta s,t+\Delta t)\), left to \(Q(s,t+\Delta t)\), and back down to \(Q(s,t)\)

We will also need to refer to the parallel transport of \(p\) along some of these paths; we’ll write \(p_{0,t}={\operatorname{pt}}_{v_t}(p)\) and \(p_{s,t}={\operatorname{pt}}_{h_{s,t}}(p_{0,t})\).

Now we compute. By examining this diagram, we can extract the following relations: \[\begin{aligned} {\operatorname{hol}}_p(\gamma_{s,t+\Delta t}) & ={\operatorname{hol}}_p(\gamma_{s,t}){\operatorname{hol}}_p(v_t\cdot\sigma_{s,t}^{\Delta t}\cdot v_t^{-1})\\ {\operatorname{hol}}_{p_{0,t}}(\sigma_{s+\Delta s,t}^{\Delta t})&={\operatorname{hol}}_{p_{0,t}}(h_{s,t}\cdot\tau_{s,t}^{\Delta s,\Delta t}\cdot h_{s,t}^{-1}){\operatorname{hol}}_{p_{0,t}}(\sigma_{s,t}^{\Delta t}). \end{aligned}\]

From this, we can extract some differential equations in \(G\) relating these holonomies to each other, which will lead us to our final expression. From the first equation, using the relationship between lassos and loops derived in the main article, we get \[\frac{\partial}{\partial(\Delta t)}{\operatorname{hol}}_p(\gamma_{s,t+\Delta t})={\operatorname{hol}}_p(\gamma_{s,t})\cdot\left(\frac{\partial}{\partial(\Delta t)}{\operatorname{hol}}_{p_{0,t}}(\sigma_{s,t}^{\Delta t})\right).\] (Here we are again using the convention of writing, for \(g\in G\) and \(X\in\mathfrak g\), \(g\cdot X=(L_g)_*(X)\).) In other words, we can write \({\operatorname{hol}}_p(\gamma_{1,1})\) as a path-ordered exponential, provided we can find a nice way to express the part in parentheses.

From the second equation, we see that \[\frac{\partial}{\partial(\Delta s)}\frac{\partial}{\partial(\Delta t)}{\operatorname{hol}}_{p_{0,t}}(\sigma_{s+\Delta s,t}^{\Delta t})=\frac{\partial}{\partial(\Delta s)}\frac{\partial}{\partial(\Delta t)} \left({\operatorname{hol}}_{p_{s,t}}(\tau_{s,t}^{\Delta s,\Delta t}){\operatorname{hol}}_{p_{0,t}}(\sigma_{s,t}^{\Delta t})\right).\] (Note that these second derivatives are well-defined, since the first derivative can canonically be placed in the vector space \(\mathfrak g\).) Since both of the holonomies being multiplied are the identity when \(\Delta t=0\), we can use the Leibniz rule to turn the expression on the right into \[\frac{\partial}{\partial(\Delta s)}\left(\frac{\partial}{\partial(\Delta t)}{\operatorname{hol}}_{p_{s,t}}(\tau_{s,t}^{\Delta s,\Delta t}) + \frac{\partial}{\partial(\Delta t)}{\operatorname{hol}}_{p_{0,t}}(\sigma_{s,t}^{\Delta t})\right).\] The second term vanishes when we take a derivative with respect to \(\Delta s\), and so \[\frac{\partial}{\partial(\Delta t)}{\operatorname{hol}}_{p_{0,t}}(\sigma_{1,t}^{\Delta t})=\int_0^1\left(\frac{\partial^2}{\partial(\Delta s)\partial(\Delta t)}{\operatorname{hol}}_{p_{s,t}}(\tau_{s,t}^{\Delta s,\Delta t})\right)ds.\] Therefore, plugging this into the first differential equation, we get \[{\operatorname{hol}}_p(\gamma)={\operatorname{Pexp}}\int_0^1\int_0^1\left(\frac{\partial^2}{\partial(\Delta s)\partial(\Delta t)}{\operatorname{hol}}_{p_{s,t}}(\tau_{s,t}^{\Delta s,\Delta t})\right)ds\ dt.\]

We have now accomplished most of our original goal: we wrote the holonomy of our original loop as an integral of holonomies involving tiny loops spread throughout its interior. However, the analogy with Stokes’ Theorem can be made stronger by finding a nice coordinate-independent expression for the integrand. This is exactly where the curvature will come in.

We can strip away some of the notation now that we aren’t worried about the whole integral. Take a point \(p\in P\) lying over \(x\in M\), and consider a parametrized square \(Q:[0,1]\times[0,1]\to M\) as before with \(Q(0,0)=x\). Write \(\tau^{s,t}\) for counterclockwise rectangular loop based at \(x\) of width \(s\) and height \(t\); we are interested in \((\partial^2/\partial s\ \partial t){\operatorname{hol}}_p(\tau^{s,t})\in\mathfrak g\).

Recall that one of our definitions of a principal connection was in terms of the connection form \(\omega\), which takes a tangent vector to the element of \(\mathfrak g\) corresponding to its vertical part. It will be convenient for us to express the element of \(\mathfrak g\) we’re interested in in terms of parallel transport in \(P\) rather than paths in \(G\), and \(\omega\) is exactly the tool we need for this: I encourage you to convince yourself that \[\frac{\partial^2}{\partial s\,\partial t}{\operatorname{hol}}_p(\tau^{s,t})=\omega\left(\frac{\partial^2}{\partial s\,\partial t}({\operatorname{pt}}_{\tau^{s,t}}p)\right).\]

The parallel transport around \(\tau^{s,t}\) can be expressed in terms of flows along horizontal vector fields in \(P\). Specifically, writing \(\partial_s\) and \(\partial_t\) for the vector fields on the image of \(Q\) pointing in the \(s\) and \(t\) directions, we have \[\frac{\partial^2}{\partial s\,\partial t}({\operatorname{pt}}_{\tau^{s,t}}p) = \frac{\partial^2}{\partial s\,\partial t}({\operatorname{Fl}}_{\partial_t^*}^{-t} {\operatorname{Fl}}_{\partial_s^*}^{-s} {\operatorname{Fl}}_{\partial_t^*}^t {\operatorname{Fl}}_{\partial_s^*}^s p),\] where \({\operatorname{Fl}}_X^r\) is the flow along the vector field \(X\) for time \(r\) and \(\partial_s^*\) denotes the horizontal lift of the vector field \(\partial_s\). The expression on the right is one of the many equivalent ways to define the Lie bracket of \(\partial_s^*\) and \(\partial_t^*\) at \(p\), so the element of \(\mathfrak g\) we want in our integrand is \(\omega([\partial_s^*, \partial_t^*])_p\).

This is almost good enough, but it still seems to depend on the entire vector fields \(\partial_s\) and \(\partial_t\) — that is, the entire coordinate system we put on our square — rather than just the two tangent vectors at \(x\). But we can remove this last problem with a small trick, noting that \[d\omega(\partial_s^*, \partial_t^*)=\partial_s^*\omega(\partial_t^*) - \partial_t^*\omega(\partial_s^*)-\omega([\partial_s^*, \partial_t^*]).\] The first two terms on the right are zero, because each \(\partial_i^*\) is horizontal and therefore has no vertical part. So our vector of interest is just \(-d\omega(\partial_s^*, \partial_t^*)_p\), and since this is just a 2-form evaluated at two tangent vectors at \(p\), it is (finally!) self-evidently independent of our chosen coordinate system.

If we hadn’t yet come up with the definition of curvature, this would lead us directly to what the definition ought to be: the curvature form of our connection is the \(\mathfrak g\)-valued 2-form \(\Omega\) on \(P\) given by \[\Omega(X,Y)=d\omega(X^H,Y^H),\] where again \(X^H\) is the horizontal part of the vector field \(X\). Note that knowing the curvature tells us everything about the holonomy around any contractible loop: we can write our integral from before as \[{\operatorname{hol}}_p(\gamma)={\operatorname{Pexp}}\int_0^1\int_0^1- \Omega(\partial_s^*,\partial_t^*)_{p_{s,t}} ds\ dt.\]

We can now see the analogy with Stokes’ Theorem more completely: we have related the holonomy of the outer loop — which under a choice of trivialization could be written as a one-dimensional path-ordered integral — to a two-dimensional path-ordered integral of an exterior derivative. This result is therefore sometimes called the nonabelian Stokes Theorem, along with some generalizations of it. It is in fact possible to build a theory of nonabelian integration on Lie groups that this fits into, but we won’t tackle this here. If you’re interested in learning more, one possible starting point is with the papers “Parallel Transport and Functors” and “Smooth Functors vs. Differential Forms” by Urs Schreiber and Konrad Waldorf which I found helpful when preparing this supplement.