Вернуться к списку примеров


Произведения групп в системе GAP
 
На данной странице помещен сокращенный перевод главы справочного руководства по системе GAP, которая  описывает разнообразные конструкции произведений групп, реализация которых возможна в GAP. Перевод выполнен студентом ЗГУ  Д. А.  Лысенко. Оригинал данной главы на английском языке находится здесь .

В текущей версии системы некоторые виды произведений групп доступны только в том случае, когда оба множителя имеют одинаковый вид (т.е. обе группы одновременно являются группами подстановок, или матричными группами, и т.п.), а другие виды произведений групп вообще доступны только для определённых типов групп, таких как группы подстановок и полициклические–группы (в дальнейшем — рс-группы), когда произведение групп естественным образом может быть представлено как группа, имеющая такой же вид.

Система GAP не гарантирует, что произведение двух групп будет иметь конкретный вид (т.е. являться рс-группой или группой подстановок, и т.д.). Исключениями являются только две функции WreathProductImprimitiveAction и WreathProductProductAction, которые возвращают конструкции, имеющие смысл только лишь для групп подстановок.

Тем не менее, GAP будет стараться выбрать наиболее эффективный в данном случае вид для результирующей группы. Так, произведение групп подстановок или рс-групп также будет группой того же вида.

Использование гомоморфизмов вложения и проекции позволяет связать произведение групп с образующими его множителями.

В системе GAP возможно построение следующих видов произведений групп:


Прямые произведения

Прямое произведение группы является декартовым произведением групп (рассматриваемых как множества элементов) с покомпонентным произведением.

Функции

DirectProduct( G, H )
DirectProductOp( list, expl )


возвращают прямое произведение групп, заданных в качестве аргументов. Прямое произведение воспринимает любое положительное количество аргументов и вызывает операцию DirectProductOp, которая имеет ровно два аргумента, а именно полный список групп и одну из этих групп (этот в некотором роде странный синтаксис позволяет при выборе метода использовать наиболее подходящий метод для специальных случаев, например, если все группы являются группами подстановок или рс-группами).

GAP будет стараться выбрать оптимальный вид группы - прямого произведения других групп. Например, прямое произведение групп подстановок вновь будет группой подстановок, а прямое произведение рс-групп - рс-группой.

Для прямого произведения Р операция вложения Embedding(Р, nr) возвращает гомоморфизм вложения его  nr-того множителя в Р. Операция проектирования Projection(P,nr) возвращает проекцию прямого произведения Р на nr -ый множитель.

gap> g:=Group((1,2,3),(1,2));;
gap> d:=DirectProduct(g,g,g);
Group( [ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8) ] )
gap> Size(d);
216
gap> e:=Embedding(d,2);
2nd embedding into Group( [ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8) ] )
gap> Image(e,(1,2));
(4,5)
gap> Image(Projection(d,2),(1,2,3)(4,5)(8,9));
(1,2)




Полупрямые произведения

Полупрямое произведение группы N и группы G , действующей на группе N посредством гомоморфизма alpha из группы G в группу автоморфизмов группы N, является декартовым произведением множеств G×N , умножение на котором задано следующей формулой: (g,n)·(h,m) = (g*h, n^(h^alpha)*m).

Функция

SemidirectProduct( G, alpha, N )

возвращает полупрямое произведение группы N на группу G, действующую на N через alpha, где alpha должно быть гомоморфизмом из G в группу автоморфизмов группы N.

gap> n:=AbelianGroup(IsPcGroup,[2,2]);
<pc group of size 4 with 2 generators>
gap> au:=AutomorphismGroup(n);
<group with 4 generators>
gap> apc:=IsomorphismPcGroup(au);
CompositionMapping( Pcgs([ (2,3), (1,3,2) ]) ->
[ f1, f2 ], <action homomorphism> )
gap> g:=Image(apc);;
Group( [ f1*f2^2, f1*f2^2, f1*f2, <identity> of ... ] )
gap> apci:=InverseGeneralMapping(apc);
InverseGeneralMapping( CompositionMapping( Pcgs([ (2,3), (1,3,2) ]) ->
[ f1, f2 ], <action homomorphism> ) )
gap> IsGroupHomomorphism(apci);
true
gap> p:=SemidirectProduct(g,apci,n);
<pc group of size 24 with 4 generators>
gap> IsomorphismGroups(p,Group((1,2,3,4),(1,2)));
[f1,f2,f3,f4]->[(3,4),(2,4,3),(1,2)(3,4),(1,3)(2,4)]


