[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Homomorphisms

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.

hom< A -> B | L> : Grp, Grp, List -> Map
iso< A -> B | L> : Grp, Grp, List -> Map
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.
Homomorphism(A, B, gens, images) : Grp, Grp, [ GrpElt ], [ GrpElt ] -> Map
Isomorphism(A, B, gens, images) : Grp, Grp, [ GrpElt ], [ GrpElt ] -> Map
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.


Example GrpAbGen_Homomorphisms (H27E8)

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 = 0
We 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 = 0
but 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) codomain
An alternative way of creating the homomorphism h would be

> h := Homomorphism(GH1_Zm, GH2_Zm, Generators(GH1_Zm), [GH2_Zm.1, GH2_Zm.2]);
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]