oalg-abg-2.0.0.0: Finitely generated abelian groups.
Copyright(c) Erich Gut
LicenseBSD3
Maintainerzerich.gut@gmail.com
Safe HaskellNone
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 #

Exponential AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Exponent AbGroup 
Instance details

Defined in OAlg.AbelianGroup.Definition

Multiplicative AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Oriented AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EqPoint AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ShowPoint AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

SingletonPoint AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

TypeablePoint AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ValidablePoint AbGroup Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

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.

abgZero :: ZeroPoint AbHom Source #

the zero point for AbHom.

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 #

Ord AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

compare :: AbHom -> AbHom -> Ordering #

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

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

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

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

max :: AbHom -> AbHom -> AbHom #

min :: AbHom -> AbHom -> AbHom #

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 #

SlicedFree AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

slicedFree :: forall (k :: N'). Attestable k => Struct (Sld (Free k)) AbHom #

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

Methods

root :: AbHom -> Root AbHom #

EqRoot AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ShowRoot AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

TypeableRoot AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ValidableRoot AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

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

EqPoint AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ShowPoint AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

TypeablePoint AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ValidablePoint AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardPoint AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

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

Vectorial AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Scalar AbHom 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Scalar AbHom = Z

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

XStandardEligibleConeFactorG ConeLiftable Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardEligibleConeFactorG Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardEligibleConeG ConeLiftable Dst 'Injective Diagram ('Parallel 'RightToLeft) N2 N1 AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

XStandardEligibleConeG Cone Dst 'Projective Diagram ('Parallel 'LeftToRight) N2 N1 AbHom Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

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.

abhDensity :: N -> AbHom -> Maybe Q Source #

the density of the abelian homomorphism, i. e. the density of the underlying matrix (see: mtxDensity).

abhSplitable :: Splitable 'From Free AbHom Source #

splitable property for AbHom with free start point of any finite dimension.

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
Morphism AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type ObjectClass AbHomFree 
Instance details

Defined in OAlg.AbelianGroup.Definition

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 #

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

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

HomAlgebraic Z AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

HomVectorial Z AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ApplicativeG Id AbHomFree (->) Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

amapG :: AbHomFree x y -> Id x -> Id y #

ApplicativeG Rt AbHomFree (->) Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

amapG :: AbHomFree x y -> Rt x -> Rt y #

ApplicativeG Pnt AbHomFree (->) Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

amapG :: AbHomFree x y -> Pnt x -> Pnt y #

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 #

type ObjectClass AbHomFree Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Limes

abhProducts :: forall (n :: N'). Products n AbHom Source #

products for AbHom.

abhSums :: forall (n :: N'). Sums n AbHom Source #

sums for AbHom.

Finite Presentation

abgFinPres :: FinitelyPresentable 'To Free AbHom Source #

free finitely presentations for AbHom.

Elements

newtype AbElement Source #

elements of an finitely generated abelian group. There root - which is an element of AbGroup - gives there affiliated group. They are gererated via make.

Constructors

AbElement (Slice 'From (Free N1) AbHom) 

Instances

Instances details
Show AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Eq AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Ord AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Constructable AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Exposable AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Form AbElement 
Instance details

Defined in OAlg.AbelianGroup.Definition

LengthN AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

lengthN :: AbElement -> N #

Validable AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Methods

valid :: AbElement -> Statement #

Abelian AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Additive AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Fibred AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

EqRoot AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ShowRoot AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

TypeableRoot AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

ValidableRoot AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Vectorial AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

Associated Types

type Scalar AbElement 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Form AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Root AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

type Scalar AbElement Source # 
Instance details

Defined in OAlg.AbelianGroup.Definition

data AbElementForm Source #

form for a AbElement.

Constructors

AbElementForm AbGroup [(Z, N)] 

abge :: AbGroup -> N -> AbElement Source #

the i-th canonical generator of the given abelian group.

abhvecFree1 :: Slice 'From (Free N1) AbHom -> Vector Z Source #

the underlying Z-vector.

vecabhFree1 :: N -> Vector Z -> Slice 'From (Free N1) AbHom Source #

the abelian homomorphism with the free start point of dimension 1 and free end point of the given dimension according to the given vector.

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.

xAbhSomeFreeSlice :: N -> X (SomeFreeSlice 'From AbHom) Source #

random variable for some free slice from in AbHom

Proposition

prpAbHom :: Statement Source #

validity of the algebraic structure of AbHom.