Для полупрямого произведения Р группы G с группой N операция Embedding(P,1) возвращает вложение в него группы G, Embedding(P,2) - группы N. Операция Projection(P) возвращает проекцию полупрямого произведения Р на группу G .

gap> Size(Image(Embedding(p,1)));
6
gap> Embedding(p,2);            
[f1,f2]->[f3,f4]
gap> Projection(p);
[f1,f2,f3,f4]->[f1,f2,<identity>of...,<identity>of...]


В версии GAP 4.3 появился еще один вариант обращения к данной функции - SemidirectProduct( autgp, N ). Здесь autgp должна являться группой автоморфизмов группы N, и тогда в результате будет получено не что иное, как SemidirectProduct(autgp,IdentityMapping(autgp),N) . При этом, если autgrp не была получена с помощью операции  AutomorphismGroup, рекомендуется предварительно проверить с помощью функции IsGroupOfAutomorphisms(autgrp), что autgrp действительно состоит из групповых автоморфизмов.



Подпрямые произведения

Подпрямое произведение групп G и H относительно эпиморфизмов phi и psi (в одну и ту же группу А) является подгруппой прямого произведения G×H , которое состоит из элементов (g,h), для которых g^phi = h^psi. Это соответствует диаграмме:

                   G
                   | phi
             psi   V
          H  --->  А
             
Функция

SubdirectProduct( G, H, Ghom, Hhom )


возвращает подпрямое произведение G и H относительно эпиморфизмов Ghom из G в группу А и Hhom из H в ту же самую группу А. Для подпрямого произведения Р, операция Projection(P,nr) возвращает его проекцию на nr-ный множитель (в общем случае множители не вкладываются в подпрямое произведение).

gap> g:=Group((1,2,3),(1,2));
Group( [ (1,2,3), (1,2) ] )
gap> hom:=GroupHomomorphismByImagesNC(g,g,[(1,2,3),(1,2)],[(),(1,2)]);
[ (1,2,3), (1,2) ] -> [ (), (1,2) ]
gap> s:=SubdirectProduct(g,g,hom,hom);
Group( [ (1,2,3), (1,2)(5,6), (4,5,6) ] )
gap> Size(s);
18
gap> p:=Projection(s,2);
2nd projection of Group( [ (1,2,3), (1,2)(5,6), (4,5,6) ] )
gap> Image(p,(1,3,2)(4,5,6));
(1,2,3)




Сплетения

Сплетение группы G с группой подстановок Р , действующей на n точках, является полупрямым произведением нормальной подгруппы Gn  с группой Р, которая действует на Gn, переставляя ее компоненты.

Функции

WreathProduct( G, P )
WreathProduct( G, H[, hom] )


возвращают сплетение группы G с группой подстановок Р (действущей на своих MovedPoints).

Второй вариант возвращает сплетение группы G с образом группы H относительно гомоморфизама hom, который должен быть гомоморфизмом из H в группу подстановок. Если hom не задан и Р не является группой подстановок, то в качестве hom выбирается изоморфизм из P в группу подстановок IsomorphismPermGroup(P),  степень которой может зависеть от метода и поэтому не является вполне определенной.

Для сплетения W группы G с группой подстановок Р степени n при 1<= nr<= n операция Embedding(W,nr)  возвращает вложение группы G в nr-ую компоненту прямого произведения базовой группы Gn из сплетения W. Операция Embedding(W,n+1) возвращает вложение группы Р в W. Операция Projection(W) возвращает проекцию сплетения W на группу Р.

gap> g:=Group((1,2,3),(1,2));
Group( [ (1,2,3), (1,2) ] )
gap> p:=Group((1,2,3));
Group( [ (1,2,3) ] )
gap> w:=WreathProduct(g,p);
Group( [ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8),
  (1,4,7)(2,5,8)(3,6,9) ] )
gap> Size(w);
648
gap> Embedding(w,1);
1st embedding into Group( [ (1,2,3), (1,2), (4,5,6), (4,5), (7,8,9), (7,8),
  (1,4,7)(2,5,8)(3,6,9) ] )
gap> Image(Embedding(w,3));
Group( [ (7,8,9), (7,8) ] )
gap> Image(Embedding(w,4));
Group( [ (1,4,7)(2,5,8)(3,6,9) ] )
gap> Image(Projection(w),(1,4,8,2,6,7,3,5,9));
(1,2,3)


Следует отметить также, что некоторые специфические сплетения групп подстановок можно задавать специальными функциями, отличающимися способами задания действия одной группы на прямом произведении копий другой группы: WreathProductImprimitiveAction(G,H) и  WreathProductProductAction(G,H)



Вернуться к списку примеров