Abelian Groups
Here we describe the interface to abelian groups in Hecke.
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(::Type{T} = FinGenAbGroup, M::ZZMatrix) -> FinGenAbGroup
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(::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(::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(::Type{T} = FinGenAbGroup, M::AbstractVector{<:IntegerUnion}) -> FinGenAbGroup
abelian_group(::Type{T} = FinGenAbGroup, M::IntegerUnion...) -> FinGenAbGroup
Creates the direct product of the cyclic groups M
.
julia> G = abelian_group(2, 2, 6)
(Z/2)^2 x Z/6
or even
free_abelian_group(::Type{T} = FinGenAbGroup, n::Int) -> FinGenAbGroup
Creates the free abelian group of rank n
.
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/8
Invariants
is_snf(G::FinGenAbGroup) -> Bool
Return whether the current relation matrix of the group
number_of_generators(G::FinGenAbGroup) -> Int
Return the number of generators of
number_of_relations(G::FinGenAbGroup) -> Int
Return the number of relations of
rels(A::FinGenAbGroup) -> ZZMatrix
Return the currently used relations of
torsion_free_rank(A::FinGenAbGroup) -> Int
Return the torsion free rank of
See also rank
.
order(A::FinGenAbGroup) -> ZZRingElem
Return the order of
exponent(A::FinGenAbGroup) -> ZZRingElem
Return the exponent of
is_trivial(A::FinGenAbGroup) -> Bool
Return whether
is_torsion(G::FinGenAbGroup) -> Bool
Return whether G
is a torsion group.
elementary_divisors(G::FinGenAbGroup) -> Vector{ZZRingElem}
Given