packages feed

egison-3.7.11: sample/math/geometry/hodge-E3.egi

(define $N 3)
(define $params [| x y z |])
(define $g [| [| 1 0 0 |] [| 0 1 0 |] [| 0 0 1 |] |])

(define $hodge
  (lambda [%A]
    (let {[$k (df-order A)]}
      (with-symbols {i j}
        (* (sqrt (abs (M.det g_#_#)))
           (foldl . (. (ε' N k)_[i_1]..._[i_N]
                       A..._[j_1]..._[j_k])
                  (map 1#g~[i_%1]~[j_%1] (between 1 k))))))))

(define $dx [| 1 0 0 |])
(define $dy [| 0 1 0 |])
(define $dz [| 0 0 1 |])

(hodge dx)
;[| [| 0 0 0 |] [| 0 0 1 |] [| 0 0 0 |] |] = (wedge dy dz)

(hodge (wedge dx dy))
;[| 0 0 1 |] = dz