|
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:
- (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).
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.
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:
- (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).
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.
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.
Recall that we defined the subgroups GH1 Zm and GH2 Zm of
G 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 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 = 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]
|