oalg-abg-1.0.0.0: Finitely generated abelian groups.
Copyright(c) Erich Gut
LicenseBSD3
Maintainerzerich.gut@gmail.com
Safe HaskellSafe-Inferred
LanguageHaskell2010

OAlg.AbelianGroup.Definition

Description

homomorphisms between finitely generated abelian groups.

Synopsis

Abelian Group

newtype AbGroup Source #

finitely generate abelian group, i.e. the cartesian product of cyclic groups Z/n and are represented as a formal product with symbols in ZMod.

Definition Let g be in AbGroup. We call g smith normal if and only if there exists a sequence n 0, n 1 .. n (k-1) in N with length k and a exponent r in N such that:

  1. 2 <= n i for all 0 <= i < k.
  2. n (i + 1) mod n i == 0 for all i in 0 <= i < k-1.
  3. g == abg (n 0) * abg (n 1) * .. * abg (n (k-1)) * abg 0 ^ r.

Theorem Every finitely generated abelian group is isomorphic to a group in smith normal form. This isomorphism is given by isoSmithNormal.

Examples Finitely generated abelian groups constructed via abg and its multiplicative structure:

>>> abg 12
AbGroup[Z/12]

represents the cyclic group Z/12.

>>> abg 2 * abg 3
AbGroup[Z/2*Z/3]

represents the cartesian product of the groups Z/2 and Z/3.

>>> abg 6 * abg 4 * abg 4
AbGroup[Z/6*Z/4^2]

represents the cartesian product of the groups Z/6, Z/4 and Z/4.

>>> abg 0 ^ 6
AbGroup[Z^6]

represents the free abelian group Z ^ 6 of dimension 6.

>>> one () :: AbGroup
AbGroup[]

represents the cartesian product of zero cyclic groups and

>>> one () * abg 4 * abg 6 == abg 4 * abg 6
True

Examples Checking for smith normal via isSmithNormal:

>>> isSmithNormal (abg 4)
True
>>> isSmithNormal (abg 2 * abg 2)
True
>>> isSmithNormal (abg 17 * abg 51)
True
>>> isSmithNormal (abg 2 * abg 4 * abg 0 ^ 3)
True
>>> isSmithNormal (abg 5 * abg 3)
False
>>> isSmithNormal (abg 0 * abg 3 * abg 6)
False
>>> isSmithNormal (abg 1 * abg 4)
False
>>> isSmithNormal (one ())
True

Examples The associated isomorphism in AbHom of a finitely generated abelian group given by isoSmithNormal.

>>> end (isoSmithNormal (abg 3 * abg 5))
AbGroup[Z/15]
>>> end (isoSmithNormal (abg 2 * abg 4 * abg 2))
AbGroup[Z/2^2*Z/4]
>>> end (isoSmithNormal (abg 4 * abg 6))
AbGroup[Z/2*Z/12]
>>> end (isoSmithNormal (abg 1))
AbGroup[]

Constructors

AbGroup (ProductSymbol ZMod) 

Instances

Instances details
Show AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Eq AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

(==) :: AbGroup -> AbGroup -> Bool #

(/=) :: AbGroup -> AbGroup -> Bool #

Ord AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

LengthN AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

lengthN :: AbGroup -> N #

Validable AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

valid :: AbGroup -> Statement #

XStandard AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

xStandard :: X AbGroup #

Entity AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Exponential AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Exponent AbGroup #

Multiplicative AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Oriented AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Point AbGroup #

type Exponent AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Point AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Point AbGroup = ()

abg :: N -> AbGroup Source #

the cyclic group of the given order as a finitely generated abelian group.

isSmithNormal :: AbGroup -> Bool Source #

checks if the given group is smith normal (see definition AbGroup).

abgDim :: AbGroup -> Dim' ZModHom Source #

the associated dimension for matrices of ZModHom.

Homomorphism

newtype AbHom Source #

additive homomorphism between finitely generated abelian groups which are represented by matrices over ZModHom.

Constructors

AbHom (Matrix ZModHom) 

Instances

Instances details
Show AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

showsPrec :: Int -> AbHom -> ShowS #

show :: AbHom -> String #

showList :: [AbHom] -> ShowS #

Eq AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

(==) :: AbHom -> AbHom -> Bool #

(/=) :: AbHom -> AbHom -> Bool #

XStandardSomeFreeSliceFromLiftable AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Validable AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

valid :: AbHom -> Statement #

XStandard AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

xStandard :: X AbHom #

Entity AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Abelian AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

negate :: AbHom -> AbHom #

(-) :: AbHom -> AbHom -> AbHom #

ztimes :: Z -> AbHom -> AbHom #

Additive AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

