egison-3.7.8: sample/math/geometry/curvature-form.egi
;;; Parameters and Metric tensor
(define $x [| θ φ |])
(define $g__ [| [| r^2 0 |] [| 0 (* r^2 (sin θ)^2) |] |])
(define $g~~ [| [| (/ 1 r^2) 0 |] [| 0 (/ 1 (* r^2 (sin θ)^2)) |] |])
;;; Christoffel symbols
(define $Γ_j_k_l
(* (/ 1 2)
(+ (∂/∂ g_j_l x_k)
(∂/∂ g_j_k x_l)
(* -1 (∂/∂ g_k_l x_j)))))
(define $Γ~__ (with-symbols {i} (. g~#~i Γ_i_#_#)))
;;; Riemann curvature tensor
(define $R~i_j_k_l
(with-symbols {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_1;[| [| 0 0 |] [| 0 0 |] |]~#_#
R~#_#_1_2;[| [| 0 (sin θ)^2 |] [| -1 0 |] |]~#_#
R~#_#_2_1;[| [| 0 (* -1 (sin θ)^2) |] [| 1 0 |] |]~#_#
R~#_#_2_2;[| [| 0 0 |] [| 0 0 |] |]~#_#
;;; Connection form
(define $ω Γ~#_#_#)
;;; Curvature form
(define $d
(lambda [%A]
!((flip ∂/∂) x A)))
(define $wedge
(lambda [%X %Y]
!(. X Y)))
(define $Ω
(with-symbols {i j}
(df-normalize (+ (d ω~i_j)
(wedge ω~i_k ω~k_j)))))
Ω~#_#_1_1;[| [| 0 0 |] [| 0 0 |] |]~#_#
Ω~#_#_1_2;[| [| 0 (/ (sin θ)^2 2) |] [| (/ -1 2) 0 |] |]~#_#
Ω~#_#_2_1;[| [| 0 (/ (* -1 (sin θ)^2) 2) |] [| (/ 1 2) 0 |] |]~#_#
Ω~#_#_2_2;[| [| 0 0 |] [| 0 0 |] |]~#_#