Two functions are provided to construct homomorphisms or isomorphisms from one group into another, where either of the groups, or both, may be generic abelian groups.
Given groups A and B, construct a homomorphism from A to B as defined by the extension L. If one or both of A and B are generic abelian groups this works as usual, with one minor difference as explained below. Suppose that the generators of A are g1, ..., gn, and that φ(gi)=hi for each i, where φ is the homomorphism one wishes to construct. The list L as required by the constructors must be one of the following:If A is a generic abelian group this rule is relaxed somewhat in the following sense: If L is a list of n 2-tuples or of n arrow-pairs, the elements gi need not be the defining generators of A. The only requirement is that the set {g1, ..., gn} does actually generate the whole of A.
- (a)
- a list of the n 2-tuples < gi, hi > (order not important);
- (b)
- a list of the n arrow-pairs gi -> hi (order not important);
- (c)
- h1, ..., hn (order is important).
Creates a homomorphism from A into B as given by the mapping of X into Y. The arguments A and B may be any type of group, including of course, generic abelian groups.The function Homomorphism does not require the elements of the argument X to be generators of A as given by Generators(A), so it allows more freedom when creating a homomorphism. If, however, these elements fail to generate the whole of A then the subsequent map application will fail.
Given groups A and B, construct an isomorphism from A to B as defined by the extension L. If one or both of A and B are generic abelian groups this works as usual, with one minor difference as explained below. Suppose that the generators of A are g1, ..., gn, and that φ(gi)=hi for each i, where φ is the isomorphism one wishes to construct. The list L as required by the constructors must be one of the following:If A is a generic abelian group this rule is relaxed somewhat in the following sense: If L is a list of n 2-tuples or of n arrow-pairs, the elements gi may not necessarily be generators of A as given by the function Generators(A). The only requirement is that the set {h1, ..., hn} does actually generate the whole of B.
- (a)
- a list of the n 2-tuples < gi, hi > (order not important);
- (b)
- a list of the n arrow-pairs gi -> hi (order not important);
- (c)
- h1, ..., hn (order is important).
Creates a isomorphism from A into B as given by the mapping of X into Y. The arguments A and B can be any type of group, including of course, generic abelian groups.The function Isomorphism does not require the elements of the argument X to be generators of A as given by Generators(A), so it allows more freedom when creating an isomorphism. If, however, these elements fail to generate the whole of A then the subsequent map application will fail.
> GH1_Zm; Generic Abelian Group over Residue class ring of integers modulo 34384 Abelian Group isomorphic to Z/6 + Z/612 Defined on 2 generators in supergroup G: GH1_Zm.1 = G.2 + G.3 GH1_Zm.2 = G.4 Relations: 6*GH1_Zm.1 = 0 612*GH1_Zm.2 = 0 > GH2_Zm; Generic Abelian Group over Residue class ring of integers modulo 34384 Abelian Group isomorphic to Z/2 + Z/2 + Z/6 + Z/612 Defined on 4 generators in supergroup G: GH2_Zm.1 = G.1 GH2_Zm.2 = G.2 GH2_Zm.3 = G.3 GH2_Zm.4 = G Relations: 2*GH2_Zm.1 = 0 2*GH2_Zm.2 = 0 6*GH2_Zm.3 = 0 612*GH2_Zm.4 = 0We construct the homomorphism
> h := hom<GH1_Zm -> GH2_Zm | GH2_Zm.1, GH2_Zm.2 >; > h(GH1_Zm); Generic Abelian Group over Residue class ring of integers modulo 34384 Abelian Group isomorphic to Z/2 + Z/2 Defined on 2 generators in supergroup GH2_Zm: $.1 = GH2_Zm.2 $.2 = GH2_Zm.1 Relations: 2*$.1 = 0 2*$.2 = 0but we cannot construct the isomorphism
> i := iso<GH1_Zm -> GH2_Zm | GH2_Zm.1, GH2_Zm.2 >; >> i := iso<GH1_Zm -> GH2_Zm | GH2_Zm.1, GH2_Zm.2 >; ^ Runtime error in map< ... >: Images do not generate the (whole) codomainAn alternative way of creating the homomorphism h would be
> h := Homomorphism(GH1_Zm, GH2_Zm, Generators(GH1_Zm), [GH2_Zm.1, GH2_Zm.2]);