Introduction
Within Hecke, abelian groups are of generic abstract type GrpAb which does not have to be finitely generated,
Basic Creation
Finitely presented (as FinGenAbGroup with elements of type FinGenAbGroupElem. The creation is mostly via a relation matrix
abelian_group Method
abelian_group(::Type{T} = FinGenAbGroup, M::ZZMatrix) -> FinGenAbGroupCreates the abelian group with relation matrix M. That is, the group will have ncols(M) generators and each row of M describes one relation.
abelian_group Method
abelian_group(::Type{T} = FinGenAbGroup, M::AbstractMatrix{<:IntegerUnion})Creates the abelian group with relation matrix M. That is, the group will have ncols(M) generators and each row of M describes one relation.
abelian_group Method
abelian_group(::Type{T} = FinGenAbGroup, M::AbstractMatrix{<:IntegerUnion})Creates the abelian group with relation matrix M. That is, the group will have ncols(M) generators and each row of M describes one relation.
Alternatively, there are shortcuts to create products of cyclic groups:
abelian_group Method
abelian_group(::Type{T} = FinGenAbGroup, M::AbstractVector{<:IntegerUnion}) -> FinGenAbGroup
abelian_group(::Type{T} = FinGenAbGroup, M::IntegerUnion...) -> FinGenAbGroupCreates the direct product of the cyclic groups M.
julia> G = abelian_group(2, 2, 6)
(Z/2)^2 x Z/6or even
free_abelian_group Method
free_abelian_group(::Type{T} = FinGenAbGroup, n::Int) -> FinGenAbGroupCreates the free abelian group of rank n.
abelian_groups Method
abelian_groups(n::Int) -> Vector{FinGenAbGroup}Given a positive integer
julia> abelian_groups(8)
3-element Vector{FinGenAbGroup}:
(Z/2)^3
Z/2 x Z/4
Z/8Invariants
is_snf Method
is_snf(G::FinGenAbGroup) -> BoolReturn whether the current relation matrix of the group
number_of_generators Method
number_of_generators(G::FinGenAbGroup) -> IntReturn the number of generators of
nrels Method
number_of_relations(G::FinGenAbGroup) -> IntReturn the number of relations of
rels Method
rels(A::FinGenAbGroup) -> ZZMatrixReturn the currently used relations of
torsion_free_rank Method
torsion_free_rank(A::FinGenAbGroup) -> IntReturn the torsion free rank of
See also rank.
Examples
julia> G = abelian_group(5,0)
Z/5 x Z
julia> torsion_free_rank(G)
1
julia> rank(G)
2order Method
order(A::FinGenAbGroup) -> ZZRingElemReturn the order of
exponent Method
exponent(A::FinGenAbGroup) -> ZZRingElemReturn the exponent of
is_trivial Method
is_trivial(A::FinGenAbGroup) -> BoolReturn whether
is_torsion Method
is_torsion(G::FinGenAbGroup) -> BoolReturn whether G is a torsion group.
elementary_divisors Method
elementary_divisors(G::FinGenAbGroup) -> Vector{ZZRingElem}Given
