This notebook is part of the Introduction to manifolds in SageMath by Andrzej Chrzeszczyk (Jan Kochanowski University of Kielce, Poland).
version()
'SageMath version 9.6, Release Date: 2022-05-15'
To describe connections one can use bases not necessarily induced by coordinate systems. We can use sets $\{e_1 , . . . , e_n \}$ of smooth vector fields defined on some open subset $U$ of the manifold $M$ such that, at each point $p ∈ U $, the tangent vectors $e_i$ at $p$ form a basis of $T_p M$. Let the set of 1-forms $\{e^1 , . . . , e^n \}$ be its dual basis (i.e. $e^i (e_j ) = δ_{ij} $). If there exists a coordinate system $(x_1 , . . . , x_n )$ such that $e_i = \frac{∂}{∂ x^i}$ or, equivalently, $e^i = dx^i$ , we will say that the basis ${e_1 , . . . , e_n }$ is holonomic. In the present notebook the set $\{e_1,\ldots e_n\}$ will denote not necessarily holonomic basis.
If $∇$ is a connection on a manifold $ M$, the connection forms, $\omega^i_j$ , with respect to the basis $\{e_1 , . . . , e_n \}$, are the 1-forms defined by
\begin{eqnarray} \omega_j^i(X)=e^i(\nabla_Xe_j),\quad \text{for} X\in \mathfrak{X}(M), \tag{25.1} \end{eqnarray}or equivalently \begin{eqnarray} \nabla_Xe_j=\omega_j^i(X)e_i,\quad \text{for} X\in \mathfrak{X}(M). \tag{25.1'} \end{eqnarray}
Example 25.1
On the two-dimensional manifold we have four connection forms $\omega^i_j$:
%display latex
M = Manifold(2, 'M', start_index=1) # 2-dim. manifold M
c_xy.<x,y> = M.chart() # chart on M
nab = M.affine_connection('nabla', r'\nabla') # affine connection
nab[1,1,1] = 0 # all con. coeff. zero
[nab.connection_form(i,j) for i in [1,2] for j in [1,2]]
If we define
\begin{eqnarray} \Gamma ^i_{jk}=\omega^i_j(e_k), \tag{25.2} \end{eqnarray}then for $X\in \mathfrak{X}(M)$, we have $X=e^k(X)e_k$ and
$$ \omega^i_j(X)=\omega^i_j(e^k(X)e_k)=e^k(X)\omega^i_j(e_k)=\Gamma^i_{jk}e^k(X),$$i.e., \begin{eqnarray} \omega_j^i=\Gamma^i_{jk}e^k, \tag{25.3} \end{eqnarray} and according to (25.1')
\begin{eqnarray} \nabla_{e_i}e_j=\omega_j^k(e_i)e_k=\Gamma^k_{ji}e_k, \tag{25.4} \end{eqnarray}which is analogous to (21.5) but holds also for non-holonomic bases.
If $T (X, Y) = ∇ X Y − ∇ Y X − [X, Y],\ \ X, Y ∈ \mathfrak{X}(M)\ \ $ is the torsion, then the torsion 2-forms $\theta^i$ with respect to $\{e_1,\ldots,e_n\}$ are defined by
\begin{eqnarray} \theta^i(X,Y)=e^i(T(X,Y)),\quad \text{for}\ X,Y\in \mathfrak{X}(M), \tag{25.5} \end{eqnarray}or equivalently
\begin{eqnarray} T(X,Y)=\theta^i(X,Y)e_i,\quad \text{for}\ X,Y\in \mathfrak{X}(M). \tag{25.6} \end{eqnarray}Since $T$ is antisymmetric, each $\theta^i$ is 2-form.
Example 25.2
On the two-dimensional manifold we have two torsion 2-forms:
%display latex
M = Manifold(2, 'M', start_index=1) # 2-dim. manifold M
c_xy.<x,y> = M.chart() # chart on M
nab = M.affine_connection('nabla', r'\nabla') # affine connection
nab[1,1,1] = 0 # all con. coeff. zero
[nab.torsion_form(i) for i in [1,2]] # torsion 2-forms on M
Assume we have vector fields $\ X\ $ and $\ Y=Y^ie_i=e^i(Y)e_i.\ $ From (21.14) it follows
\begin{equation} \nabla_Xt(Y)=X(t(Y))-t(\nabla_XY), \tag{*} \end{equation}for 1-forms $t$ on $M$, so
$$\nabla_Xe^i(Y)=X(e^i(Y))-e^i(\nabla_XY) =X(Y^i)-e^i(\nabla_X(Y^je_j))\\ =X(Y^i)-e^i(Y^j\nabla_Xe_j+(XY^j)e_j)\\ =X(Y^i)-Y^je^i(\nabla_Xe_j)-e^i((XY^j)e_j)\\ =X(Y^i)-Y^je^i(\nabla_Xe_j)-X(Y^i)\\ =-Y^j\omega^i_j(X)=-\omega^i_j(X)e^j(Y), $$so \begin{eqnarray} \nabla_Xe^i=-\omega^i_j(X)e^j. \tag{25.7} \end{eqnarray}
Using (*) once again we obtain
$$ e^i(\nabla_XY)=X(e^i(Y))-(\nabla_Xe^i)(Y),\\ e^i(\nabla_YX)=Y(e^i(X))-(\nabla_Ye^i)(X). $$From (16.6) we know that
$$ (d\omega)(X,Y)=X\omega(Y)-Y\omega(X)-\omega([X,Y]), $$and from the definition of the exterior product
$$ t\wedge s=t\otimes s-s\otimes t. $$From those facts and (25.7) we obtain
$$\theta^i(X,Y)=e^i(T(X,Y))=e^i(\nabla_XY-\nabla_YX-[X,Y])\\ =X(e^i(Y))-(\nabla_Xe^i)(Y)-Y(e^i(X))+(\nabla_Ye^i)(X)-e^i([X,Y])\\ =X(e^i(Y))-Y(e^i(X)-e^i([X,Y])-(\nabla_Xe^i)(Y)+(\nabla_Ye^i)(X)\\ =de^i(X,Y)+\omega^i_j(X)e^j(Y)-\omega^i_j(Y)e^j(X)\\ =(de^i+\omega^i_j\wedge e^j)(X,Y). $$We have proved the first Cartan structural equation
\begin{eqnarray} \theta^i=de^i+\omega^i_j\wedge e^j. \tag{25.8} \end{eqnarray}If $\ \ R(X, Y)= ∇_X ∇_Y − ∇_Y ∇_X − ∇_{[X,Y]},\ \ X, Y ∈ \mathfrak{X}(M)\ \ $ is the curvature, then the curvature forms $\Omega^i_j(X,Y)$ with respect to the basis $\{e_1 , e_2 , . . . , e_n \}$, are defined by
\begin{equation} \Omega^i_j(X,Y)=e^i(R(X,Y)e_j),\quad X, Y ∈ \mathfrak{X}(M), \tag{25.9} \end{equation}or equivalently
\begin{equation} R(X,Y)e_j=\Omega^i_j(X,Y)e_i,\quad X, Y ∈ \mathfrak{X}(M). \tag{25.9'} \end{equation}Example 25.3
On the two-dimensional manifold we have four curvature forms:
%display latex
M = Manifold(2,'M',start_index=1) # manifold M
c_xy.<x,y> = M.chart() # chart on M
nab = M.affine_connection('nabla', r'\nabla') # connection
nab[1,1,1] = 0 # all coefficients zero
[nab.curvature_form(i,j) for i in [1,2] for j in [1,2]]
# curvature forms
If we use the formulas $$ R(X, Y)= ∇_X ∇_Y − ∇_Y ∇_X − ∇_{[X,Y]},\\ \nabla_Xe_j=\omega^i_j(X)e_i,\quad \omega^i_j(X)=e^i(\nabla_Xe_j),\\ \nabla_X(\omega^k_j(Y)e_k)=X(\omega^k_j(Y))e_k+\omega^k_j(Y)\nabla_Xe_k,\\ (d\omega)(X,Y)=X\omega(Y)-Y\omega(X)-\omega([X,Y]),\\ t\wedge s=t\otimes s-s\otimes t, $$
then we can check that $$\Omega^i_j(X,Y)=e^i(∇_X ∇_Y e_j − ∇_Y ∇_X e_j− ∇_{[X,Y]}e_j)\\ =e^i(\nabla_X(\omega^k_j(Y)e_k)-\nabla_Y(\omega^k_j(X)e_k))-\omega^i_j([X,Y])\\ =e^i(X(\omega^k_j(Y))e_k+\omega^k_j(Y)\nabla_Xe_k-Y(\omega^k_j(X))e_k-\omega^k_j(X)\nabla_Ye_k)-\omega^i_j([X,Y])\\ =(X(\omega^k_j(Y))e^i(e_k)+\omega_j^k(Y)e^i(\nabla_Xe_k)\\ -Y(\omega^k_j(X))e^i(e_k)-\omega^k_j(X)e^i(\nabla_Ye_k))- \omega^i_j([X,Y])\\ =X(\omega^i_j(Y))+\omega_j^k(Y)\omega^i_k(X)-Y(\omega^i_j(X))-\omega^k_j(X)\omega^i_k(Y)-\omega^i_j([X,Y])\\ =X(\omega^i_j(Y))-Y(\omega^i_j(X))-\omega^i_j([X,Y])+\omega_k^i(X)\omega^k_j(Y)-\omega^i_k(Y)\omega_j^k(X)\\ =d\omega^i_j(X,Y)+(\omega^i_k\wedge \omega^k_j)(X,Y). $$
We have proved the second Cartan structural equation
\begin{equation} \Omega^i_j=d\omega^i_j+\omega^i_k\wedge \omega^k_j. \tag{25.10} \end{equation}Observation: $\hskip0.5cm$ If $A_{kl}$ is an antisymmetric matrix, then for 1-forms $e^i$ on $M$ and $X,Y\in\mathfrak{X}(M)$ $$(A_{kl}e^k\wedge e^l)(X,Y)=A_{kl}(e^k\otimes e^l-e^l\otimes e^k)(X,Y)\\ =A_{kl}(e^k(X) e^l(Y)-e^l(X) e^k(Y) =A_{kl}X^kY^l-A_{kl}X^lY^k\\ =A_{kl}X^kY^l+A_{lk}X^lY^k =2A_{kl}X^kY^l. $$
If the components of the torsion and the curvature tensors with respect to the basis $\{e_1 , . . . , e_n \}$ are defined by $$T (e_i , e_j ) = T^k_{i j} e_k,\quad R(e_i , e_j )e_k = R^l_{ki j}e_l, $$ then \begin{equation} \begin{matrix} \theta^i=\frac{1}{2}T^i_{jk}e^j\wedge e^k,\\ \Omega^i_j=\frac{1}{2}R^i_{jkl}e^k\wedge e^l. \end{matrix} \tag{25.11} \end{equation}
In fact $$\theta^i(X,Y)=e^i(T(X,Y))=e^i(T(X^ke_k,Y^le_l))\\ =e^i(X^kY^lT^m(e_k,e_l)e_m)=e^i(X^kY^lT^m_{kl}e_m)\\ =X^kY^lT^m_{kl}e^l(e_m)=X^kY^lT^m_{kl}\delta^i_m=X^kY^lT^i_{kl}\\ =\frac{1}{2}(T^i_{kl}e^k\wedge e^l)(X,Y), $$ and $$ \Omega^i_j(X,Y)=e^i(R(X,Y)e_j)=e^i(R(X^ke_k,Y^le_l)e_j)\\ =X^kY^lR^m_{jkl}e^i(e_m)=X^kY^lR^m_{jkl}\delta^i_m\\ =X^kY^lR^i_{jkl}=\frac{1}{2}(R^i_{jkl}e^k\wedge e^l)(X,Y). $$
Example 25.4
Consider the half-plane $y>0$ with the connection coefficients with respect to the bases $\ \ e_1=\frac{\partial}{\partial x},\ \ e_2=\frac{\partial}{\partial y},\ \ e^1=dx,\ \ e^2=dy\ \ $ equal to $$\Gamma^1_{12}=\Gamma^1_{21}=\Gamma^2_{22}=-\frac{1}{y}, \quad\Gamma^2_{11}=\frac{1}{y},$$ and all other coefficients equal to zero.
%display latex
M = Manifold(2, 'M', start_index=1) # manifold M
c_xy.<x,y> = M.chart() # chart on M
nab = M.affine_connection('nabla', r'\nabla') # connection on M
# con. coefficients
nab[1,1,2], nab[1,2,1], nab[2,2,2], nab[2,1,1] = -1/y, -1/y, -1/y, 1/y
nab.display(coordinate_labels=False) # show conn. coeff.
# (only nonzero)
Connection forms $\omega^i_j$ can be computed using the formula (25.3), $\ \ \omega_j^i=\Gamma^i_{jk}e^k$: $$\omega^1_1=\Gamma^1_{11}e^1+\Gamma^1_{12}e^2=-\frac{1}{y}dy,\\ \omega^1_2=\Gamma^1_{21}e^1+\Gamma^1_{22}e^2=-\frac{1}{y}dx,\\ \omega^2_1=\Gamma^2_{11}e^1+\Gamma^2_{12}e^2=\frac{1}{y}dx,\\ \omega^2_2=\Gamma^2_{21}e^1+\Gamma^2_{22}e^2=-\frac{1}{y}dy. $$
[nab.connection_form(i,j).display() # connection forms
for i in [1,2] for j in [1,2]]
Torsion forms can be computed from the first Cartan structure equation (25.8), $\ \ \theta^i=de^i+\omega^i_j\wedge e^j$:
$$\theta^1=de^1+\omega^1_1\wedge e^1+\omega^1_2\wedge e^2 =d(dx)-\frac{1}{y}dy\wedge dx-\frac{1}{y}dx\wedge dy=0,\\ \theta^2=de^2+\omega^2_1\wedge e^1+\omega^2_2\wedge e^2 =d(dy)+\frac{1}{y}dx\wedge dx-\frac{1}{y}dy\wedge dy=0.\\ $$[nab.torsion_form(i).disp() for i in [1,2]] # torsion forms
The second Cartan structure equation (25.10): $\ \Omega^i_j=d\omega^i_j+\omega^i_k\wedge \omega^k_j$ can be used in calculation of curvature forms:
$$ \Omega_1^1=d\omega^1_1+\omega^1_1\wedge \omega^1_1+\omega^1_2\wedge \omega^2_1\\=d\Big(-\frac{1}{y}dy\Big)-\Big(\frac{1}{y}dx\Big)\wedge \Big(\frac{1}{y}dx\Big)\\ =\frac{1}{y^2}dy\wedge dy=0,$$[nab.curvature_form(i,j).display() # curvature forms
for i in [1,2] for j in [1,2]]
Since by (25.11) $\quad \Omega^i_j=\frac{1}{2}R^i_{jkl}e^k\wedge e^l$, and $R^i_{jkl}$ is antisymmetric in $k,l$, then $$\Omega_2^1=\frac{1}{2}R^1_{2kl}e^k\wedge e^l= \frac{1}{2}(R^1_{212}dx\wedge dy+R^1_{221}dy\wedge dx)\\ =\frac{1}{2}(R^1_{212}dx\wedge dy+R^1_{212}dx\wedge dy)=R^1_{212}dx\wedge dy=-\frac{1}{y^2}dx\wedge dy, $$
Using an analogous calculation for $\Omega^2_1$, we see that the different from zero components of the curvature tensor are equal to:
$R^1_{212} =-\frac{1}{y^2},\ \ R^1_{221} =\frac{1}{y^2},\ \ R^2_{112}=\frac{1}{y^2},\ \ R^2_{121}=-\frac{1}{y^2}$.
R = M.tensor_field(1,3,'R') # tensor field of (1,3)-type
R[:] = nab.riemann()[:] # R <- curv. (1,3) tensor f.
R.display_comp(coordinate_labels=False) # show R
#nab.riemann().display_comp(coordinate_labels=False)
Example 25.5
Consider the plane $R^2$ with Christoffel symbols $$Γ^1_{11}= Γ^1_{22}=\frac{4u}{1+u^2+4v^2},\\ Γ^2_{11}= Γ^2_{22}=\frac{4v}{1+u^2+4v^2}, $$ and the remaining symbols equal to 0.
%display latex
N = Manifold(2,name='R2',start_index=1) # manifold N
c_uv.<u,v> = N.chart() # chart on N
nab = N.affine_connection('nab1') # connection coefficients
nab[:] = [[[4*u/(4*u^2 + 4*v^2 + 1), 0], # define all coefficients
[0, 4*u/(4*u^2 + 4*v^2 + 1)]],
[[4*v/(4*u^2 + 4*v^2 + 1), 0],
[0, 4*v/(4*u^2 + 4*v^2 + 1)]]]
Compute connection forms:
[nab.connection_form(i,j).display() # connection forms
for i in [1,2] for j in [1,2]]
and torsion forms:
[nab.torsion_form(i).disp() # torsion forms
for i in [1,2]]
Now let us try to compute curvature forms.
[nab.curvature_form(i,j) # curvature forms -symbols
for i in [1,2] for j in [1,2]]
Before we show the results, we have to do some simplifications.
for i in [1,2]: # factor curvature forms
for j in [1,2]:
nab.curvature_form(i,j).comp()[:].apply_map(factor)
for i in [1,2]: # show curvature forms
for j in [1,2]:
show(nab.curvature_form(i,j).disp())
Example 25.6
In previous examples, the torsion forms were equal to zero.
Let us consider a 2-dimensional manifold with "random" connection coefficients.
M = Manifold(2, 'M', start_index=1) # manifold M
c_xy.<x,y> = M.chart() # chart on M
nab = M.affine_connection('nabla', r'\nabla') # connection on M
nab[1,1,1], nab[1,1,2] = x*y, x^2
nab[1,2,1], nab[1,2,2] = -x^3, y^2
nab[2,1,1], nab[2,1,2] = y^2, x*y
nab[2,2,1], nab[2,2,2] = x^2+y^2+y^2, y^2-x^2
%display latex # show connection
nab[:] # coefficients
Compute the connection forms:
[[nab.connection_form(i,j).display() # connection forms
for j in [1,2]] for i in [1,2]]
Recall that the torsion was defined in (21.13) as
$$T (X, Y) = ∇_X Y − ∇_Y X − [X, Y],\quad \text{for}\quad X,Y\in \mathfrak{X}(M).$$In SageMath the torsion
method returns the tensor of type (1,2) defined by
print(nab.torsion()) # torsion (1,2) tensor
nab.torsion().disp()
Tensor field of type (1,2) on the 2-dimensional differentiable manifold M
The torsion forms in our example are equal to:
for i in [1,2]: # torsion forms
show(nab.torsion_form(i).disp())
and the curvature forms:
for i in [1,2]: # curvature forms
for j in [1,2]:
show(nab.curvature_form(i,j).disp())