Copyright | (c) Nils Alex 2020 |
---|---|

License | MIT |

Maintainer | nils.alex@fau.de |

Safe Haskell | None |

Language | Haskell2010 |

Definitions of covariant and contravariant epsilon tensor densities like \(\epsilon_{abc}\).

## Synopsis

- epsilon' :: forall (id :: Symbol) (n :: Nat) (is :: NonEmpty Symbol) (r :: Rank) v. (KnownNat n, Num v, EpsilonRank id n is ~ 'Just r, SingI r) => Sing id -> Sing n -> Sing is -> Tensor r v
- someEpsilon :: forall v m. (Num v, MonadError String m) => Demote Symbol -> Demote Nat -> [Demote Symbol] -> m (T v)
- epsilonInv' :: forall (id :: Symbol) (n :: Nat) (is :: NonEmpty Symbol) (r :: Rank) v. (KnownNat n, Num v, EpsilonInvRank id n is ~ 'Just r, SingI r) => Sing id -> Sing n -> Sing is -> Tensor r v
- someEpsilonInv :: forall v m. (Num v, MonadError String m) => Demote Symbol -> Demote Nat -> [Demote Symbol] -> m (T v)
- permSign :: (Num v, Ord a) => [a] -> v

# Epsilon tensor densities

epsilon' :: forall (id :: Symbol) (n :: Nat) (is :: NonEmpty Symbol) (r :: Rank) v. (KnownNat n, Num v, EpsilonRank id n is ~ 'Just r, SingI r) => Sing id -> Sing n -> Sing is -> Tensor r v Source #

Totally antisymmetric covariant tensor density of weight -1 such that

\[ \epsilon_{12\dots n} = 1. \]

Vector space label, vector space dimension and index labels are passed as singletons.

someEpsilon :: forall v m. (Num v, MonadError String m) => Demote Symbol -> Demote Nat -> [Demote Symbol] -> m (T v) Source #

Totally antisymmetric covariant tensor density of weight -1 such that

\[ \epsilon_{12\dots n} = 1. \]

Vector space label, vector space dimension and index labels are passed as values. Result is existentially quantified.

epsilonInv' :: forall (id :: Symbol) (n :: Nat) (is :: NonEmpty Symbol) (r :: Rank) v. (KnownNat n, Num v, EpsilonInvRank id n is ~ 'Just r, SingI r) => Sing id -> Sing n -> Sing is -> Tensor r v Source #

Totally antisymmetric contravariant tensor density of weight +1 such that

\[ \epsilon^{12\dots n} = 1. \]

Vector space label, vector space dimension and index labels are passed as singletons.

someEpsilonInv :: forall v m. (Num v, MonadError String m) => Demote Symbol -> Demote Nat -> [Demote Symbol] -> m (T v) Source #

Totally antisymmetric contravariant tensor density of weight +1 such that

\[ \epsilon^{12\dots n} = 1. \]

Vector space label, vector space dimension and index labels are passed as values. Result is existentially quantified.