| Copyright | (c) Erich Gut |
|---|---|
| License | BSD3 |
| Maintainer | zerich.gut@gmail.com |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
OAlg.AbelianGroup.Definition
Description
homomorphisms between finitely generated abelian groups.
Synopsis
- newtype AbGroup = AbGroup (ProductSymbol ZMod)
- abg :: N -> AbGroup
- isSmithNormal :: AbGroup -> Bool
- abgDim :: AbGroup -> Dim' ZModHom
- newtype AbHom = AbHom (Matrix ZModHom)
- abh :: Orientation AbGroup -> [(ZModHom, N, N)] -> AbHom
- abh' :: Orientation AbGroup -> [(Z, N, N)] -> AbHom
- abhz :: AbHom -> Matrix Z
- zabh :: Matrix Z -> AbHom
- abhFreeAdjunction :: Adjunction AbHomFree (Matrix Z) AbHom
- data AbHomFree x y where
- abhProducts :: Products n AbHom
- abhSums :: Sums n AbHom
- abgGeneratorTo :: AbGroup -> Generator To AbHom
- xAbHom :: Q -> Orientation AbGroup -> X AbHom
- xAbHomTo :: Q -> N -> N -> N -> AbGroup -> X AbHom
- xAbHomFrom :: Q -> N -> N -> N -> AbGroup -> X AbHom
- stdMaxDim :: N
- prpAbHom :: Statement
Abelian Group
finitely generate abelian group, i.e. the cartesian product of cyclic groups
and are represented as a formal product with symbols in Z/nZMod.
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:
2for all<=n i0.<=i < kn (ifor all+1)modn i==0iin0.<=i < k-1g.==abg(n 0)*abg(n 1)*..*abg(n (k-1))*abg0^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 12AbGroup[Z/12]
represents the cyclic group .Z/12
>>>abg 2 * abg 3AbGroup[Z/2*Z/3]
represents the cartesian product of the groups and Z/2.Z/3
>>>abg 6 * abg 4 * abg 4AbGroup[Z/6*Z/4^2]
represents the cartesian product of the groups , Z/6 and Z/4.Z/4
>>>abg 0 ^ 6AbGroup[Z^6]
represents the free abelian group of dimension 6.Z ^ 6
>>>one () :: AbGroupAbGroup[]
represents the cartesian product of zero cyclic groups and
>>>one () * abg 4 * abg 6 == abg 4 * abg 6True
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
| Show AbGroup Source # | |
| Eq AbGroup Source # | |
| Ord AbGroup Source # | |
Defined in OAlg.AbelianGroup.Definition | |
| LengthN AbGroup Source # | |
Defined in OAlg.AbelianGroup.Definition | |
| Validable AbGroup Source # | |
Defined in OAlg.AbelianGroup.Definition | |
| XStandard AbGroup Source # | |
Defined in OAlg.AbelianGroup.Definition | |
| Entity AbGroup Source # | |
Defined in OAlg.AbelianGroup.Definition | |
| Exponential AbGroup Source # | |
| Multiplicative AbGroup Source # | |
| Oriented AbGroup Source # | |
| type Exponent AbGroup Source # | |
Defined in OAlg.AbelianGroup.Definition | |
| type Point AbGroup Source # | |
Defined in OAlg.AbelianGroup.Definition | |
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).
Homomorphism
additive homomorphism between finitely generated abelian groups which are
represented by matrices over ZModHom.
Instances
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.
zabh :: Matrix Z -> AbHom Source #
the associated homomorphism between products of given by the column
- respectively row - length.abg 0
Adjunction
abhFreeAdjunction :: Adjunction AbHomFree (Matrix Z) AbHom Source #
the projection AbHomFree as left adjoint.
data AbHomFree x y where Source #
Instances
Limes
Generator
abgGeneratorTo :: AbGroup -> Generator To AbHom Source #
the generator for a finitely generated abelian group.
Property Let a be in AbGroup, then holds
a where == g. 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