Homomorphisms of abelian groups

Todo

  • there must be a homspace first

  • there should be hom and Hom methods in abelian group

AUTHORS:

  • David Joyner (2006-03-03): initial version

class sage.groups.abelian_gps.abelian_group_morphism.AbelianGroupMap(parent)[source]

Bases: Morphism

A set-theoretic map between AbelianGroups.

class sage.groups.abelian_gps.abelian_group_morphism.AbelianGroupMorphism(G, H, genss, imgss)[source]

Bases: Morphism

Some python code for wrapping GAP’s GroupHomomorphismByImages function for abelian groups. Returns “fail” if gens does not generate self or if the map does not extend to a group homomorphism, self - other.

EXAMPLES:

sage: G = AbelianGroup(3,[2,3,4],names='abc'); G
Multiplicative Abelian group isomorphic to C2 x C3 x C4
sage: a,b,c = G.gens()
sage: H = AbelianGroup(2,[2,3],names='xy'); H
Multiplicative Abelian group isomorphic to C2 x C3
sage: x,y = H.gens()

sage: from sage.groups.abelian_gps.abelian_group_morphism import AbelianGroupMorphism
sage: phi = AbelianGroupMorphism(H,G,[x,y],[a,b])  # optional - gap_package_polycyclic
>>> from sage.all import *
>>> G = AbelianGroup(Integer(3),[Integer(2),Integer(3),Integer(4)],names='abc'); G
Multiplicative Abelian group isomorphic to C2 x C3 x C4
>>> a,b,c = G.gens()
>>> H = AbelianGroup(Integer(2),[Integer(2),Integer(3)],names='xy'); H
Multiplicative Abelian group isomorphic to C2 x C3
>>> x,y = H.gens()

>>> from sage.groups.abelian_gps.abelian_group_morphism import AbelianGroupMorphism
>>> phi = AbelianGroupMorphism(H,G,[x,y],[a,b])  # optional - gap_package_polycyclic

AUTHORS:

  • David Joyner (2006-02)

image(S)[source]

Return the image of the subgroup S by the morphism.

This only works for finite groups.

INPUT:

  • S – a subgroup of the domain group G

EXAMPLES:

sage: G = AbelianGroup(2,[2,3],names='xy')
sage: x,y = G.gens()
sage: subG = G.subgroup([x])                       # optional - gap_package_polycyclic
sage: H = AbelianGroup(3,[2,3,4],names='abc')
sage: a,b,c = H.gens()
sage: phi = AbelianGroupMorphism(G,H,[x,y],[a,b])  # optional - gap_package_polycyclic
sage: phi.image(subG)                              # optional - gap_package_polycyclic
Multiplicative Abelian subgroup isomorphic to C2 generated by {a}
>>> from sage.all import *
>>> G = AbelianGroup(Integer(2),[Integer(2),Integer(3)],names='xy')
>>> x,y = G.gens()
>>> subG = G.subgroup([x])                       # optional - gap_package_polycyclic
>>> H = AbelianGroup(Integer(3),[Integer(2),Integer(3),Integer(4)],names='abc')
>>> a,b,c = H.gens()
>>> phi = AbelianGroupMorphism(G,H,[x,y],[a,b])  # optional - gap_package_polycyclic
>>> phi.image(subG)                              # optional - gap_package_polycyclic
Multiplicative Abelian subgroup isomorphic to C2 generated by {a}
kernel()[source]

Only works for finite groups.

Todo

not done yet; returns a gap object but should return a Sage group.

EXAMPLES:

sage: H = AbelianGroup(3,[2,3,4],names='abc'); H
Multiplicative Abelian group isomorphic to C2 x C3 x C4
sage: a,b,c = H.gens()
sage: G = AbelianGroup(2,[2,3],names='xy'); G
Multiplicative Abelian group isomorphic to C2 x C3
sage: x,y = G.gens()
sage: phi = AbelianGroupMorphism(G,H,[x,y],[a,b])  # optional - gap_package_polycyclic
sage: phi.kernel()                                 # optional - gap_package_polycyclic
Group([  ])

sage: H = AbelianGroup(3,[2,2,2],names='abc')
sage: a,b,c = H.gens()
sage: G = AbelianGroup(2,[2,2],names='x')
sage: x,y = G.gens()
sage: phi = AbelianGroupMorphism(G,H,[x,y],[a,a])  # optional - gap_package_polycyclic
sage: phi.kernel()                                 # optional - gap_package_polycyclic
Group([ f1*f2 ])
>>> from sage.all import *
>>> H = AbelianGroup(Integer(3),[Integer(2),Integer(3),Integer(4)],names='abc'); H
Multiplicative Abelian group isomorphic to C2 x C3 x C4
>>> a,b,c = H.gens()
>>> G = AbelianGroup(Integer(2),[Integer(2),Integer(3)],names='xy'); G
Multiplicative Abelian group isomorphic to C2 x C3
>>> x,y = G.gens()
>>> phi = AbelianGroupMorphism(G,H,[x,y],[a,b])  # optional - gap_package_polycyclic
>>> phi.kernel()                                 # optional - gap_package_polycyclic
Group([  ])

>>> H = AbelianGroup(Integer(3),[Integer(2),Integer(2),Integer(2)],names='abc')
>>> a,b,c = H.gens()
>>> G = AbelianGroup(Integer(2),[Integer(2),Integer(2)],names='x')
>>> x,y = G.gens()
>>> phi = AbelianGroupMorphism(G,H,[x,y],[a,a])  # optional - gap_package_polycyclic
>>> phi.kernel()                                 # optional - gap_package_polycyclic
Group([ f1*f2 ])
sage.groups.abelian_gps.abelian_group_morphism.is_AbelianGroupMorphism(f)[source]