algebra-0.3.0: Constructive abstract algebra

Numeric.Algebra.Free

Synopsis

Documentation

class Semiring r => FreeAlgebra r a whereSource

An associative algebra built with a free module over a semiring

Methods

join :: (a -> a -> r) -> a -> rSource

Instances

FreeAlgebra () a 
(FreeAlgebra r a, FreeAlgebra r b) => FreeAlgebra r (a, b) 
(FreeAlgebra r a, FreeAlgebra r b, FreeAlgebra r c) => FreeAlgebra r (a, b, c) 
(FreeAlgebra r a, FreeAlgebra r b, FreeAlgebra r c, FreeAlgebra r d) => FreeAlgebra r (a, b, c, d) 
(FreeAlgebra r a, FreeAlgebra r b, FreeAlgebra r c, FreeAlgebra r d, FreeAlgebra r e) => FreeAlgebra r (a, b, c, d, e) 
(FreeAlgebra r b, FreeAlgebra r a) => FreeAlgebra (b -> r) a 

class (Unital r, FreeAlgebra r a) => FreeUnitalAlgebra r a whereSource

An associative unital algebra over a semiring, built using a free module

Methods

unit :: r -> a -> rSource

class Semiring r => FreeCoalgebra r c whereSource

Methods

cojoin :: (c -> r) -> c -> c -> rSource

Instances

FreeCoalgebra () c 
(FreeCoalgebra r a, FreeCoalgebra r b) => FreeCoalgebra r (a, b) 
FreeAlgebra r m => FreeCoalgebra r (m -> r)

Every coalgebra gives rise to an algebra by vector space duality classically. Sadly, it requires vector space duality, which we cannot use constructively. This is the dual, which relies in the fact that any constructive coalgebra can only inspect a finite number of coefficients.

(FreeCoalgebra r a, FreeCoalgebra r b, FreeCoalgebra r c) => FreeCoalgebra r (a, b, c) 
(FreeCoalgebra r a, FreeCoalgebra r b, FreeCoalgebra r c, FreeCoalgebra r d) => FreeCoalgebra r (a, b, c, d) 
(FreeCoalgebra r a, FreeCoalgebra r b, FreeCoalgebra r c, FreeCoalgebra r d, FreeCoalgebra r e) => FreeCoalgebra r (a, b, c, d, e) 
(FreeAlgebra r b, FreeCoalgebra r c) => FreeCoalgebra (b -> r) c 

class (FreeUnitalAlgebra r h, FreeCounitalCoalgebra r h) => Hopf r h whereSource

a Hopf algebra on a semiring, where the module is a free.

If antipode . antipode = id then we are Involutive

Methods

antipode :: (h -> r) -> h -> rSource

Instances

Hopf () h 
(Hopf r a, Hopf r b) => Hopf r (a, b) 
(Hopf r a, Hopf r b, Hopf r c) => Hopf r (a, b, c) 
(Hopf r a, Hopf r b, Hopf r c, Hopf r d) => Hopf r (a, b, c, d) 
(Hopf r a, Hopf r b, Hopf r c, Hopf r d, Hopf r e) => Hopf r (a, b, c, d, e) 
(FreeUnitalAlgebra r a, Hopf r h) => Hopf (a -> r) h