rings-0.1.1.1: Ring-like objects.

Safe HaskellSafe
LanguageHaskell2010

Data.Algebra

Contents

Synopsis

Algebras

type FreeAlgebra a f = (FreeSemimodule a f, Algebra a (Rep f)) Source #

An algebra over a free module f.

Note that this is distinct from a free algebra.

class Semiring a => Algebra a b where Source #

An algebra algebra over a semiring.

Note that the algebra needn't be associative.

Methods

append :: (b -> b -> a) -> b -> a Source #

Instances
Semiring r => Algebra r IntSet Source # 
Instance details

Defined in Data.Algebra

Methods

append :: (IntSet -> IntSet -> r) -> IntSet -> r Source #

Semiring a => Algebra a () Source # 
Instance details

Defined in Data.Algebra

Methods

append :: (() -> () -> a) -> () -> a Source #

Semiring r => Algebra r E4 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

append :: (E4 -> E4 -> r) -> E4 -> r Source #

Semiring r => Algebra r E3 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

append :: (E3 -> E3 -> r) -> E3 -> r Source #

Semiring r => Algebra r E2 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

append :: (E2 -> E2 -> r) -> E2 -> r Source #

Semiring r => Algebra r E1 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

append :: (E1 -> E1 -> r) -> E1 -> r Source #

(Semiring r, Ord a) => Algebra r (Set a) Source # 
Instance details

Defined in Data.Algebra

Methods

append :: (Set a -> Set a -> r) -> Set a -> r Source #

Semiring r => Algebra r (Seq a) Source #

The tensor algebra

Instance details

Defined in Data.Algebra

Methods

append :: (Seq a -> Seq a -> r) -> Seq a -> r Source #

Semiring a => Algebra a [a] Source #

Tensor algebra

>>> append (<>) [1..3 :: Int]
[1,2,3,1,2,3,1,2,3,1,2,3]
>>> append (\f g -> fold (f ++ g)) [1..3] :: Int
24
Instance details

Defined in Data.Algebra

Methods

append :: ([a] -> [a] -> a) -> [a] -> a Source #

(Algebra a b, Algebra a c) => Algebra a (b, c) Source # 
Instance details

Defined in Data.Algebra

Methods

append :: ((b, c) -> (b, c) -> a) -> (b, c) -> a Source #

(Algebra a b, Algebra a c, Algebra a d) => Algebra a (b, c, d) Source # 
Instance details

Defined in Data.Algebra

Methods

append :: ((b, c, d) -> (b, c, d) -> a) -> (b, c, d) -> a Source #

(.*.) :: FreeAlgebra a f => f a -> f a -> f a infixl 7 Source #

Multiplication operator on an algebra over a free semimodule.

Caution in general (.*.) needn't be commutative, nor associative.

type FreeUnital a f = (FreeAlgebra a f, Unital a (Rep f)) Source #

A unital algebra over a free semimodule f.

class Algebra a b => Unital a b where Source #

A unital algebra over a semiring.

Methods

aempty :: a -> b -> a Source #

Instances
Semiring r => Unital r IntSet Source # 
Instance details

Defined in Data.Algebra

Methods

aempty :: r -> IntSet -> r Source #

Semiring a => Unital a () Source # 
Instance details

Defined in Data.Algebra

Methods

aempty :: a -> () -> a Source #

Semiring r => Unital r E4 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

aempty :: r -> E4 -> r Source #

Semiring r => Unital r E3 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

aempty :: r -> E3 -> r Source #

Semiring r => Unital r E2 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

aempty :: r -> E2 -> r Source #

Semiring r => Unital r E1 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

aempty :: r -> E1 -> r Source #

(Semiring r, Ord a) => Unital r (Set a) Source # 
Instance details

Defined in Data.Algebra

Methods

aempty :: r -> Set a -> r Source #

Semiring r => Unital r (Seq a) Source # 
Instance details

Defined in Data.Algebra

Methods

aempty :: r -> Seq a -> r Source #

Semiring a => Unital a [a] Source # 
Instance details

Defined in Data.Algebra

Methods

aempty :: a -> [a] -> a Source #

(Unital a b, Unital a c) => Unital a (b, c) Source # 
Instance details

Defined in Data.Algebra

Methods

aempty :: a -> (b, c) -> a Source #

(Unital a b, Unital a c, Unital a d) => Unital a (b, c, d) Source # 
Instance details

Defined in Data.Algebra

Methods

aempty :: a -> (b, c, d) -> a Source #

unital :: FreeUnital a f => a -> f a Source #

Insert an element into an algebra.

>>> V4 1 2 3 4 .*. unital two :: V4 Int
V4 2 4 6 8

unit :: FreeUnital a f => f a Source #

Unital element of a unital algebra over a free semimodule.

>>> unit :: Complex Int
1 :+ 0
>>> unit :: QuatD
Quaternion 1.0 (V3 0.0 0.0 0.0)

Coalgebras

type FreeCoalgebra a f = (FreeSemimodule a f, Coalgebra a (Rep f)) Source #

