Maps between abelian groups are mainly of type GrpAbFinGenMap. They allow normal map operations such as image, preimage, domain, codomain and can be created in a variety of situations.

Maps

Maps between abelian groups can be constructed via

• images of the generators
• pairs of elements
• via composition
• and isomorphism/ inclusion testing
homMethod
hom(G::GrpAbFinGen, H::GrpAbFinGen, A::Matrix{ <: Map{GrpAbFinGen, GrpAbFinGen}}) -> Map

Given groups $G$ and $H$ that are created as direct products as well as a matrix $A$ containing maps $A[i,j] : G_i \to H_j$, return the induced homomorphism.

is_isomorphicMethod
is_isomorphic(G::GrpAbFinGen, H::GrpAbFinGen) -> Bool

Return whether $G$ and $H$ are isomorphic.

julia> G = free_abelian_group(2)GrpAb: Z^2julia> h = hom(G, G, [gen(G, 2), 3*gen(G, 1)])Map with following data
Domain:
=======
Abelian group with structure: Z^2
Codomain:
=========
Abelian group with structure: Z^2julia> h(gen(G, 1))Element of
GrpAb: Z^2
with components [0 1]julia> h(gen(G, 2))Element of
GrpAb: Z^2
with components [3 0]

Homomorphisms also allow addition and subtraction corresponding to the pointwise operation:

julia> G = free_abelian_group(2)GrpAb: Z^2julia> h = hom(G, G, [2*gen(G, 2), 3*gen(G, 1)])Map with following data
Domain:
=======
Abelian group with structure: Z^2
Codomain:
=========
Abelian group with structure: Z^2julia> (h+h)(gen(G, 1))Element of
GrpAb: Z^2
with components [0 4]