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” ifgens
does not generateself
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 groupG
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 ])