oalg-base-1.1.4.0: Algebraic structures on oriented entities and limits as a tool kit to solve algebraic problems.
Copyright(c) Erich Gut
LicenseBSD3
Maintainerzerich.gut@gmail.com
Safe HaskellSafe-Inferred
LanguageHaskell2010

OAlg.Structure.Multiplicative.Definition

Description

multiplicative structures, i.e. structures with a partially defined multiplication (*).

Synopsis

Multiplicative

class Oriented c => Multiplicative c where Source #

Oriented structures with a partially defined multiplication and having one as the neutral element of the multiplication. An entity of a Multiplicative structure will be called a factor.

Properties Let c be a type instance of the class Multiplicative, then holds:

  1. For all p in Point c holds: orientation (one p) == p :> p.
  2. For all f and g in c holds:

    1. if start f == end g then f * g is valid and start (f * g) == start g and end (f * g) == end f.
    2. if start f /= end g then f * g is not valid and its evaluation will end up in a NotMultiplicable exception.
  3. For all f in c holds: one (end f) * f == f and f * one (start f) == f.
  4. For all f, g and h in c with start g == end h and start f == end g holds: (f * g) * h == f * (g * h).
  5. For all f in c holds:

    1. npower f 1 == f.
    2. If f is a endo than npower f 0 == one (start f) and For all n in N holds: npower f (succ n) == f * npower f n.

Such a c will be called a multiplicative structure and an entity f of c will be called factor. The associated factor one p to a p in Point c will be called the one at p.

Note If the types c and Point c are interpreted as sets M and O and * as a partially defined function from M x M -> M then this forms a small category with objects in O and morphisms in M.

Minimal complete definition

one, (*)

Methods

one :: Point c -> c Source #

the neutral element associated to each point. If there is no ambiguity for one p we will briefly denote it by 1 r or just 1.

(*) :: c -> c -> c infixl 7 Source #

the multiplication of two factors.

npower :: c -> N -> c Source #

n times the multiplication of a given factor f.

Instances

Instances details
Multiplicative N Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point N -> N Source #

(*) :: N -> N -> N Source #

npower :: N -> N -> N Source #

Multiplicative Q Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point Q -> Q Source #

(*) :: Q -> Q -> Q Source #

npower :: Q -> N -> Q Source #

Multiplicative Z Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point Z -> Z Source #

(*) :: Z -> Z -> Z Source #

npower :: Z -> N -> Z Source #

Multiplicative N' Source # 
Instance details

Defined in OAlg.Entity.Natural

Methods

one :: Point N' -> N' Source #

(*) :: N' -> N' -> N' Source #

npower :: N' -> N -> N' Source #

Multiplicative W' Source # 
Instance details

Defined in OAlg.Entity.Natural

Methods

one :: Point W' -> W' Source #

(*) :: W' -> W' -> W' Source #

npower :: W' -> N -> W' Source #

Multiplicative Integer Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Multiplicative () Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point () -> () Source #

(*) :: () -> () -> () Source #

npower :: () -> N -> () Source #

Multiplicative Int Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point Int -> Int Source #

(*) :: Int -> Int -> Int Source #

npower :: Int -> N -> Int Source #