A coalgebra over a free semimodule f.

class Semiring a => Coalgebra a c where Source #

A coalgebra over a semiring.

( id *** coempty ) . coappend = id = ( coempty *** id ) . coappend

Methods

coappend :: (c -> a) -> c -> c -> a Source #

Instances
Semiring r => Coalgebra r IntSet Source #

the free commutative band coalgebra over Int

Instance details

Defined in Data.Algebra

Methods

coappend :: (IntSet -> r) -> IntSet -> IntSet -> r Source #

Semiring r => Coalgebra r () Source # 
Instance details

Defined in Data.Algebra

Methods

coappend :: (() -> r) -> () -> () -> r Source #

Semiring r => Coalgebra r E4 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coappend :: (E4 -> r) -> E4 -> E4 -> r Source #

Semiring r => Coalgebra r E3 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coappend :: (E3 -> r) -> E3 -> E3 -> r Source #

Semiring r => Coalgebra r E2 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coappend :: (E2 -> r) -> E2 -> E2 -> r Source #

Semiring r => Coalgebra r E1 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coappend :: (E1 -> r) -> E1 -> E1 -> r Source #

(Semiring r, Ord a) => Coalgebra r (Set a) Source #

the free commutative band coalgebra

Instance details

Defined in Data.Algebra

Methods

coappend :: (Set a -> r) -> Set a -> Set a -> r Source #

Semiring r => Coalgebra r (Seq a) Source #

The tensor Hopf algebra

Instance details

Defined in Data.Algebra

Methods

coappend :: (Seq a -> r) -> Seq a -> Seq a -> r Source #

Semiring r => Coalgebra r [a] Source #

The tensor Hopf algebra Δ(x) = x ⊗ 1 + 1 ⊗ x, x in V, Δ(1) = 1 ⊗ 1

Instance details

Defined in Data.Algebra

Methods

coappend :: ([a] -> r) -> [a] -> [a] -> r Source #

Algebra r a => Coalgebra r (a -> r) Source # 
Instance details

Defined in Data.Algebra

Methods

coappend :: ((a -> r) -> r) -> (a -> r) -> (a -> r) -> r Source #

(Coalgebra r a, Coalgebra r b) => Coalgebra r (a, b) Source # 
Instance details

Defined in Data.Algebra

Methods

coappend :: ((a, b) -> r) -> (a, b) -> (a, b) -> r Source #

(Coalgebra r a, Coalgebra r b, Coalgebra r c) => Coalgebra r (a, b, c) Source # 
Instance details

Defined in Data.Algebra

Methods

coappend :: ((a, b, c) -> r) -> (a, b, c) -> (a, b, c) -> r Source #

type FreeCounital a f = (FreeCoalgebra a f, Counital a (Rep f)) Source #

A counital coalgebra over a free semimodule f.

class Coalgebra a c => Counital a c where Source #

A counital coalgebra over a semiring.

Methods

coempty :: (c -> a) -> a Source #

Instances
Semiring r => Counital r IntSet Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: (IntSet -> r) -> r Source #

Semiring r => Counital r () Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: (() -> r) -> r Source #

Semiring r => Counital r E4 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coempty :: (E4 -> r) -> r Source #

Semiring r => Counital r E3 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coempty :: (E3 -> r) -> r Source #

Semiring r => Counital r E2 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coempty :: (E2 -> r) -> r Source #

Semiring r => Counital r E1 Source # 
Instance details

Defined in Data.Semimodule.Basis

Methods

coempty :: (E1 -> r) -> r Source #

(Semiring r, Ord a) => Counital r (Set a) Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: (Set a -> r) -> r Source #

Semiring r => Counital r (Seq a) Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: (Seq a -> r) -> r Source #

Semiring r => Counital r [a] Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: ([a] -> r) -> r Source #

Algebra r a => Counital r (a -> r) Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: ((a -> r) -> r) -> r Source #

(Counital r a, Counital r b) => Counital r (a, b) Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: ((a, b) -> r) -> r Source #

(Counital r a, Counital r b, Counital r c) => Counital r (a, b, c) Source # 
Instance details

Defined in Data.Algebra

Methods

coempty :: ((a, b, c) -> r) -> r Source #

counital :: FreeCounital a f => f a -> a Source #

Obtain an element from a coalgebra over a free semimodule.

Bialgebras

type FreeBialgebra a f = (FreeAlgebra a f, FreeCoalgebra a f, Bialgebra a (Rep f)) Source #

A bialgebra over a free semimodule f.

class (Unital a b, Counital a b) => Bialgebra a b Source #

A bialgebra over a semiring.

Instances
Semiring r => Bialgebra r E4 Source # 
Instance details

Defined in Data.Semimodule.Basis

Semiring r => Bialgebra r E3 Source # 
Instance details

Defined in Data.Semimodule.Basis

Semiring r => Bialgebra r E2 Source # 
Instance details

Defined in Data.Semimodule.Basis

Semiring r => Bialgebra r E1 Source # 
Instance details

Defined in Data.Semimodule.Basis