Elements
Elements in a finitely generated abelian group are of type FinGenAbGroupElem and are always given as a linear combination of the generators. Internally this representation is normalised to have a unique representative.
Creation
In addition to the standard function id, zero and one that can be used to create the neutral element, we also support more targeted creation:
FinGenAbGroup — Method
(A::FinGenAbGroup)(x::Vector{ZZRingElem}) -> FinGenAbGroupElemGiven an array x of elements of type ZZRingElem of the same length as ngens($A$), this function returns the element of $A$ with components x.
FinGenAbGroup — Method
(A::FinGenAbGroup)(x::ZZMatrix) -> FinGenAbGroupElemGiven a matrix over the integers with either $1$ row and ngens(A) columns or ngens(A) rows and $1$ column, this function returns the element of $A$ with components x.
Access
Predicates
We have the standard predicates iszero, isone and is_identity to test an element for being trivial.
Invariants
Iterator
One can iterate over the elements of a finite abelian group.
julia> G = abelian_group(ZZRingElem[1 2; 3 4])
Finitely generated abelian group
with 2 generators and 2 relations and relation matrix
[1 2]
[3 4]
julia> for g in G
println(g)
end
Abelian group element [0, 0]
Abelian group element [0, 1]