zero :: Root AbHom -> AbHom #

(+) :: AbHom -> AbHom -> AbHom #

ntimes :: N -> AbHom -> AbHom #

Algebraic AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Distributive AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Fibred AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Root AbHom #

Methods

root :: AbHom -> Root AbHom #

FibredOriented AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Multiplicative AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

one :: Point AbHom -> AbHom #

(*) :: AbHom -> AbHom -> AbHom #

npower :: AbHom -> N -> AbHom #

Oriented AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Point AbHom #

XStandardOrtOrientation AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardOrtSiteFrom AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardOrtSiteTo AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardPoint AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Vectorial AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Scalar AbHom #

Methods

(!) :: Scalar AbHom -> AbHom -> AbHom #

XStandardOrtSite 'From AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardOrtSite 'To AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Attestable k => SliceCokernelTo (Free k) AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.KernelsAndCokernels

Attestable k => SliceKernelFrom (Free k) AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.KernelsAndCokernels

Attestable k => Sliced (Free k) AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

slicePoint :: Free k AbHom -> Point AbHom #

type Root AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Point AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Scalar AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Scalar AbHom = Z

abh :: Orientation AbGroup -> [(ZModHom, N, N)] -> AbHom Source #

the additive homomorphism with the given orientation and ZModHom-entries.

abh' :: Orientation AbGroup -> [(Z, N, N)] -> AbHom Source #

the additive homomorphism with the given orientation and Z-entries.

abhz :: AbHom -> Matrix Z Source #

the underlying Z-matrix.

zabh :: Matrix Z -> AbHom Source #

the associated homomorphism between products of abg 0 given by the column - respectively row - length.

Adjunction

abhFreeAdjunction :: Adjunction AbHomFree (Matrix Z) AbHom Source #

the projection AbHomFree as left adjoint.

data AbHomFree x y where Source #

projection homomorphisms to Matrix Z.

Instances

Instances details
Applicative AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

amap :: AbHomFree a b -> a -> b #

EmbeddableMorphismTyp AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Morphism AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type ObjectClass AbHomFree #

Eq2 AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

eq2 :: AbHomFree x y -> AbHomFree x y -> Bool #

Show2 AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

show2 :: AbHomFree a b -> String #

Validable2 AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

valid2 :: AbHomFree x y -> Statement #

Entity2 AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

HomAdditive AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

HomDistributive AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

HomFibred AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

rmap :: AbHomFree a b -> Root a -> Root b #

HomFibredOriented AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

HomMultiplicative AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

HomOriented AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

pmap :: AbHomFree a b -> Point a -> Point b #

EmbeddableMorphism AbHomFree Add Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EmbeddableMorphism AbHomFree Typ Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EmbeddableMorphism AbHomFree Dst Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EmbeddableMorphism AbHomFree Fbr Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EmbeddableMorphism AbHomFree FbrOrt Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EmbeddableMorphism AbHomFree Mlt Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EmbeddableMorphism AbHomFree Ort Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Show (AbHomFree x y) Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

showsPrec :: Int -> AbHomFree x y -> ShowS #

show :: AbHomFree x y -> String #

showList :: [AbHomFree x y] -> ShowS #

Eq (AbHomFree x y) Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

(==) :: AbHomFree x y -> AbHomFree x y -> Bool #

(/=) :: AbHomFree x y -> AbHomFree x y -> Bool #

Validable (AbHomFree x y) Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

valid :: AbHomFree x y -> Statement #

(Typeable x, Typeable y) => Entity (AbHomFree x y) Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type ObjectClass AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Limes

abhSums :: Sums n AbHom Source #

sums for AbHom.

Generator

abgGeneratorTo :: AbGroup -> Generator To AbHom Source #

the generator for a finitely generated abelian group.

Property Let a be in AbGroup, then holds a == g where Generator (DiagramChainTo g _) _ _ _ _ = abgGeneratorTo a.

X

xAbHom :: Q -> Orientation AbGroup -> X AbHom Source #

random variable for AbHom given by a density and an orientation.

xAbHomTo :: Q -> N -> N -> N -> AbGroup -> X AbHom Source #

random variable of homomorphisms between abelian groups with end equal to the given one.

   r s t
  [f    ] a
  [     ] b
  [g h  ] c

xAbHomFrom :: Q -> N -> N -> N -> AbGroup -> X AbHom Source #

random variable of homomorphisms between abelian groups with start equal to the given one.

   a b c
  [f    ] r
  [g   l] s
  [h    ] t

stdMaxDim :: N Source #

the maximal length of abelian groups for the standard random variable of type X AbGroup.

Property 1 <= stdMaxDim.

Proposition

prpAbHom :: Statement Source #

validity of the algebraic structure of AbHom.