Numeric.Algebra.Free
- class Semiring r => FreeAlgebra r a where
- join :: (a -> a -> r) -> a -> r
- class (Unital r, FreeAlgebra r a) => FreeUnitalAlgebra r a where
- unit :: r -> a -> r
- class Semiring r => FreeCoalgebra r c where
- cojoin :: (c -> r) -> c -> c -> r
- class FreeCoalgebra r c => FreeCounitalCoalgebra r c where
- counit :: (c -> r) -> r
- class (FreeUnitalAlgebra r h, FreeCounitalCoalgebra r h) => Hopf r h where
- antipode :: (h -> r) -> h -> r
Documentation
class Semiring r => FreeAlgebra r a whereSource
An associative algebra built with a free module over a semiring
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
Instances
FreeUnitalAlgebra () a | |
(FreeUnitalAlgebra r a, FreeUnitalAlgebra r b) => FreeUnitalAlgebra r (a, b) | |
(FreeUnitalAlgebra r a, FreeUnitalAlgebra r b, FreeUnitalAlgebra r c) => FreeUnitalAlgebra r (a, b, c) | |
(FreeUnitalAlgebra r a, FreeUnitalAlgebra r b, FreeUnitalAlgebra r c, FreeUnitalAlgebra r d) => FreeUnitalAlgebra r (a, b, c, d) | |
(FreeUnitalAlgebra r a, FreeUnitalAlgebra r b, FreeUnitalAlgebra r c, FreeUnitalAlgebra r d, FreeUnitalAlgebra r e) => FreeUnitalAlgebra r (a, b, c, d, e) | |
(FreeUnitalAlgebra r a, FreeUnitalAlgebra r b) => FreeUnitalAlgebra (a -> r) b |
class Semiring r => FreeCoalgebra r c whereSource
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 FreeCoalgebra r c => FreeCounitalCoalgebra r c whereSource
Instances
FreeCounitalCoalgebra () a | |
(FreeCounitalCoalgebra r a, FreeCounitalCoalgebra r b) => FreeCounitalCoalgebra r (a, b) | |
FreeUnitalAlgebra r m => FreeCounitalCoalgebra r (m -> r) | |
(FreeCounitalCoalgebra r a, FreeCounitalCoalgebra r b, FreeCounitalCoalgebra r c) => FreeCounitalCoalgebra r (a, b, c) | |
(FreeCounitalCoalgebra r a, FreeCounitalCoalgebra r b, FreeCounitalCoalgebra r c, FreeCounitalCoalgebra r d) => FreeCounitalCoalgebra r (a, b, c, d) | |
(FreeCounitalCoalgebra r a, FreeCounitalCoalgebra r b, FreeCounitalCoalgebra r c, FreeCounitalCoalgebra r d, FreeCounitalCoalgebra r e) => FreeCounitalCoalgebra r (a, b, c, d, e) | |
(FreeUnitalAlgebra r a, FreeCounitalCoalgebra r c) => FreeCounitalCoalgebra (a -> 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
Instances