-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Constructive abstract algebra -- -- Constructive abstract algebra @package algebra @version 0.7.0 module Numeric.Natural.Internal newtype Natural Natural :: Integer -> Natural runNatural :: Natural -> Integer class Integral n => Whole n toNatural :: Whole n => n -> Natural unsafePred :: Whole n => n -> n instance Eq Natural instance Ord Natural instance Whole Natural instance Whole Word64 instance Whole Word32 instance Whole Word16 instance Whole Word8 instance Whole Word instance Integral Natural instance Enum Natural instance Real Natural instance Num Natural instance Read Natural instance Show Natural module Numeric.Natural data Natural class Integral n => Whole n toNatural :: Whole n => n -> Natural module Numeric.Band.Rectangular -- | a rectangular band is a nowhere commutative semigroup. That is to say, -- if ab = ba then a = b. From this it follows classically that aa = a -- and that such a band is isomorphic to the following structure data Rect i j Rect :: i -> j -> Rect i j instance (Eq i, Eq j) => Eq (Rect i j) instance (Ord i, Ord j) => Ord (Rect i j) instance (Show i, Show j) => Show (Rect i j) instance (Read i, Read j) => Read (Rect i j) instance Band (Rect i j) instance Multiplicative (Rect i j) instance Semigroupoid Rect module Numeric.Covector -- | Linear functionals from elements of an (infinite) free module to a -- scalar newtype Covector r a Covector :: ((a -> r) -> r) -> Covector r a counitM :: UnitalAlgebra r a => a -> Covector r () unitM :: CounitalCoalgebra r c => Covector r c comultM :: Algebra r a => a -> Covector r (a, a) multM :: Coalgebra r c => c -> c -> Covector r c invM :: InvolutiveAlgebra r h => h -> Covector r h coinvM :: InvolutiveCoalgebra r h => h -> Covector r h -- | convolveM antipodeM return = convolveM return antipodeM = comultM -- >=> uncurry joinM antipodeM :: HopfAlgebra r h => h -> Covector r h convolveM :: (Algebra r c, Coalgebra r a) => (c -> Covector r a) -> (c -> Covector r a) -> c -> Covector r a memoM :: HasTrie a => a -> Covector s a instance RightModule r s => RightModule r (Covector s m) instance Coalgebra r m => RightModule (Covector r m) (Covector r m) instance LeftModule r s => LeftModule r (Covector s m) instance Coalgebra r m => LeftModule (Covector r m) (Covector r m) instance Group s => Group (Covector s a) instance Abelian s => Abelian (Covector s a) instance Monoidal s => Monoidal (Covector s a) instance (Idempotent r, IdempotentCoalgebra r a) => Band (Covector r a) instance Idempotent r => Idempotent (Covector r a) instance (Ring r, CounitalCoalgebra r m) => Ring (Covector r m) instance (Rig r, CounitalCoalgebra r m) => Rig (Covector r m) instance CounitalCoalgebra r m => Unital (Covector r m) instance Coalgebra r m => Semiring (Covector r m) instance (Commutative m, Coalgebra r m) => Commutative (Covector r m) instance Coalgebra r m => Multiplicative (Covector r m) instance Additive r => Additive (Covector r a) instance Monoidal r => MonadPlus (Covector r) instance Monoidal r => Alternative (Covector r) instance Monoidal r => Plus (Covector r) instance Additive r => Alt (Covector r) instance Monad (Covector r) instance Bind (Covector r) instance Applicative (Covector r) instance Apply (Covector r) instance Functor (Covector r) module Numeric.Algebra.Distinguished.Class class Distinguished t e :: Distinguished t => t instance Distinguished a => Distinguished (Covector r a) module Numeric.Algebra.Complex.Class class Distinguished r => Complicated r i :: Complicated r => r instance Complicated a => Complicated (Covector r a) module Numeric.Algebra.Quaternion.Class class Complicated t => Hamiltonian t j :: Hamiltonian t => t k :: Hamiltonian t => t instance Hamiltonian a => Hamiltonian (Covector r a) module Numeric.Algebra.Dual.Class class Distinguished t => Infinitesimal t d :: Infinitesimal t => t instance Infinitesimal a => Infinitesimal (Covector r a) module Numeric.Coalgebra.Hyperbolic.Class class Hyperbolic r cosh :: Hyperbolic r => r sinh :: Hyperbolic r => r instance Hyperbolic a => Hyperbolic (Covector r a) module Numeric.Coalgebra.Trigonometric.Class class Trigonometric r cos :: Trigonometric r => r sin :: Trigonometric r => r instance Trigonometric a => Trigonometric (Covector r a) module Numeric.Algebra -- |
-- (a + b) + c = a + (b + c) -- replicate 1 a = a -- replicate (2 * n) a = replicate n a + replicate n a -- replicate (2 * n + 1) a = replicate n a + replicate n a + a --class Additive r (+) :: Additive r => r -> r -> r replicate1p :: (Additive r, Whole n) => n -> r -> r sumWith1 :: (Additive r, Foldable1 f) => (a -> r) -> f a -> r sum1 :: (Foldable1 f, Additive r) => f r -> r -- | an additive abelian semigroup -- -- a + b = b + a class Additive r => Abelian r -- | An additive semigroup with idempotent addition. -- --
-- a + a = a --class Additive r => Idempotent r replicate1pIdempotent :: Natural -> r -> r replicateIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r class Additive m => Partitionable m partitionWith :: Partitionable m => (m -> m -> r) -> m -> NonEmpty r -- | An additive monoid -- --
-- zero + a = a = a + zero --class (LeftModule Natural m, RightModule Natural m) => Monoidal m zero :: Monoidal m => m replicate :: (Monoidal m, Whole n) => n -> m -> m sumWith :: (Monoidal m, Foldable f) => (a -> m) -> f a -> m sum :: (Foldable f, Monoidal m) => f m -> m class (LeftModule Integer r, RightModule Integer r, Monoidal r) => Group r (-) :: Group r => r -> r -> r negate :: Group r => r -> r subtract :: Group r => r -> r -> r times :: (Group r, Integral n) => n -> r -> r -- | A multiplicative semigroup class Multiplicative r (*) :: Multiplicative r => r -> r -> r pow1p :: (Multiplicative r, Whole n) => r -> n -> r productWith1 :: (Multiplicative r, Foldable1 f) => (a -> r) -> f a -> r product1 :: (Foldable1 f, Multiplicative r) => f r -> r -- | A commutative multiplicative semigroup class Multiplicative r => Commutative r class Multiplicative r => Unital r one :: Unital r => r pow :: (Unital r, Whole n) => r -> n -> r productWith :: (Unital r, Foldable f) => (a -> r) -> f a -> r product :: (Foldable f, Unital r) => f r -> r -- | An multiplicative semigroup with idempotent multiplication. -- --
-- a * a = a --class Multiplicative r => Band r pow1pBand :: Whole n => r -> n -> r powBand :: (Unital r, Whole n) => r -> n -> r class Unital r => Division r recip :: Division r => r -> r (/) :: Division r => r -> r -> r (\\) :: Division r => r -> r -> r (^) :: (Division r, Integral n) => r -> n -> r -- | `factorWith f c` returns a non-empty list containing `f a b` for all -- `a, b` such that `a * b = c`. -- -- Results of factorWith f 0 are undefined and may result in either an -- error or an infinite list. class Multiplicative m => Factorable m factorWith :: Factorable m => (m -> m -> r) -> m -> NonEmpty r -- | An semigroup with involution -- --
-- adjoint a * adjoint b = adjoint (b * a) --class Multiplicative r => InvolutiveMultiplication r adjoint :: InvolutiveMultiplication r => r -> r -- |
-- adjoint = id --class (Commutative r, InvolutiveMultiplication r) => TriviallyInvolutive r -- | A pair of an additive abelian semigroup, and a multiplicative -- semigroup, with the distributive laws: -- --
-- a(b + c) = ab + ac -- left distribution (we are a LeftNearSemiring) -- (a + b)c = ac + bc -- right distribution (we are a [Right]NearSemiring) ---- -- Common notation includes the laws for additive and multiplicative -- identity in semiring. -- -- If you want that, look at Rig instead. -- -- Ideally we'd use the cyclic definition: -- --
-- class (LeftModule r r, RightModule r r, Additive r, Abelian r, Multiplicative r) => Semiring r ---- -- to enforce that every semiring r is an r-module over itself, but -- Haskell doesn't like that. class (Additive r, Abelian r, Multiplicative r) => Semiring r -- | adjoint (x + y) = adjoint x + adjoint y class (Semiring r, InvolutiveMultiplication r) => InvolutiveSemiring r class (Semiring r, Idempotent r) => Dioid r -- | A Ring without an identity. class (Group r, Semiring r) => Rng r -- | A Ring without (n)egation class (Semiring r, Unital r, Monoidal r) => Rig r fromNatural :: Rig r => Natural -> r class (Rig r, Rng r) => Ring r fromInteger :: Ring r => Integer -> r class (Division r, Ring r) => DivisionRing r class (Commutative r, DivisionRing r) => Field r class (Semiring r, Additive m) => LeftModule r m (.*) :: LeftModule r m => r -> m -> m class (Semiring r, Additive m) => RightModule r m (*.) :: RightModule r m => m -> r -> m class (LeftModule r m, RightModule r m) => Module r m -- | An associative algebra built with a free module over a semiring class Semiring r => Algebra r a mult :: Algebra r a => (a -> a -> r) -> a -> r class Semiring r => Coalgebra r c comult :: Coalgebra r c => (c -> r) -> c -> c -> r -- | An associative unital algebra over a semiring, built using a free -- module class Algebra r a => UnitalAlgebra r a unit :: UnitalAlgebra r a => r -> a -> r class Coalgebra r c => CounitalCoalgebra r c counit :: CounitalCoalgebra r c => (c -> r) -> r -- | A bialgebra is both a unital algebra and counital coalgebra where the -- mult and unit are compatible in some sense with the -- comult and counit. That is to say that mult and -- unit are a coalgebra homomorphisms or (equivalently) that -- comult and counit are an algebra homomorphisms. class (UnitalAlgebra r a, CounitalCoalgebra r a) => Bialgebra r a class (InvolutiveSemiring r, Algebra r a) => InvolutiveAlgebra r a inv :: InvolutiveAlgebra r a => (a -> r) -> a -> r class (InvolutiveSemiring r, Coalgebra r c) => InvolutiveCoalgebra r c coinv :: InvolutiveCoalgebra r c => (c -> r) -> c -> r class (Bialgebra r h, InvolutiveAlgebra r h, InvolutiveCoalgebra r h) => InvolutiveBialgebra r h class (CommutativeAlgebra r a, TriviallyInvolutive r, InvolutiveAlgebra r a) => TriviallyInvolutiveAlgebra r a class (CocommutativeCoalgebra r a, TriviallyInvolutive r, InvolutiveCoalgebra r a) => TriviallyInvolutiveCoalgebra r a class (InvolutiveBialgebra r h, TriviallyInvolutiveAlgebra r h, TriviallyInvolutiveCoalgebra r h) => TriviallyInvolutiveBialgebra r h class Algebra r a => IdempotentAlgebra r a class (Bialgebra r h, IdempotentAlgebra r h, IdempotentCoalgebra r h) => IdempotentBialgebra r h class Algebra r a => CommutativeAlgebra r a class (Bialgebra r h, CommutativeAlgebra r h, CocommutativeCoalgebra r h) => CommutativeBialgebra r h class Coalgebra r c => CocommutativeCoalgebra r c class UnitalAlgebra r a => DivisionAlgebra r a recipriocal :: DivisionAlgebra r a => (a -> r) -> a -> r -- | A HopfAlgebra algebra on a semiring, where the module is free. -- -- When antipode . antipode = id and antipode is an -- antihomomorphism then we are an InvolutiveBialgebra with inv = -- antipode as well class Bialgebra r h => HopfAlgebra r h antipode :: HopfAlgebra r h => (h -> r) -> h -> r class Rig r => Characteristic r char :: Characteristic r => proxy r -> Natural charInt :: (Integral s, Bounded s) => proxy s -> Natural charWord :: (Whole s, Bounded s) => proxy s -> Natural class Order a (<~) :: Order a => a -> a -> Bool (<) :: Order a => a -> a -> Bool (>~) :: Order a => a -> a -> Bool (>) :: Order a => a -> a -> Bool (~~) :: Order a => a -> a -> Bool (/~) :: Order a => a -> a -> Bool order :: Order a => a -> a -> Maybe Ordering comparable :: Order a => a -> a -> Bool class (AdditiveOrder r, Rig r) => OrderedRig r -- | z + x <= z + y = x <= y = x + z <= y + z class (Additive r, Order r) => AdditiveOrder r class Monoidal r => DecidableZero r class Unital r => DecidableUnits r class Unital r => DecidableAssociates r data Natural class Integral n => Whole n toNatural :: Whole n => n -> Natural -- | `Additive.(+)` default definition addRep :: (Zip m, Additive r) => m r -> m r -> m r -- | Additive.replicate1p default definition replicate1pRep :: (Whole n, Functor m, Additive r) => n -> m r -> m r -- | Monoidal.zero default definition zeroRep :: (Applicative m, Monoidal r) => m r -- | Monoidal.replicate default definition replicateRep :: (Whole n, Functor m, Monoidal r) => n -> m r -> m r -- | Group.negate default definition negateRep :: (Functor m, Group r) => m r -> m r -- | `Group.(-)` default definition minusRep :: (Zip m, Group r) => m r -> m r -> m r -- | Group.subtract default definition subtractRep :: (Zip m, Group r) => m r -> m r -> m r -- | Group.times default definition timesRep :: (Integral n, Functor m, Group r) => n -> m r -> m r -- | `Multiplicative.(*)` default definition mulRep :: (Representable m, Algebra r (Key m)) => m r -> m r -> m r -- | Unital.one default definition oneRep :: (Representable m, Unital r, UnitalAlgebra r (Key m)) => m r -- | Rig.fromNatural default definition fromNaturalRep :: (UnitalAlgebra r (Key m), Representable m, Rig r) => Natural -> m r -- | Ring.fromInteger default definition fromIntegerRep :: (UnitalAlgebra r (Key m), Representable m, Ring r) => Integer -> m r class Additive r => Quadrance r m quadrance :: Quadrance r m => m -> r -- | Linear functionals from elements of an (infinite) free module to a -- scalar newtype Covector r a Covector :: ((a -> r) -> r) -> Covector r a counitM :: UnitalAlgebra r a => a -> Covector r () unitM :: CounitalCoalgebra r c => Covector r c comultM :: Algebra r a => a -> Covector r (a, a) multM :: Coalgebra r c => c -> c -> Covector r c invM :: InvolutiveAlgebra r h => h -> Covector r h coinvM :: InvolutiveCoalgebra r h => h -> Covector r h -- | convolveM antipodeM return = convolveM return antipodeM = comultM -- >=> uncurry joinM antipodeM :: HopfAlgebra r h => h -> Covector r h convolveM :: (Algebra r c, Coalgebra r a) => (c -> Covector r a) -> (c -> Covector r a) -> c -> Covector r a memoM :: HasTrie a => a -> Covector s a module Numeric.Algebra.Complex class Distinguished t e :: Distinguished t => t class Distinguished r => Complicated r i :: Complicated r => r data ComplexBasis E :: ComplexBasis I :: ComplexBasis data Complex a Complex :: a -> a -> Complex a realPart :: (Representable f, (Key f) ~ ComplexBasis) => f a -> a imagPart :: (Representable f, (Key f) ~ ComplexBasis) => f a -> a -- | half of the Cayley-Dickson quaternion isomorphism uncomplicate :: Hamiltonian q => ComplexBasis -> ComplexBasis -> q instance Typeable ComplexBasis instance Typeable1 Complex instance Eq ComplexBasis instance Ord ComplexBasis instance Show ComplexBasis instance Read ComplexBasis instance Enum ComplexBasis instance Ix ComplexBasis instance Bounded ComplexBasis instance Data ComplexBasis instance Eq a => Eq (Complex a) instance Show a => Show (Complex a) instance Read a => Read (Complex a) instance Data a => Data (Complex a) instance (Commutative r, InvolutiveSemiring r, DivisionRing r) => Division (Complex r) instance (Commutative r, Rng r, InvolutiveSemiring r) => Quadrance r (Complex r) instance (Commutative r, Rng r, InvolutiveSemiring r) => InvolutiveSemiring (Complex r) instance (Commutative r, Rng r, InvolutiveMultiplication r) => InvolutiveMultiplication (Complex r) instance (Commutative r, Rng r) => RightModule (Complex r) (Complex r) instance (Commutative r, Rng r) => LeftModule (Complex r) (Complex r) instance (Commutative r, Ring r) => Ring (Complex r) instance (Commutative r, Ring r) => Rig (Complex r) instance (Commutative r, Ring r) => Unital (Complex r) instance (Commutative r, Rng r) => Semiring (Complex r) instance (TriviallyInvolutive r, Rng r) => Commutative (Complex r) instance (Commutative r, Rng r) => Multiplicative (Complex r) instance (InvolutiveSemiring k, Rng k) => HopfAlgebra k ComplexBasis instance (InvolutiveSemiring k, Rng k) => InvolutiveCoalgebra k ComplexBasis instance (InvolutiveSemiring k, Rng k) => InvolutiveAlgebra k ComplexBasis instance Rng k => Bialgebra k ComplexBasis instance Rng k => CounitalCoalgebra k ComplexBasis instance Rng k => Coalgebra k ComplexBasis instance Rng k => UnitalAlgebra k ComplexBasis instance Rng k => Algebra k ComplexBasis instance Partitionable r => Partitionable (Complex r) instance Idempotent r => Idempotent (Complex r) instance Abelian r => Abelian (Complex r) instance Group r => Group (Complex r) instance Monoidal r => Monoidal (Complex r) instance RightModule r s => RightModule r (Complex s) instance LeftModule r s => LeftModule r (Complex s) instance Additive r => Additive (Complex r) instance HasTrie ComplexBasis instance TraversableWithKey1 Complex instance Traversable1 Complex instance FoldableWithKey1 Complex instance Foldable1 Complex instance TraversableWithKey Complex instance Traversable Complex instance FoldableWithKey Complex instance Foldable Complex instance MonadReader ComplexBasis Complex instance Monad Complex instance Bind Complex instance Applicative Complex instance Apply Complex instance Keyed Complex instance ZipWithKey Complex instance Zip Complex instance Functor Complex instance Distributive Complex instance Adjustable Complex instance Lookup Complex instance Indexable Complex instance Representable Complex instance Rig r => Complicated (ComplexBasis :->: r) instance Rig r => Distinguished (ComplexBasis :->: r) instance Rig r => Complicated (ComplexBasis -> r) instance Rig r => Distinguished (ComplexBasis -> r) instance Rig r => Complicated (Complex r) instance Rig r => Distinguished (Complex r) instance Complicated ComplexBasis instance Distinguished ComplexBasis module Numeric.Algebra.Quaternion class Distinguished t e :: Distinguished t => t class Distinguished r => Complicated r i :: Complicated r => r class Complicated t => Hamiltonian t j :: Hamiltonian t => t k :: Hamiltonian t => t data QuaternionBasis E :: QuaternionBasis I :: QuaternionBasis J :: QuaternionBasis K :: QuaternionBasis data Quaternion a Quaternion :: a -> a -> a -> a -> Quaternion a -- | Cayley-Dickson quaternion isomorphism (one way) complicate :: Complicated c => QuaternionBasis -> (c, c) vectorPart :: (Representable f, (Key f) ~ QuaternionBasis) => f r -> (r, r, r) scalarPart :: (Representable f, (Key f) ~ QuaternionBasis) => f r -> r instance Typeable QuaternionBasis instance Typeable1 Quaternion instance Eq QuaternionBasis instance Ord QuaternionBasis instance Enum QuaternionBasis instance Read QuaternionBasis instance Show QuaternionBasis instance Bounded QuaternionBasis instance Ix QuaternionBasis instance Data QuaternionBasis instance Eq a => Eq (Quaternion a) instance Show a => Show (Quaternion a) instance Read a => Read (Quaternion a) instance Data a => Data (Quaternion a) instance (TriviallyInvolutive r, Ring r, Division r) => Division (Quaternion r) instance (TriviallyInvolutive r, Rng r) => Quadrance r (Quaternion r) instance (TriviallyInvolutive r, Rng r) => InvolutiveMultiplication (Quaternion r) instance (TriviallyInvolutive r, Rng r) => RightModule (Quaternion r) (Quaternion r) instance (TriviallyInvolutive r, Rng r) => LeftModule (Quaternion r) (Quaternion r) instance (TriviallyInvolutive r, Ring r) => Ring (Quaternion r) instance (TriviallyInvolutive r, Ring r) => Rig (Quaternion r) instance (TriviallyInvolutive r, Ring r) => Unital (Quaternion r) instance (TriviallyInvolutive r, Rng r) => Semiring (Quaternion r) instance (TriviallyInvolutive r, Rng r) => Multiplicative (Quaternion r) instance (TriviallyInvolutive r, InvolutiveSemiring r, Rng r) => HopfAlgebra r QuaternionBasis instance (TriviallyInvolutive r, InvolutiveSemiring r, Rng r) => InvolutiveCoalgebra r QuaternionBasis instance (TriviallyInvolutive r, InvolutiveSemiring r, Rng r) => InvolutiveAlgebra r QuaternionBasis instance (TriviallyInvolutive r, Rng r) => Bialgebra r QuaternionBasis instance (TriviallyInvolutive r, Rng r) => CounitalCoalgebra r QuaternionBasis instance (TriviallyInvolutive r, Rng r) => Coalgebra r QuaternionBasis instance (TriviallyInvolutive r, Rng r) => UnitalAlgebra r QuaternionBasis instance (TriviallyInvolutive r, Rng r) => Algebra r QuaternionBasis instance Partitionable r => Partitionable (Quaternion r) instance Idempotent r => Idempotent (Quaternion r) instance Abelian r => Abelian (Quaternion r) instance Group r => Group (Quaternion r) instance Monoidal r => Monoidal (Quaternion r) instance RightModule r s => RightModule r (Quaternion s) instance LeftModule r s => LeftModule r (Quaternion s) instance Additive r => Additive (Quaternion r) instance HasTrie QuaternionBasis instance TraversableWithKey1 Quaternion instance Traversable1 Quaternion instance FoldableWithKey1 Quaternion instance Foldable1 Quaternion instance TraversableWithKey Quaternion instance Traversable Quaternion instance FoldableWithKey Quaternion instance Foldable Quaternion instance MonadReader QuaternionBasis Quaternion instance Monad Quaternion instance Bind Quaternion instance Applicative Quaternion instance Apply Quaternion instance Keyed Quaternion instance ZipWithKey Quaternion instance Zip Quaternion instance Functor Quaternion instance Distributive Quaternion instance Adjustable Quaternion instance Lookup Quaternion instance Indexable Quaternion instance Representable Quaternion instance Rig r => Hamiltonian (QuaternionBasis -> r) instance Rig r => Complicated (QuaternionBasis -> r) instance Rig r => Distinguished (QuaternionBasis -> r) instance Rig r => Hamiltonian (QuaternionBasis :->: r) instance Rig r => Complicated (QuaternionBasis :->: r) instance Rig r => Distinguished (QuaternionBasis :->: r) instance Rig r => Hamiltonian (Quaternion r) instance Rig r => Complicated (Quaternion r) instance Rig r => Distinguished (Quaternion r) instance Hamiltonian QuaternionBasis instance Complicated QuaternionBasis instance Distinguished QuaternionBasis module Numeric.Algebra.Dual class Distinguished t e :: Distinguished t => t class Distinguished t => Infinitesimal t d :: Infinitesimal t => t -- | dual number basis, D^2 = 0. D /= 0. data DualBasis E :: DualBasis D :: DualBasis data Dual a Dual :: a -> a -> Dual a instance Typeable DualBasis instance Typeable1 Dual instance Eq DualBasis instance Ord DualBasis instance Show DualBasis instance Read DualBasis instance Enum DualBasis instance Ix DualBasis instance Bounded DualBasis instance Data DualBasis instance Eq a => Eq (Dual a) instance Show a => Show (Dual a) instance Read a => Read (Dual a) instance Data a => Data (Dual a) instance (Commutative r, InvolutiveSemiring r, DivisionRing r) => Division (Dual r) instance (Commutative r, Rng r, InvolutiveSemiring r) => Quadrance r (Dual r) instance (Commutative r, Rng r, InvolutiveSemiring r) => InvolutiveSemiring (Dual r) instance (Commutative r, Rng r, InvolutiveSemiring r) => InvolutiveMultiplication (Dual r) instance (Commutative r, Rng r) => RightModule (Dual r) (Dual r) instance (Commutative r, Rng r) => LeftModule (Dual r) (Dual r) instance (Commutative r, Ring r) => Ring (Dual r) instance (Commutative r, Ring r) => Rig (Dual r) instance (Commutative r, Ring r) => Unital (Dual r) instance (Commutative r, Rng r) => Semiring (Dual r) instance (TriviallyInvolutive r, Rng r) => Commutative (Dual r) instance (Commutative r, Rng r) => Multiplicative (Dual r) instance (InvolutiveSemiring k, Rng k) => HopfAlgebra k DualBasis instance (InvolutiveSemiring k, Rng k) => InvolutiveCoalgebra k DualBasis instance (InvolutiveSemiring k, Rng k) => InvolutiveAlgebra k DualBasis instance Rng k => Bialgebra k DualBasis instance Rng k => CounitalCoalgebra k DualBasis instance Rng k => Coalgebra k DualBasis instance Rng k => UnitalAlgebra k DualBasis instance Rng k => Algebra k DualBasis instance Partitionable r => Partitionable (Dual r) instance Idempotent r => Idempotent (Dual r) instance Abelian r => Abelian (Dual r) instance Group r => Group (Dual r) instance Monoidal r => Monoidal (Dual r) instance RightModule r s => RightModule r (Dual s) instance LeftModule r s => LeftModule r (Dual s) instance Additive r => Additive (Dual r) instance HasTrie DualBasis instance TraversableWithKey1 Dual instance Traversable1 Dual instance FoldableWithKey1 Dual instance Foldable1 Dual instance TraversableWithKey Dual instance Traversable Dual instance FoldableWithKey Dual instance Foldable Dual instance MonadReader DualBasis Dual instance Monad Dual instance Bind Dual instance Applicative Dual instance Apply Dual instance Keyed Dual instance ZipWithKey Dual instance Zip Dual instance Functor Dual instance Distributive Dual instance Adjustable Dual instance Lookup Dual instance Indexable Dual instance Representable Dual instance Rig r => Infinitesimal (DualBasis -> r) instance Rig r => Distinguished (DualBasis -> r) instance Rig r => Infinitesimal (Dual r) instance Rig r => Distinguished (Dual r) instance Infinitesimal DualBasis instance Distinguished DualBasis module Numeric.Algebra.Hyperbolic class Hyperbolic r cosh :: Hyperbolic r => r sinh :: Hyperbolic r => r data HyperBasis' Cosh' :: HyperBasis' Sinh' :: HyperBasis' data Hyper' a Hyper' :: a -> a -> Hyper' a instance Typeable HyperBasis' instance Typeable1 Hyper' instance Eq HyperBasis' instance Ord HyperBasis' instance Show HyperBasis' instance Read HyperBasis' instance Enum HyperBasis' instance Ix HyperBasis' instance Bounded HyperBasis' instance Data HyperBasis' instance Eq a => Eq (Hyper' a) instance Show a => Show (Hyper' a) instance Read a => Read (Hyper' a) instance Data a => Data (Hyper' a) instance (Commutative r, InvolutiveSemiring r, DivisionRing r) => Division (Hyper' r) instance (Commutative r, InvolutiveSemiring r, Rng r) => Quadrance r (Hyper' r) instance (Commutative r, InvolutiveSemiring r, Rng r) => InvolutiveSemiring (Hyper' r) instance (Commutative r, InvolutiveSemiring r, Rng r) => InvolutiveMultiplication (Hyper' r) instance (Commutative r, Semiring r) => RightModule (Hyper' r) (Hyper' r) instance (Commutative r, Semiring r) => LeftModule (Hyper' r) (Hyper' r) instance (Commutative r, Ring r) => Ring (Hyper' r) instance (Commutative r, Rig r) => Rig (Hyper' r) instance (Commutative k, Rig k) => Unital (Hyper' k) instance (Commutative k, Semiring k) => Semiring (Hyper' k) instance (Commutative k, Semiring k) => Commutative (Hyper' k) instance (Commutative k, Semiring k) => Multiplicative (Hyper' k) instance (Commutative k, Group k, InvolutiveSemiring k) => HopfAlgebra k HyperBasis' instance (Commutative k, Group k, InvolutiveSemiring k) => InvolutiveCoalgebra k HyperBasis' instance (Commutative k, Group k, InvolutiveSemiring k) => InvolutiveAlgebra k HyperBasis' instance (Commutative k, Monoidal k, Semiring k) => Bialgebra k HyperBasis' instance (Commutative k, Monoidal k, Semiring k) => CounitalCoalgebra k HyperBasis' instance (Commutative k, Monoidal k, Semiring k) => Coalgebra k HyperBasis' instance (Commutative k, Monoidal k, Semiring k) => UnitalAlgebra k HyperBasis' instance (Commutative k, Semiring k) => Algebra k HyperBasis' instance Partitionable r => Partitionable (Hyper' r) instance Idempotent r => Idempotent (Hyper' r) instance Abelian r => Abelian (Hyper' r) instance Group r => Group (Hyper' r) instance Monoidal r => Monoidal (Hyper' r) instance RightModule r s => RightModule r (Hyper' s) instance LeftModule r s => LeftModule r (Hyper' s) instance Additive r => Additive (Hyper' r) instance HasTrie HyperBasis' instance TraversableWithKey1 Hyper' instance Traversable1 Hyper' instance FoldableWithKey1 Hyper' instance Foldable1 Hyper' instance TraversableWithKey Hyper' instance Traversable Hyper' instance FoldableWithKey Hyper' instance Foldable Hyper' instance MonadReader HyperBasis' Hyper' instance Monad Hyper' instance Bind Hyper' instance Applicative Hyper' instance Apply Hyper' instance Keyed Hyper' instance ZipWithKey Hyper' instance Zip Hyper' instance Functor Hyper' instance Distributive Hyper' instance Adjustable Hyper' instance Lookup Hyper' instance Indexable Hyper' instance Representable Hyper' instance Rig r => Hyperbolic (HyperBasis' -> r) instance Rig r => Hyperbolic (Hyper' r) instance Hyperbolic HyperBasis' module Numeric.Coalgebra.Hyperbolic class Hyperbolic r cosh :: Hyperbolic r => r sinh :: Hyperbolic r => r data HyperBasis Cosh :: HyperBasis Sinh :: HyperBasis data Hyper a Hyper :: a -> a -> Hyper a instance Typeable HyperBasis instance Typeable1 Hyper instance Eq HyperBasis instance Ord HyperBasis instance Show HyperBasis instance Read HyperBasis instance Enum HyperBasis instance Ix HyperBasis instance Bounded HyperBasis instance Data HyperBasis instance Eq a => Eq (Hyper a) instance Show a => Show (Hyper a) instance Read a => Read (Hyper a) instance Data a => Data (Hyper a) instance (Commutative r, Group r, InvolutiveSemiring r) => InvolutiveSemiring (Hyper r) instance (Commutative r, Group r, InvolutiveSemiring r) => InvolutiveMultiplication (Hyper r) instance (Commutative r, Semiring r) => RightModule (Hyper r) (Hyper r) instance (Commutative r, Semiring r) => LeftModule (Hyper r) (Hyper r) instance (Commutative r, Ring r) => Ring (Hyper r) instance (Commutative r, Rig r) => Rig (Hyper r) instance (Commutative k, Rig k) => Unital (Hyper k) instance (Commutative k, Semiring k) => Semiring (Hyper k) instance (Commutative k, Semiring k) => Commutative (Hyper k) instance (Commutative k, Semiring k) => Multiplicative (Hyper k) instance (Commutative k, Group k, InvolutiveSemiring k) => HopfAlgebra k HyperBasis instance (Commutative k, Group k, InvolutiveSemiring k) => InvolutiveCoalgebra k HyperBasis instance (Commutative k, Group k, InvolutiveSemiring k) => InvolutiveAlgebra k HyperBasis instance (Commutative k, Semiring k) => Bialgebra k HyperBasis instance (Commutative k, Semiring k) => CounitalCoalgebra k HyperBasis instance (Commutative k, Semiring k) => Coalgebra k HyperBasis instance Semiring k => UnitalAlgebra k HyperBasis instance Semiring k => Algebra k HyperBasis instance Partitionable r => Partitionable (Hyper r) instance Idempotent r => Idempotent (Hyper r) instance Abelian r => Abelian (Hyper r) instance Group r => Group (Hyper r) instance Monoidal r => Monoidal (Hyper r) instance RightModule r s => RightModule r (Hyper s) instance LeftModule r s => LeftModule r (Hyper s) instance Additive r => Additive (Hyper r) instance HasTrie HyperBasis instance TraversableWithKey1 Hyper instance Traversable1 Hyper instance FoldableWithKey1 Hyper instance Foldable1 Hyper instance TraversableWithKey Hyper instance Traversable Hyper instance FoldableWithKey Hyper instance Foldable Hyper instance MonadReader HyperBasis Hyper instance Monad Hyper instance Bind Hyper instance Applicative Hyper instance Apply Hyper instance Keyed Hyper instance ZipWithKey Hyper instance Zip Hyper instance Functor Hyper instance Distributive Hyper instance Adjustable Hyper instance Lookup Hyper instance Indexable Hyper instance Representable Hyper instance Rig r => Hyperbolic (HyperBasis -> r) instance Rig r => Hyperbolic (Hyper r) instance Hyperbolic HyperBasis module Numeric.Coalgebra.Dual class Distinguished t e :: Distinguished t => t class Distinguished t => Infinitesimal t d :: Infinitesimal t => t -- | dual number basis, D^2 = 0. D /= 0. data DualBasis' E :: DualBasis' D :: DualBasis' data Dual' a Dual' :: a -> a -> Dual' a instance Typeable DualBasis' instance Typeable1 Dual' instance Eq DualBasis' instance Ord DualBasis' instance Show DualBasis' instance Read DualBasis' instance Enum DualBasis' instance Ix DualBasis' instance Bounded DualBasis' instance Data DualBasis' instance Eq a => Eq (Dual' a) instance Show a => Show (Dual' a) instance Read a => Read (Dual' a) instance Data a => Data (Dual' a) instance (Commutative r, InvolutiveSemiring r, DivisionRing r) => Division (Dual' r) instance (Commutative r, Rng r, InvolutiveSemiring r) => Quadrance r (Dual' r) instance (Commutative r, Rng r, InvolutiveSemiring r) => InvolutiveSemiring (Dual' r) instance (Commutative r, Rng r, InvolutiveSemiring r) => InvolutiveMultiplication (Dual' r) instance (Commutative r, Rng r) => RightModule (Dual' r) (Dual' r) instance (Commutative r, Rng r) => LeftModule (Dual' r) (Dual' r) instance (Commutative r, Ring r) => Ring (Dual' r) instance (Commutative r, Ring r) => Rig (Dual' r) instance (Commutative r, Ring r) => Unital (Dual' r) instance (Commutative r, Rng r) => Semiring (Dual' r) instance (TriviallyInvolutive r, Rng r) => Commutative (Dual' r) instance (Commutative r, Rng r) => Multiplicative (Dual' r) instance (InvolutiveSemiring k, Rng k) => HopfAlgebra k DualBasis' instance (InvolutiveSemiring k, Rng k) => InvolutiveCoalgebra k DualBasis' instance (InvolutiveSemiring k, Rng k) => InvolutiveAlgebra k DualBasis' instance Rng k => Bialgebra k DualBasis' instance Rng k => CounitalCoalgebra k DualBasis' instance Rng k => Coalgebra k DualBasis' instance Semiring k => UnitalAlgebra k DualBasis' instance Semiring k => Algebra k DualBasis' instance Partitionable r => Partitionable (Dual' r) instance Idempotent r => Idempotent (Dual' r) instance Abelian r => Abelian (Dual' r) instance Group r => Group (Dual' r) instance Monoidal r => Monoidal (Dual' r) instance RightModule r s => RightModule r (Dual' s) instance LeftModule r s => LeftModule r (Dual' s) instance Additive r => Additive (Dual' r) instance HasTrie DualBasis' instance TraversableWithKey1 Dual' instance Traversable1 Dual' instance FoldableWithKey1 Dual' instance Foldable1 Dual' instance TraversableWithKey Dual' instance Traversable Dual' instance FoldableWithKey Dual' instance Foldable Dual' instance MonadReader DualBasis' Dual' instance Monad Dual' instance Bind Dual' instance Applicative Dual' instance Apply Dual' instance Keyed Dual' instance ZipWithKey Dual' instance Zip Dual' instance Functor Dual' instance Distributive Dual' instance Adjustable Dual' instance Lookup Dual' instance Indexable Dual' instance Representable Dual' instance Rig r => Infinitesimal (DualBasis' -> r) instance Rig r => Distinguished (DualBasis' -> r) instance Rig r => Infinitesimal (Dual' r) instance Rig r => Distinguished (Dual' r) instance Infinitesimal DualBasis' instance Distinguished DualBasis' module Numeric.Coalgebra.Trigonometric class Trigonometric r cos :: Trigonometric r => r sin :: Trigonometric r => r data TrigBasis Cos :: TrigBasis Sin :: TrigBasis data Trig a Trig :: a -> a -> Trig a instance Typeable TrigBasis instance Typeable1 Trig instance Eq TrigBasis instance Ord TrigBasis instance Show TrigBasis instance Read TrigBasis instance Enum TrigBasis instance Ix TrigBasis instance Bounded TrigBasis instance Data TrigBasis instance Eq a => Eq (Trig a) instance Show a => Show (Trig a) instance Read a => Read (Trig a) instance Data a => Data (Trig a) instance (Commutative r, Rng r, InvolutiveSemiring r) => InvolutiveSemiring (Trig r) instance (Commutative r, Rng r, InvolutiveMultiplication r) => InvolutiveMultiplication (Trig r) instance (Commutative r, Rng r) => RightModule (Trig r) (Trig r) instance (Commutative r, Rng r) => LeftModule (Trig r) (Trig r) instance (Commutative r, Ring r) => Ring (Trig r) instance (Commutative r, Ring r) => Rig (Trig r) instance (Commutative k, Ring k) => Unital (Trig k) instance (Commutative k, Rng k) => Semiring (Trig k) instance (Commutative k, Rng k) => Commutative (Trig k) instance (Commutative k, Rng k) => Multiplicative (Trig k) instance (Commutative k, Rng k) => CounitalCoalgebra k TrigBasis instance (Commutative k, Group k, InvolutiveSemiring k) => HopfAlgebra k TrigBasis instance (Commutative k, Group k, InvolutiveSemiring k) => InvolutiveCoalgebra k TrigBasis instance (Commutative k, Group k, InvolutiveSemiring k) => InvolutiveAlgebra k TrigBasis instance (Commutative k, Rng k) => Bialgebra k TrigBasis instance (Commutative k, Rng k) => Coalgebra k TrigBasis instance (Commutative k, Rng k) => UnitalAlgebra k TrigBasis instance (Commutative k, Rng k) => Algebra k TrigBasis instance Partitionable r => Partitionable (Trig r) instance Idempotent r => Idempotent (Trig r) instance Abelian r => Abelian (Trig r) instance Group r => Group (Trig r) instance Monoidal r => Monoidal (Trig r) instance RightModule r s => RightModule r (Trig s) instance LeftModule r s => LeftModule r (Trig s) instance Additive r => Additive (Trig r) instance HasTrie TrigBasis instance TraversableWithKey1 Trig instance Traversable1 Trig instance FoldableWithKey1 Trig instance Foldable1 Trig instance TraversableWithKey Trig instance Traversable Trig instance FoldableWithKey Trig instance Foldable Trig instance MonadReader TrigBasis Trig instance Monad Trig instance Bind Trig instance Applicative Trig instance Apply Trig instance Keyed Trig instance ZipWithKey Trig instance Zip Trig instance Functor Trig instance Distributive Trig instance Adjustable Trig instance Lookup Trig instance Indexable Trig instance Representable Trig instance Rig r => Complicated (TrigBasis :->: r) instance Rig r => Distinguished (TrigBasis :->: r) instance Rig r => Trigonometric (TrigBasis :->: r) instance Rig r => Trigonometric (TrigBasis -> r) instance Rig r => Complicated (TrigBasis -> r) instance Rig r => Distinguished (TrigBasis -> r) instance Rig r => Trigonometric (Trig r) instance Rig r => Complicated (Trig r) instance Rig r => Distinguished (Trig r) instance Trigonometric TrigBasis instance Complicated TrigBasis instance Distinguished TrigBasis module Numeric.Coalgebra.Geometric newtype BasisCoblade m BasisCoblade :: Word64 -> BasisCoblade m runBasisCoblade :: BasisCoblade m -> Word64 type Comultivector r m = Covector r (BasisCoblade m) class Eigenbasis m euclidean :: Eigenbasis m => proxy m -> Bool antiEuclidean :: Eigenbasis m => proxy m -> Bool v :: Eigenbasis m => m -> BasisCoblade m e :: Eigenbasis m => Int -> m class (Ring r, Eigenbasis m) => Eigenmetric r m metric :: Eigenmetric r m => m -> r grade :: BasisCoblade m -> Int filterGrade :: Monoidal r => BasisCoblade m -> Int -> Comultivector r m reverse :: Group r => BasisCoblade m -> Comultivector r m gradeInversion :: Group r => BasisCoblade m -> Comultivector r m cliffordConjugate :: Group r => BasisCoblade m -> Comultivector r m geometric :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m outer :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m contractL :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m contractR :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m hestenes :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m dot :: Eigenmetric r m => BasisCoblade m -> BasisCoblade m -> Comultivector r m liftProduct :: (BasisCoblade m -> BasisCoblade m -> Comultivector r m) -> Comultivector r m -> Comultivector r m -> Comultivector r m instance Typeable Euclidean instance Eq (BasisCoblade m) instance Ord (BasisCoblade m) instance Num (BasisCoblade m) instance Bits (BasisCoblade m) instance Enum (BasisCoblade m) instance Ix (BasisCoblade m) instance Bounded (BasisCoblade m) instance Show (BasisCoblade m) instance Read (BasisCoblade m) instance Real (BasisCoblade m) instance Integral (BasisCoblade m) instance Additive (BasisCoblade m) instance Abelian (BasisCoblade m) instance LeftModule Natural (BasisCoblade m) instance RightModule Natural (BasisCoblade m) instance Monoidal (BasisCoblade m) instance Multiplicative (BasisCoblade m) instance Unital (BasisCoblade m) instance Commutative (BasisCoblade m) instance Semiring (BasisCoblade m) instance Rig (BasisCoblade m) instance DecidableZero (BasisCoblade m) instance DecidableAssociates (BasisCoblade m) instance DecidableUnits (BasisCoblade m) instance Eq Euclidean instance Ord Euclidean instance Show Euclidean instance Read Euclidean instance Num Euclidean instance Ix Euclidean instance Enum Euclidean instance Real Euclidean instance Integral Euclidean instance Data Euclidean instance Additive Euclidean instance LeftModule Natural Euclidean instance RightModule Natural Euclidean instance Monoidal Euclidean instance Abelian Euclidean instance LeftModule Integer Euclidean instance RightModule Integer Euclidean instance Group Euclidean instance Multiplicative Euclidean instance TriviallyInvolutive Euclidean instance InvolutiveMultiplication Euclidean instance InvolutiveSemiring Euclidean instance Unital Euclidean instance Commutative Euclidean instance Semiring Euclidean instance Rig Euclidean instance Ring Euclidean instance Eigenmetric r m => CounitalCoalgebra r (BasisCoblade m) instance Eigenmetric r m => Coalgebra r (BasisCoblade m) instance Ring r => Eigenmetric r Euclidean instance Eigenbasis Euclidean instance HasTrie Euclidean instance HasTrie (BasisCoblade m) module Numeric.Coalgebra.Quaternion class Distinguished t e :: Distinguished t => t class Distinguished r => Complicated r i :: Complicated r => r class Complicated t => Hamiltonian t j :: Hamiltonian t => t k :: Hamiltonian t => t data QuaternionBasis' E' :: QuaternionBasis' I' :: QuaternionBasis' J' :: QuaternionBasis' K' :: QuaternionBasis' data Quaternion' a Quaternion' :: a -> a -> a -> a -> Quaternion' a -- | Cayley-Dickson quaternion isomorphism (one way) complicate' :: Complicated c => QuaternionBasis' -> (c, c) vectorPart' :: (Representable f, (Key f) ~ QuaternionBasis') => f r -> (r, r, r) scalarPart' :: (Representable f, (Key f) ~ QuaternionBasis') => f r -> r instance Typeable QuaternionBasis' instance Typeable1 Quaternion' instance Eq QuaternionBasis' instance Ord QuaternionBasis' instance Enum QuaternionBasis' instance Read QuaternionBasis' instance Show QuaternionBasis' instance Bounded QuaternionBasis' instance Ix QuaternionBasis' instance Data QuaternionBasis' instance Eq a => Eq (Quaternion' a) instance Show a => Show (Quaternion' a) instance Read a => Read (Quaternion' a) instance Data a => Data (Quaternion' a) instance (TriviallyInvolutive r, Ring r, Division r) => Division (Quaternion' r) instance (TriviallyInvolutive r, Rng r) => Quadrance r (Quaternion' r) instance (TriviallyInvolutive r, Rng r) => InvolutiveMultiplication (Quaternion' r) instance (TriviallyInvolutive r, Rng r) => RightModule (Quaternion' r) (Quaternion' r) instance (TriviallyInvolutive r, Rng r) => LeftModule (Quaternion' r) (Quaternion' r) instance (TriviallyInvolutive r, Ring r) => Ring (Quaternion' r) instance (TriviallyInvolutive r, Ring r) => Rig (Quaternion' r) instance (TriviallyInvolutive r, Ring r) => Unital (Quaternion' r) instance (TriviallyInvolutive r, Semiring r) => Semiring (Quaternion' r) instance (TriviallyInvolutive r, Semiring r) => Multiplicative (Quaternion' r) instance (TriviallyInvolutive r, InvolutiveSemiring r, Rng r) => HopfAlgebra r QuaternionBasis' instance (TriviallyInvolutive r, InvolutiveSemiring r, Rng r) => InvolutiveCoalgebra r QuaternionBasis' instance (TriviallyInvolutive r, InvolutiveSemiring r, Rng r) => InvolutiveAlgebra r QuaternionBasis' instance (TriviallyInvolutive r, Rng r) => Bialgebra r QuaternionBasis' instance (TriviallyInvolutive r, Rng r) => CounitalCoalgebra r QuaternionBasis' instance (TriviallyInvolutive r, Rng r) => Coalgebra r QuaternionBasis' instance (TriviallyInvolutive r, Semiring r) => UnitalAlgebra r QuaternionBasis' instance (TriviallyInvolutive r, Semiring r) => Algebra r QuaternionBasis' instance Partitionable r => Partitionable (Quaternion' r) instance Idempotent r => Idempotent (Quaternion' r) instance Abelian r => Abelian (Quaternion' r) instance Group r => Group (Quaternion' r) instance Monoidal r => Monoidal (Quaternion' r) instance RightModule r s => RightModule r (Quaternion' s) instance LeftModule r s => LeftModule r (Quaternion' s) instance Additive r => Additive (Quaternion' r) instance HasTrie QuaternionBasis' instance TraversableWithKey1 Quaternion' instance Traversable1 Quaternion' instance FoldableWithKey1 Quaternion' instance Foldable1 Quaternion' instance TraversableWithKey Quaternion' instance Traversable Quaternion' instance FoldableWithKey Quaternion' instance Foldable Quaternion' instance MonadReader QuaternionBasis' Quaternion' instance Monad Quaternion' instance Bind Quaternion' instance Applicative Quaternion' instance Apply Quaternion' instance Keyed Quaternion' instance ZipWithKey Quaternion' instance Zip Quaternion' instance Functor Quaternion' instance Distributive Quaternion' instance Adjustable Quaternion' instance Lookup Quaternion' instance Indexable Quaternion' instance Representable Quaternion' instance Rig r => Hamiltonian (QuaternionBasis' -> r) instance Rig r => Complicated (QuaternionBasis' -> r) instance Rig r => Distinguished (QuaternionBasis' -> r) instance Rig r => Hamiltonian (QuaternionBasis' :->: r) instance Rig r => Complicated (QuaternionBasis' :->: r) instance Rig r => Distinguished (QuaternionBasis' :->: r) instance Rig r => Hamiltonian (Quaternion' r) instance Rig r => Complicated (Quaternion' r) instance Rig r => Distinguished (Quaternion' r) instance Hamiltonian QuaternionBasis' instance Complicated QuaternionBasis' instance Distinguished QuaternionBasis' module Numeric.Exp newtype Exp r Exp :: r -> Exp r runExp :: Exp r -> r instance Partitionable r => Factorable (Exp r) instance Idempotent r => Band (Exp r) instance Abelian r => Commutative (Exp r) instance Group r => Division (Exp r) instance Monoidal r => Unital (Exp r) instance Additive r => Multiplicative (Exp r) module Numeric.Log newtype Log r Log :: r -> Log r runLog :: Log r -> r instance Factorable r => Partitionable (Log r) instance Band r => Idempotent (Log r) instance Commutative r => Abelian (Log r) instance Division r => Group (Log r) instance Division r => RightModule Integer (Log r) instance Division r => LeftModule Integer (Log r) instance Unital r => Monoidal (Log r) instance Unital r => RightModule Natural (Log r) instance Unital r => LeftModule Natural (Log r) instance Multiplicative r => Additive (Log r) module Numeric.Map -- | linear maps from elements of a free module to another free module over -- r -- --
-- f $# x + y = (f $# x) + (f $# y) -- f $# (r .* x) = r .* (f $# x) ---- -- Map r b a represents a linear mapping from a free module with -- basis a over r to a free module with basis -- b over r. -- -- Note well the reversed direction of the arrow, due to the -- contravariance of change of basis! -- -- This way enables we can employ arbitrary pure functions as linear maps -- by lifting them using arr, or build them by using the monad -- instance for Map r b. As a consequence Map is an instance of, well, -- almost everything. newtype Map r b a Map :: ((a -> r) -> b -> r) -> Map r b a -- | extract a linear functional from a linear map ($@) :: Map r b a -> b -> Covector r a multMap :: Coalgebra r c => Map r (c, c) c unitMap :: CounitalCoalgebra r c => Map r () c -- | (inefficiently) combine a linear combination of basis vectors to make -- a map. arrMap :: (Monoidal r, Semiring r) => (b -> [(r, a)]) -- -> Map r b a arrMap f = Map $ k b -> sum [ r * k a | (r, a) -- <- f b ] -- -- Memoize the results of this linear map memoMap :: HasTrie a => Map r a a comultMap :: Algebra r a => Map r a (a, a) counitMap :: UnitalAlgebra r a => Map r a () invMap :: InvolutiveCoalgebra r c => Map r c c coinvMap :: InvolutiveAlgebra r a => Map r a a antipodeMap :: HopfAlgebra r h => Map r h h -- | convolution given an associative algebra and coassociative coalgebra convolveMap :: (Algebra r a, Coalgebra r c) => Map r a c -> Map r a c -> Map r a c instance (Ring r, CounitalCoalgebra r m) => Ring (Map r a m) instance (Rig r, CounitalCoalgebra r m) => Rig (Map r b m) instance (Commutative m, Coalgebra r m) => Commutative (Map r b m) instance Group s => Group (Map s b a) instance Abelian s => Abelian (Map s b a) instance Monoidal s => Monoidal (Map s b a) instance Monoidal r => MonadPlus (Map r b) instance Monoidal r => Alternative (Map r b) instance Monoidal r => Plus (Map r b) instance Additive r => Alt (Map r b) instance RightModule r s => RightModule r (Map s b m) instance Coalgebra r m => RightModule (Map r b m) (Map r b m) instance LeftModule r s => LeftModule r (Map s b m) instance Coalgebra r m => LeftModule (Map r b m) (Map r b m) instance Coalgebra r m => Semiring (Map r b m) instance CounitalCoalgebra r m => Unital (Map r b m) instance Coalgebra r m => Multiplicative (Map r b m) instance Additive r => Additive (Map r b a) instance ArrowChoice (Map r) instance Monoidal r => ArrowPlus (Map r) instance Monoidal r => ArrowZero (Map r) instance MonadReader b (Map r b) instance ArrowApply (Map r) instance Arrow (Map r) instance Monoidal (Map r) Either instance Comonoidal (Map r) Either instance PreCoCartesian (Map r) instance Symmetric (Map r) Either instance Braided (Map r) Either instance Disassociative (Map r) Either instance Associative (Map r) Either instance Bifunctor Either (Map r) (Map r) (Map r) instance QFunctor Either (Map r) (Map r) instance PFunctor Either (Map r) (Map r) instance Distributive (Map r) instance CCC (Map r) instance PreCartesian (Map r) instance Comonoidal (Map r) (,) instance Monoidal (Map r) (,) instance Symmetric (Map r) (,) instance Braided (Map r) (,) instance Disassociative (Map r) (,) instance Associative (Map r) (,) instance Bifunctor (,) (Map r) (Map r) (Map r) instance QFunctor (,) (Map r) (Map r) instance PFunctor (,) (Map r) (Map r) instance Monad (Map r b) instance Bind (Map r b) instance Applicative (Map r b) instance Apply (Map r b) instance Functor (Map r b) instance Semigroupoid (Map r) instance Category (Map r) module Numeric.Rng.Zero newtype ZeroRng r ZeroRng :: r -> ZeroRng r runZeroRng :: ZeroRng r -> r instance Eq r => Eq (ZeroRng r) instance Ord r => Ord (ZeroRng r) instance Show r => Show (ZeroRng r) instance Read r => Read (ZeroRng r) instance Group r => RightModule Integer (ZeroRng r) instance Group r => LeftModule Integer (ZeroRng r) instance Monoidal r => RightModule Natural (ZeroRng r) instance Monoidal r => LeftModule Natural (ZeroRng r) instance (Group r, Abelian r) => Rng (ZeroRng r) instance Monoidal r => Commutative (ZeroRng r) instance (Monoidal r, Abelian r) => Semiring (ZeroRng r) instance Monoidal r => Multiplicative (ZeroRng r) instance Group r => Group (ZeroRng r) instance Monoidal r => Monoidal (ZeroRng r) instance Abelian r => Abelian (ZeroRng r) instance Idempotent r => Idempotent (ZeroRng r) instance Additive r => Additive (ZeroRng r) module Numeric.Ring.Rng -- | The free Ring given a Rng obtained by adjoining Z, such that -- --
-- RngRing r = n*1 + r ---- -- This ring is commonly denoted r^. data RngRing r RngRing :: !Integer -> r -> RngRing r -- | The rng homomorphism from r to RngRing r rngRingHom :: r -> RngRing r -- | given a rng homomorphism from a rng r into a ring s, liftRngHom yields -- a ring homomorphism from the ring `r^` into s. liftRngHom :: Ring s => (r -> s) -> RngRing r -> s instance Show r => Show (RngRing r) instance Read r => Read (RngRing r) instance Rng r => Ring (RngRing r) instance Rng r => Rig (RngRing r) instance Rng r => Semiring (RngRing r) instance (Rng r, Division r) => Division (RngRing r) instance Rng r => Unital (RngRing r) instance Rng s => RightModule (RngRing s) (RngRing s) instance Rng s => LeftModule (RngRing s) (RngRing s) instance (Commutative r, Rng r) => Commutative (RngRing r) instance Rng r => Multiplicative (RngRing r) instance (Abelian r, Group r) => Group (RngRing r) instance (Abelian r, Group r) => RightModule Integer (RngRing r) instance (Abelian r, Group r) => LeftModule Integer (RngRing r) instance (Abelian r, Monoidal r) => Monoidal (RngRing r) instance (Abelian r, Monoidal r) => RightModule Natural (RngRing r) instance (Abelian r, Monoidal r) => LeftModule Natural (RngRing r) instance Abelian r => Abelian (RngRing r) instance Abelian r => Additive (RngRing r) module Numeric.Ring.Opposite -- | http:en.wikipedia.orgwikiOpposite_ring newtype Opposite r Opposite :: r -> Opposite r runOpposite :: Opposite r -> r instance Show r => Show (Opposite r) instance Read r => Read (Opposite r) instance Ring r => Ring (Opposite r) instance Rig r => Rig (Opposite r) instance Semiring r => Semiring (Opposite r) instance Division r => Division (Opposite r) instance Unital r => Unital (Opposite r) instance Band r => Band (Opposite r) instance Idempotent r => Idempotent (Opposite r) instance Commutative r => Commutative (Opposite r) instance Multiplicative r => Multiplicative (Opposite r) instance DecidableAssociates r => DecidableAssociates (Opposite r) instance DecidableUnits r => DecidableUnits (Opposite r) instance DecidableZero r => DecidableZero (Opposite r) instance Abelian r => Abelian (Opposite r) instance Group r => Group (Opposite r) instance Semiring r => RightModule (Opposite r) (Opposite r) instance LeftModule r s => RightModule r (Opposite s) instance RightModule r s => LeftModule r (Opposite s) instance Semiring r => LeftModule (Opposite r) (Opposite r) instance Monoidal r => Monoidal (Opposite r) instance Additive r => Additive (Opposite r) instance Traversable1 Opposite instance Foldable1 Opposite instance Traversable Opposite instance Foldable Opposite instance Functor Opposite instance Ord r => Ord (Opposite r) instance Eq r => Eq (Opposite r) module Numeric.Ring.Endomorphism -- | The endomorphism ring of an abelian group or the endomorphism semiring -- of an abelian monoid -- -- http:en.wikipedia.orgwikiEndomorphism_ring newtype End a End :: (a -> a) -> End a appEnd :: End a -> a -> a toEnd :: Multiplicative r => r -> End r fromEnd :: Unital r => End r -> r frobenius :: Characteristic r => End r instance RightModule r m => RightModule r (End m) instance LeftModule r m => LeftModule r (End m) instance (Monoidal m, Abelian m) => RightModule (End m) (End m) instance (Monoidal m, Abelian m) => LeftModule (End m) (End m) instance (Abelian r, Group r) => Ring (End r) instance (Abelian r, Monoidal r) => Rig (End r) instance (Abelian r, Monoidal r) => Semiring (End r) instance (Abelian r, Commutative r) => Commutative (End r) instance Unital (End r) instance Multiplicative (End r) instance Group r => Group (End r) instance Monoidal r => Monoidal (End r) instance Abelian r => Abelian (End r) instance Additive r => Additive (End r) instance Monoid (End r)