Multiplicative c => Multiplicative (Op c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point (Op c) -> Op c Source #

(*) :: Op c -> Op c -> Op c Source #

npower :: Op c -> N -> Op c Source #

Distributive x => Multiplicative (Matrix x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Definition

Methods

one :: Point (Matrix x) -> Matrix x Source #

(*) :: Matrix x -> Matrix x -> Matrix x Source #

npower :: Matrix x -> N -> Matrix x Source #

Galoisian x => Multiplicative (GL2 x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.GeneralLinearGroup

Methods

one :: Point (GL2 x) -> GL2 x Source #

(*) :: GL2 x -> GL2 x -> GL2 x Source #

npower :: GL2 x -> N -> GL2 x Source #

Oriented x => Multiplicative (GLT x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.GeneralLinearGroup

Methods

one :: Point (GLT x) -> GLT x Source #

(*) :: GLT x -> GLT x -> GLT x Source #

npower :: GLT x -> N -> GLT x Source #

Oriented x => Multiplicative (ColTrafo x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Transformation

Oriented a => Multiplicative (RowTrafo a) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Transformation

Entity x => Multiplicative (ProductSymbol x) Source # 
Instance details

Defined in OAlg.Entity.Product.ProductSymbol

(Entity i, Ord i) => Multiplicative (Permutation i) Source # 
Instance details

Defined in OAlg.Entity.Sequence.Permutation

Fibred f => Multiplicative (Sheaf f) Source #

'Data.List.(++)' is not commutative!

Instance details

Defined in OAlg.Structure.Fibred.Definition

Methods

one :: Point (Sheaf f) -> Sheaf f Source #

(*) :: Sheaf f -> Sheaf f -> Sheaf f Source #

npower :: Sheaf f -> N -> Sheaf f Source #

Multiplicative c => Multiplicative (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point (Inv c) -> Inv c Source #

(*) :: Inv c -> Inv c -> Inv c Source #

npower :: Inv c -> N -> Inv c Source #

Entity p => Multiplicative (Orientation p) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Oriented q => Multiplicative (Path q) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point (Path q) -> Path q Source #

(*) :: Path q -> Path q -> Path q Source #

npower :: Path q -> N -> Path q Source #

(Oriented x, Typeable p, p ~ Point x) => Multiplicative (Dim x p) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Dim

Methods

one :: Point (Dim x p) -> Dim x p Source #

(*) :: Dim x p -> Dim x p -> Dim x p Source #

npower :: Dim x p -> N -> Dim x p Source #

(Oriented a, Integral r) => Multiplicative (Product r a) Source # 
Instance details

Defined in OAlg.Entity.Product.Definition

Methods

one :: Point (Product r a) -> Product r a Source #

(*) :: Product r a -> Product r a -> Product r a Source #

npower :: Product r a -> N -> Product r a Source #

(Multiplicative c, Sliced i c, Typeable s) => Multiplicative (SliceFactor s i c) Source # 
Instance details

Defined in OAlg.Entity.Slice.Definition

Methods

one :: Point (SliceFactor s i c) -> SliceFactor s i c Source #

(*) :: SliceFactor s i c -> SliceFactor s i c -> SliceFactor s i c Source #

npower :: SliceFactor s i c -> N -> SliceFactor s i c Source #

(Multiplicative a, Typeable t, Typeable n, Typeable m) => Multiplicative (Transformation t n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Transformation

Methods

one :: Point (Transformation t n m a) -> Transformation t n m a Source #

(*) :: Transformation t n m a -> Transformation t n m a -> Transformation t n m a Source #

npower :: Transformation t n m a -> N -> Transformation t n m a Source #

one' :: Multiplicative c => p c -> Point c -> c Source #

the one to a given point. The type p c serves only as proxy and one' is lazy in it.

Note As Point may be a non-injective type family, the type checker needs some times a little bit more information to pic the right one.

isOne :: Multiplicative c => c -> Bool Source #

check for being equal to one.

data Mlt Source #

type representing the class of Multiplicative structures.

Instances

Instances details
ForgetfulTyp Mlt Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

TransformableOp Mlt Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

ForgetfulMlt Mlt Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

ForgetfulOrt Mlt Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

EmbeddableMorphism GLApp Mlt Source # 
Instance details

Defined in OAlg.Entity.Matrix.GeneralLinearGroup

Transformable Dst Mlt Source # 
Instance details

Defined in OAlg.Structure.Distributive.Definition

Methods

tau :: Struct Dst x -> Struct Mlt x Source #

Transformable Mlt Ent Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tau :: Struct Mlt x -> Struct Ent x Source #

Transformable Mlt Typ Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tau :: Struct Mlt x -> Struct Typ x Source #

Transformable Mlt Ort Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tau :: Struct Mlt x -> Struct Ort x Source #

Transformable1 Op Mlt Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tau1 :: Struct Mlt x -> Struct Mlt (Op x) Source #

HomMultiplicative h => Applicative1 h (Cone Mlt p t n m) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

amap1 :: h a b -> Cone Mlt p t n m a -> Cone Mlt p t n m b Source #

IsoMultiplicative h => Applicative1 h (Limes Mlt p t n m) Source # 
Instance details

Defined in OAlg.Limes.Definition

Methods

amap1 :: h a b -> Limes Mlt p t n m a -> Limes Mlt p t n m b Source #

IsoMultiplicative h => Applicative1 h (Limits Mlt p t n m) Source # 
Instance details

Defined in OAlg.Limes.Limits

Methods

amap1 :: h a b -> Limits Mlt p t n m a -> Limits Mlt p t n m b Source #

EmbeddableMorphism (SliceFactorDrop s) Mlt Source # 
Instance details

Defined in OAlg.Entity.Slice.Definition

EmbeddableMorphism h Mlt => EmbeddableMorphism (OpHom h) Mlt Source # 
Instance details

Defined in OAlg.Hom.Oriented.Definition

Transformable (Alg k) Mlt Source # 
Instance details

Defined in OAlg.Structure.Algebraic.Definition

Methods

tau :: Struct (Alg k) x -> Struct Mlt x Source #

(Multiplicative c, Sliced i c) => EmbeddableMorphism (SliceCokernelKernel i c) Mlt Source # 
Instance details

Defined in OAlg.Entity.Slice.Adjunction

(Multiplicative a, XStandardOrtPerspective p a) => Validable (Limes Mlt p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Definition

Methods

valid :: Limes Mlt p t n m a -> Statement Source #

(Multiplicative a, XStandard (Diagram t n m a), XStandardOrtPerspective p a) => Validable (Limits Mlt p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Limits

Methods

valid :: Limits Mlt p t n m a -> Statement Source #

(Entity p, XStandard p, XStandard (Diagram t n m (Orientation p))) => XStandard (Cone Mlt 'Injective t n m (Orientation p)) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

xStandard :: X (Cone Mlt 'Injective t n m (Orientation p)) Source #

(Entity p, XStandard p, XStandard (Diagram t n m (Orientation p))) => XStandard (Cone Mlt 'Projective t n m (Orientation p)) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

xStandard :: X (Cone Mlt 'Projective t n m (Orientation p)) Source #

(Multiplicative a, XStandardOrtPerspective p a, Typeable p, Typeable t, Typeable n, Typeable m) => Entity (Limes Mlt p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Definition

type Hom Mlt h Source # 
Instance details

Defined in OAlg.Hom.Multiplicative.Definition

type Structure Mlt x Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

class (ForgetfulOrt s, Transformable s Mlt) => ForgetfulMlt s Source #

transformable to Multiplicative structure.

Instances

Instances details
ForgetfulMlt Dst Source # 
Instance details

Defined in OAlg.Structure.Distributive.Definition

ForgetfulMlt Mlt Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

ForgetfulMlt (Alg k) Source # 
Instance details

Defined in OAlg.Structure.Algebraic.Definition

Transposable

Commutative

class Multiplicative c => Commutative c Source #

commutative multiplicative structures.

Property Let c be a Commutative structure, then holds: For all f and g in c with start f == end f, start g == end g and start f == end g holds: f * g == g * f.

Invertible

class Multiplicative c => Invertible c where Source #

multiplicative structures having a multiplicative inverse.

Definition Let f and g be two factors in a Multiplicative structure _c then we call g a multiplicative inverse to f (or short inverse) if and only if the following hold:

  1. start g == end f and end g == start f.
  2. f * g = one (end f) and g * f == one (start f).

Properties For all f in a Invertible structure c holds:

  1. isInvertible f is equivalent to solvable (tryToInvert f).
  2. if isInvertible f holds, then invert f is valid and it is the multiplicative inverse of f. Furthermore invert f == solve (tryToInvert m).
  3. if not isInvertible f holds, then invert f is not valid and evaluating it will end up in a NotInvertible-exception.

Note

  1. It is not required that every factor has a multiplicative inverse (see Cayleyan for such structures).
  2. This structure is intended for multiplicative structures having a known algorithm to evaluate for every invertible f its inverse.

Minimal complete definition

tryToInvert

Methods

tryToInvert :: c -> Solver c Source #

solver to evaluate the multiplicative inverse - if it exists.

invert :: c -> c Source #

the inverse.

isInvertible :: c -> Bool Source #

check for being invertible.

zpower :: c -> Z -> c Source #

if 0 <= z then n times the multiplication for the given factor else prj z times the multiplication of the inverse of the given factor.

Instances

Instances details
Invertible N Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Invertible Q Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Invertible Z Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Invertible Integer Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Invertible () Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tryToInvert :: () -> Solver () Source #

invert :: () -> () Source #

isInvertible :: () -> Bool Source #

zpower :: () -> Z -> () Source #

Invertible Int Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Invertible c => Invertible (Op c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tryToInvert :: Op c -> Solver (Op c) Source #

invert :: Op c -> Op c Source #

isInvertible :: Op c -> Bool Source #

zpower :: Op c -> Z -> Op c Source #

Galoisian x => Invertible (GL2 x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.GeneralLinearGroup

Methods

tryToInvert :: GL2 x -> Solver (GL2 x) Source #

invert :: GL2 x -> GL2 x Source #

isInvertible :: GL2 x -> Bool Source #

zpower :: GL2 x -> Z -> GL2 x Source #

Oriented x => Invertible (GLT x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.GeneralLinearGroup

Methods

tryToInvert :: GLT x -> Solver (GLT x) Source #

invert :: GLT x -> GLT x Source #

isInvertible :: GLT x -> Bool Source #

zpower :: GLT x -> Z -> GLT x Source #

Oriented x => Invertible (ColTrafo x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Transformation

Oriented a => Invertible (RowTrafo a) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Transformation

(Entity i, Ord i) => Invertible (Permutation i) Source # 
Instance details

Defined in OAlg.Entity.Sequence.Permutation

Multiplicative c => Invertible (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tryToInvert :: Inv c -> Solver (Inv c) Source #

invert :: Inv c -> Inv c Source #

isInvertible :: Inv c -> Bool Source #

zpower :: Inv c -> Z -> Inv c Source #

Entity p => Invertible (Orientation p) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

(Oriented a, Integral r, Ring r) => Invertible (Product r a) Source # 
Instance details

Defined in OAlg.Entity.Product.Definition

Methods

tryToInvert :: Product r a -> Solver (Product r a) Source #

invert :: Product r a -> Product r a Source #

isInvertible :: Product r a -> Bool Source #

zpower :: Product r a -> Z -> Product r a Source #

data Inv c Source #

invertible factors within a Multiplicative structures c, which forms a sub Multiplicative structure on c, given by the canonical inclusion inj which is given by \Inv f _ -> f.

Property Let Inv f f' be in Inv c where c is a Multiplicative structure, then holds:

  1. orientation f' == opposite (orientation f).
  2. f' * f == one (start f).
  3. f * f' == one (end f).

Note The canonical inclusion is obviously not injective on the set of all values of type Inv c to c. But restricted to the valid ones it is injective, because the inverses of a f in c are uniquely determined by f.

Constructors

Inv c c 

Instances

Instances details
Show c => Show (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

showsPrec :: Int -> Inv c -> ShowS #

show :: Inv c -> String #

showList :: [Inv c] -> ShowS #

Eq c => Eq (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

(==) :: Inv c -> Inv c -> Bool #

(/=) :: Inv c -> Inv c -> Bool #

TransposableMultiplicative c => Transposable (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

transpose :: Inv c -> Inv c Source #

Multiplicative c => Validable (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

valid :: Inv c -> Statement Source #

Multiplicative c => Entity (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Multiplicative c => Exponential (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Exponential

Associated Types

type Exponent (Inv c) Source #

Methods

(^) :: Inv c -> Exponent (Inv c) -> Inv c Source #

Multiplicative c => Cayleyan (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Multiplicative c => Invertible (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

tryToInvert :: Inv c -> Solver (Inv c) Source #

invert :: Inv c -> Inv c Source #

isInvertible :: Inv c -> Bool Source #

zpower :: Inv c -> Z -> Inv c Source #

Multiplicative c => Multiplicative (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

one :: Point (Inv c) -> Inv c Source #

(*) :: Inv c -> Inv c -> Inv c Source #

npower :: Inv c -> N -> Inv c Source #

TransposableMultiplicative c => TransposableMultiplicative (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Multiplicative c => Oriented (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Associated Types

type Point (Inv c) Source #

Methods

orientation :: Inv c -> Orientation (Point (Inv c)) Source #

start :: Inv c -> Point (Inv c) Source #

end :: Inv c -> Point (Inv c) Source #

TransposableMultiplicative c => TransposableOriented (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Embeddable (Inv c) c Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Methods

inj :: Inv c -> c Source #

type Exponent (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Exponential

type Exponent (Inv c) = Z
type Point (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

type Point (Inv c) = Point c

Cayleyan

class Invertible c => Cayleyan c Source #

Invertible structures where every element is invertible.

Property Let c be a Cayleyan structure, then holds: For all f in c holds: isInvertible f == True.

Note

  1. If the type Point c is singleton, then the mathematical interpretation of c is a group.
  2. The name of this structures is given by Arthur Cayley who introduced the concept (and the name) of an abstract group in 1854 (https://en.wikipedia.org/wiki/Arthur_Cayley).
  3. Usually in mathematics such a structure is called a groupoid.

Instances

Instances details
Cayleyan () Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Cayleyan c => Cayleyan (Op c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Galoisian x => Cayleyan (GL2 x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.GeneralLinearGroup

Oriented x => Cayleyan (GLT x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.GeneralLinearGroup

Oriented x => Cayleyan (ColTrafo x) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Transformation

Oriented a => Cayleyan (RowTrafo a) Source # 
Instance details

Defined in OAlg.Entity.Matrix.Transformation

(Entity i, Ord i) => Cayleyan (Permutation i) Source # 
Instance details

Defined in OAlg.Entity.Sequence.Permutation

Multiplicative c => Cayleyan (Inv c) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

Entity p => Cayleyan (Orientation p) Source # 
Instance details

Defined in OAlg.Structure.Multiplicative.Definition

(Oriented a, Integral r, Ring r) => Cayleyan (Product r a) Source # 
Instance details

Defined in OAlg.Entity.Product.Definition

X

xosPathAt :: Multiplicative c => XOrtSite s c -> N -> Point c -> X (Path c) Source #

random variable of paths at the given point and the given length (see xosPathMaxAt and as c is Multiplicative, the underlying random variable for factors for a given point is not empty).

xosPath :: Multiplicative c => XOrtSite s c -> N -> X (Path c) Source #

random variable of paths with the given length.

xosXOrtSitePath :: Multiplicative c => XOrtSite s c -> N -> XOrtSite s (Path c) Source #

the induced random variable for paths.

Orphan instances

Multiplicative c => Projectible c (Path c) Source # 
Instance details

Methods

prj :: Path c -> c Source #