Riemann Curvature Tensor of $S^3$¶
A round 3-sphere of radius $r$ has constant sectional curvature $1/r^2$. This notebook builds its metric, Levi-Civita connection, Riemann tensor, Ricci tensor, and scalar curvature in indexed Egison notation.
We use the convention
$$ R^i{}_{jkl} = \partial_k\Gamma^i{}_{jl} - \partial_l\Gamma^i{}_{jk} + \Gamma^m{}_{jl}\Gamma^i{}_{mk} - \Gamma^m{}_{jk}\Gamma^i{}_{ml}. $$
Hyperspherical chart¶
The coordinates are $x=(\theta, \phi, \psi)$. The standard embedding $X:S^3\hookrightarrow\mathbb{R}^4$ is built by successively multiplying by sines: $X_1=r\cos \theta$, $X_2=r\sin \theta\cos \phi$, and so on. It makes $X\mathbin{\cdot}X=r^2$ manifest.
The chart excludes the usual coordinate poles; those singularities are features of hyperspherical coordinates, not of the round geometry.
declare symbol r, θ, φ, ψ: MathValue
def x : Vector MathValue := [| θ, φ, ψ |]
def X : Vector MathValue := [| r * cos θ, r * sin θ * cos φ, r * sin θ * sin φ * cos ψ, r * sin θ * sin φ * sin ψ |]
X
Metric and inverse metric¶
Differentiating the embedding gives an orthogonal coordinate basis. Its line element is
$$ ds^2=r^2\left(d\theta^2 + \sin^2 \theta d\phi^2 + \sin^2 \theta \sin^2 \phi d\psi^2\right). $$
Egison differentiates the embedding to obtain the coordinate tangent vectors and constructs every component as their dot product, $g_{ij}=\partial_iX\mathbin{\cdot}\partial_jX$. The inverse metric is then computed from that induced metric.
def e_i_j : Matrix MathValue := ∂/∂ X_j x~i
def g_i_j : Matrix MathValue :=
generateTensor (\[a, b] -> V.* e_a_# e_b_#) [3, 3]
def g~i~j : Matrix MathValue := M.inverse g_#_#
g_#_#
g~#~#
Levi-Civita connection¶
The Christoffel symbols of the first kind and second kind are
$$ \Gamma_{ijk}=\frac12 (\partial_jg_{ik}+\partial_kg_{ij}-\partial_ig_{jk}), \qquad \Gamma^i{}_{jk}=g^{im}\Gamma_{mjk}. $$
Repeated symbolic indices are contracted by .. The withSymbols
block makes the dummy index local to the definition.
def Γ_i_j_k : Tensor MathValue :=
(1 / 2) * (∂/∂ g_i_k x~j + ∂/∂ g_i_j x~k - ∂/∂ g_j_k x~i)
def Γ~i_j_k : Tensor MathValue := withSymbols [m]
g~i~m . Γ_m_j_k
Γ~1_2_2
Γ~2_1_2
Riemann tensor¶
The following definition is a direct transcription of the stated convention. The two output cells sample the same coordinate two-plane with the first two tensor slots exchanged; their different coordinate factors are exactly what one expects in a non-orthonormal coordinate basis.
def R~i_j_k_l : Tensor MathValue := withSymbols [m]
∂/∂ Γ~i_j_l x~k - ∂/∂ Γ~i_j_k x~l
+ Γ~m_j_l . Γ~i_m_k - Γ~m_j_k . Γ~i_m_l
R~1_2_1_2
R~2_1_1_2
Ricci and scalar curvature¶
Contracting the first and third Riemann indices gives
$$ \operatorname{Ric}_{ij}=R^m{}_{imj}, \qquad \mathcal{R}=g^{ij}\operatorname{Ric}_{ij}. $$
For a round $S^3$ the coordinate-free prediction is
$$ \operatorname{Ric}=\frac{2}{r^2}g, \qquad \mathcal{R}=\frac{6}{r^2}. $$
def Ric_i_j : Matrix MathValue := withSymbols [m]
sum (contract R~m_i_m_j)
def scalarCurvature : MathValue := withSymbols [i, j]
g~i~j . Ric_i_j
Ric_#_#
scalarCurvature
Interpretation¶
The sampled components are coordinate dependent, but their contractions recover the invariant statement: every tangent two-plane has sectional curvature $1/r^2$, the metric is Einstein, and the scalar curvature is $6/r^2$. Factors such as $\sin \theta$ vanish at chart poles because the coordinate frame degenerates there; the curvature itself remains smooth.