(define $N 3) (define $g [| [| 1 0 0 |] [| 0 1 0 |] [| 0 0 1 |] |]) (define $d (lambda [%X] !((flip ∂/∂) [| x y z |] X))) (define $hodge (lambda [%A] (let {[$k (df-order A)]} (with-symbols {i j} (* (sqrt (abs (M.det g_#_#))) (foldl . (. (subrefs A (map 1#j_%1 (between 1 k))) (subrefs (ε' N k) (map 1#i_%1 (between 1 N)))) (map 1#g~[i_%1]~[j_%1] (between 1 k)))))))) (define $δ (lambda [%A] (let {[$r (df-order A)]} (* (** -1 (+ (* N r) 1)) (hodge (d (hodge A))))))) (define $grad d) (define $rot d) (define $div δ) (define $Δ (lambda [%A] (match (tensor-order A) integer {[,0 (δ (d A))] [,N (d (δ A))] [_ (+ (d (δ A)) (δ (d A)))]}))) (grad (+ (** x 2) (** y 2) (** z 2))) ;[| (* 2 x) (* 2 y) (* 2 z) |] (rot [| (** y 2) (** x 2) 0 |]) ;[| [| 0 (* 2 x) 0 |] [| (* 2 y) 0 0 |] [| 0 0 0 |] |] (div [| (** y 2) (** x 2) 0 |]) ;0 (rot [| (** x 2) (** y 2) (** z 2) |]) ;[| [| (* 2 x) 0 0 |] [| 0 (* 2 y) 0 |] [| 0 0 (* 2 z) |] |] (div [| (** x 2) (** y 2) (** z 2) |]) ;(+ (* 2 z) (* 2 y) (* 2 x)) (rot [| (* x 2) (* y 2) (* z 2) |]) ;[| [| 2 0 0 |] [| 0 2 0 |] [| 0 0 2 |] |] (div [| (* x 2) (* y 2) (* z 2) |]) ;6 (Δ (+ (** x 2) (** y 2) (** z 2))) ;6