Emmy, the Algebra System: Differential Geometry Chapter Four

Functional Differential Geometry: Chapter 4
Published

February 6, 2026

4 Basis Fields

A vector field may be written as a linear combination of basis vector fields.

NoteERR
WARNING: R2-rect already refers to: #'emmy.env/R2-rect in namespace: mentat-collective.emmy.fdg-ch04, being replaced by: #'mentat-collective.emmy.fdg-ch04/R2-rect
(define e0
  (+ (* (literal-manifold-function 'e0x R2-rect) d:dx)
     (* (literal-manifold-function 'e0y R2-rect) d:dy)))
(define e1
  (+ (* (literal-manifold-function 'e1x R2-rect) d:dx)
     (* (literal-manifold-function 'e1y R2-rect) d:dy)))
(define e-vector-basis (down e0 e1))
(define e-dual-basis
  (vector-basis->dual e-vector-basis R2-polar))
(print-expression
  ((e-dual-basis e-vector-basis) R2-rect-point))
(up (down 1 0) (down 0 1))
(define v
  (* (up (literal-manifold-function 'b↑0 R2-rect)
         (literal-manifold-function 'b↑1 R2-rect)) 
     e-vector-basis))
(print-expression
  ((e-dual-basis v) R2-rect-point))
(up (b↑0 (up x0 y0)) (b↑1 (up x0 y0)))

4.1 Change of Basis

(define (Jacobian to-basis from-basis) 
  (s/mapr (basis->oneform-basis to-basis)
          (basis->vector-basis from-basis)))
(define b-rect
  ((coordinate-system->oneform-basis R2-rect)
   (literal-vector-field 'b R2-rect)))
(define b-polar
  (* (Jacobian (coordinate-system->basis R2-polar)
               (coordinate-system->basis R2-rect))
     b-rect))
(print-expression
  (b-polar ((point R2-rect) (up 'x0 'y0))))
(up (/ (+ (* x0 (b↑0 (up x0 y0))) (* y0 (b↑1 (up x0 y0)))) (sqrt (+ (expt x0 2) (expt y0 2)))) (/ (+ (* x0 (b↑1 (up x0 y0))) (* -1 y0 (b↑0 (up x0 y0)))) (+ (expt x0 2) (expt y0 2))))
(print-expression
(((coordinate-system->oneform-basis R2-polar) 
  (literal-vector-field 'b R2-rect))
 ((point R2-rect) (up 'x0 'y0))))
(up (/ (+ (* x0 (b↑0 (up x0 y0))) (* y0 (b↑1 (up x0 y0)))) (sqrt (+ (expt x0 2) (expt y0 2)))) (/ (+ (* x0 (b↑1 (up x0 y0))) (* -1 y0 (b↑0 (up x0 y0)))) (+ (expt x0 2) (expt y0 2))))

4.3 Commutators

(print-expression
(let-scheme ((polar-basis (coordinate-system->basis R2-polar)) 
            (polar-vector-basis (basis->vector-basis polar-basis)) 
            (polar-dual-basis (basis->oneform-basis polar-basis))
            (f (literal-manifold-function 'f-rect R2-rect)))
  ((- ((commutator e0 e1) f)
      (* (- (e0 (polar-dual-basis e1))
            (e1 (polar-dual-basis e0))) (polar-vector-basis f)))
      R2-rect-point)))
0
(define-coordinates (up x y z) R3-rect)
NoteERR
WARNING: R3-rect already refers to: #'emmy.env/R3-rect in namespace: mentat-collective.emmy.fdg-ch04, being replaced by: #'mentat-collective.emmy.fdg-ch04/R3-rect
(define Jz (- (* x d:dy) (* y d:dx)))
(define Jx (- (* y d:dz) (* z d:dy)))
(define Jy (- (* z d:dx) (* x d:dz)))
(define g (literal-manifold-function 'g-rect R3-rect))
(define R3-rect-point ((point R3-rect) (up 'x0 'y0 'z0)))
(print-expression
  (((+ (commutator Jx Jy) Jz) g) R3-rect-point))
0
(print-expression
  (((+ (commutator Jy Jz) Jx) g) R3-rect-point))
0
(print-expression
  (((+ (commutator Jz Jx) Jy) g) R3-rect-point))
0
(define-coordinates (up theta phi psi) Euler-angles)
NoteERR
WARNING: Euler-angles already refers to: #'emmy.env/Euler-angles in namespace: mentat-collective.emmy.fdg-ch04, being replaced by: #'mentat-collective.emmy.fdg-ch04/Euler-angles
WARNING: phi already refers to: #'emmy.env/phi in namespace: mentat-collective.emmy.fdg-ch04, being replaced by: #'mentat-collective.emmy.fdg-ch04/phi

equation 4.29

(define e_x (+ (* (cos phi) d:dtheta)
               (* -1 (/ (* (sin phi) (cos theta)) (sin theta)) d:dphi)
               (* (/ (sin phi) (sin theta)) d:dpsi)))

equation 4.30

(define e_y (+ (/ (* (cos phi) (cos theta) d:dphi) (sin theta))
               (* (sin phi) d:dtheta)
               (* -1 (/ (cos phi) (sin theta)) d:dpsi)))

equation 4.31

(define e_z d:dphi)
(define f (literal-manifold-function 'f-Euler Euler-angles))
(define SO3-point ((point Euler-angles) (up 'theta 'phi 'psi)))
(print-expression
  (((+ (commutator e_x e_y) e_z) f) SO3-point))
0
(print-expression
  (((+ (commutator e_y e_z) e_x) f) SO3-point))
0
(print-expression
  (((+ (commutator e_z e_x) e_y) f) SO3-point))
0
(repl/scittle-sidebar)
source: src/mentat_collective/emmy/fdg_ch04.clj