HaskellForMaths-0.4.1: Combinatorics, group theory, commutative algebra, non-commutative algebra

Math.Algebras.TensorProduct

Description

A module defining direct sum and tensor product of vector spaces

Synopsis

# Documentation

type DSum a b = Either a bSource

A type for constructing a basis for the direct sum of vector spaces. The direct sum of Vect k a and Vect k b is Vect k (DSum a b)

i1 :: Vect k a -> Vect k (DSum a b)Source

Injection of left summand into direct sum

i2 :: Vect k b -> Vect k (DSum a b)Source

Injection of right summand into direct sum

coprodf :: (Num k, Ord t) => (Vect k a -> Vect k t) -> (Vect k b -> Vect k t) -> Vect k (DSum a b) -> Vect k tSource

The coproduct of two linear functions (with the same target). Satisfies the universal property that f == coprodf f g . i1 and g == coprodf f g . i2

p1 :: (Num k, Ord a) => Vect k (DSum a b) -> Vect k aSource

Projection onto left summand from direct sum

p2 :: (Num k, Ord b) => Vect k (DSum a b) -> Vect k bSource

Projection onto right summand from direct sum

prodf :: (Num k, Ord a, Ord b) => (Vect k s -> Vect k a) -> (Vect k s -> Vect k b) -> Vect k s -> Vect k (DSum a b)Source

The product of two linear functions (with the same source). Satisfies the universal property that f == p1 . prodf f g and g == p2 . prodf f g

dsume :: (Num k, Ord a, Ord b) => Vect k a -> Vect k b -> Vect k (DSum a b)Source

The direct sum of two vector space elements

dsumf :: (Num k, Ord a, Ord b, Ord a', Ord b') => (Vect k a -> Vect k a') -> (Vect k b -> Vect k b') -> Vect k (DSum a b) -> Vect k (DSum a' b')Source

The direct sum of two linear functions. Satisfies the universal property that f == p1 . dsumf f g . i1 and g == p2 . dsumf f g . i2

type Tensor a b = (a, b)Source

A type for constructing a basis for the tensor product of vector spaces. The tensor product of Vect k a and Vect k b is Vect k (Tensor a b)

te :: Num k => Vect k a -> Vect k b -> Vect k (Tensor a b)Source

The tensor product of two vector space elements

tf :: (Num k, Ord a', Ord b') => (Vect k a -> Vect k a') -> (Vect k b -> Vect k b') -> Vect k (Tensor a b) -> Vect k (Tensor a' b')Source

The tensor product of two linear functions

assocL :: Vect k (Tensor a (Tensor b c)) -> Vect k (Tensor (Tensor a b) c)Source

assocR :: Vect k (Tensor (Tensor a b) c) -> Vect k (Tensor a (Tensor b c))Source

unitInL :: Vect k a -> Vect k (Tensor () a)Source

unitOutL :: Vect k (Tensor () a) -> Vect k aSource

unitInR :: Vect k a -> Vect k (Tensor a ())Source

unitOutR :: Vect k (Tensor a ()) -> Vect k aSource

twist :: (Num k, Ord a, Ord b) => Vect k (Tensor a b) -> Vect k (Tensor b a)Source

distrL :: (Num k, Ord a, Ord b, Ord c) => Vect k (Tensor a (DSum b c)) -> Vect k (DSum (Tensor a b) (Tensor a c))Source

undistrL :: (Num k, Ord a, Ord b, Ord c) => Vect k (DSum (Tensor a b) (Tensor a c)) -> Vect k (Tensor a (DSum b c))Source

distrR :: Vect k (Tensor (DSum a b) c) -> Vect k (DSum (Tensor a c) (Tensor b c))Source

undistrR :: Vect k (DSum (Tensor a c) (Tensor b c)) -> Vect k (Tensor (DSum a b) c)Source

ev :: (Num k, Ord b) => Vect k (Tensor (Dual b) b) -> kSource

reify :: (Num k, Ord b) => Vect k (Dual b) -> Vect k b -> kSource