Copyright | (c) Erich Gut |
---|---|
License | BSD3 |
Maintainer | zerich.gut@gmail.com |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
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:
2
for all<=
n i0
.<=
i < kn (i
for all+
1)mod
n i==
0i
in0
.<=
i < k-1g
.==
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
and Z
/2
.Z
/3
>>>
abg 6 * abg 4 * abg 4
AbGroup[Z/6*Z/4^2]
represents the cartesian product of the groups
, Z
/6
and Z
/4
.Z
/4
>>>
abg 0 ^ 6
AbGroup[Z^6]
represents the free abelian group
of dimension 6.Z
^
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[]
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