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.
The standard constructors hom and iso work as usual, with one minor difference as explained below. Suppose that the generators of A are g_1, ..., g_n, and that phi(g_i)=h_i for each i, where phi is the homomorphism one wishes to construct. The list 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 g_i may not necessarily be generators of A as given by the function Generators(A). The only requirement is that the set {g_1, ..., g_n} does actually generate the whole of A. Similarly, in the case of the iso constructor, there is a requirement that the set {h_1, ..., h_n} does actually generate the whole of B.
- a list of the n 2-tuples < g_i, h_i > (order not important);
- a list of the n arrow-pairs g_i -> h_i (order not important);
- h_1, ..., h_n (order is important).
Creates a homomorphism (isomorphism) from A into B as given by the mapping of gens[i] into images[i]. A and B can be generic abelian groups or they may be any type of groups (like permutation groups, matrix groups, etc, ... ).
The two functions Homomorphism and Isomorphism do not require the elements of the argument gens to be generators of A as given by Generators(A), so that they allow more freedom when creating a homomorphism (isomorphism). If however these elements fail to generate the whole of A then the subsequent map application will fail. Similarly, if the elements of the argument images of the Isomorphism function fail to generate the whole of B then the subsequent map application will also fail.
Recall that we defined the subgroups GH1_Zm and GH2_Zm of GA_Zm as: > 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 GA_Zm: GH1_Zm.1 = GA_Zm.2 + GA_Zm.3 GH1_Zm.2 = GA_Zm.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 GA_Zm: GH2_Zm.1 = GA_Zm.1 GH2_Zm.2 = GA_Zm.2 GH2_Zm.3 = GA_Zm.3 GH2_Zm.4 = GA_Zm.4 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
An alternative way of creating the homomorphism h would be
> 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) codomain
> h := Homomorphism(GH1_Zm, GH2_Zm, Generators(GH1_Zm), [GH2_Zm.1, GH2_Zm.2]);[Next][Prev] [Right] [Left] [Up] [Index] [Root]