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

Задание группы порождающими элементами и определяющими соотношениями

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

Продемонстрируем это, на примере построения группы диэдра порядка 8. Она задается следующими определяющими соотношениями:

D8 = < a, b |  a4 = 1, b2 = 1, b-1 a b = a-1 >.

Сначала зададим свободную группу F ранга 2:

gap> F:=FreeGroup("a","b");
<free group on the generators [ a, b ]>


Перед тем как задать список слов, равных единице, нужно "сообщить" системе, что под a и b будут пониматься порождающие элементы свободной группы F:

gap> a:=F.1;b:=F.2;
a
b


Теперь можно указать список тривиальных слов (обратите внимание на преобразование последнего определяющего соотношения):


gap> rels := [ a^4, b^2, b^-1*a*b*a];
[ a^4, b^2, b^-1*a*b*a ]


Тогда группа диэдра будет получена как следующая фактор-группа:

gap> G:=F/rels;
<fp group on the generators [ a, b ]>


Убедимся в том, что это действительно группа диэдра. Это можно сделать различными способами.

Идентифицируем нашу группу с помощью функции
IdGroup, построим группу диэдра с помощью стандартной библиотечной функции DihedralGroup, и убедимся, что номера полученных групп совпадают:

gap> IdGroup(G);
[ 8, 3 ]
gap> D:=DihedralGroup(8);
<pc group of size 8 with 3 generators>
gap> IdGroup(D);
[ 8, 3 ]


Заметьте, что группа D задана тремя порождающими элементами, т.е. ее система порождающих не является минимальной, зато имеет специальный вид, обеспечивающий большую эффективность при вычислениях. Минимальную систему порождающих группы D можно получить так:

gap> MinimalGeneratingSet(D);
[ f1, f2 ]


Если нужно в явном виде указать изоморфизм между двумя группами, то можно использовать функцию
IsomorphismGroups, которая возвращает искомый изоморфизм, если он существует, и fail в противном случае.

gap> f:=IsomorphismGroups(G,D);
[ a, b ] -> [ f2*f3, f1*f2 ]


Найдем теперь элементы полученной с помощью стандартной функции группы D, соответствующие элементам построенной нами выше группы G:

gap> l:=AsList(G);
[ <identity ...>, b, a^3*b, a, a^3, a*b, a^2*b, a^2 ]
gap> List(l, x -> x^f);
[ <identity> of ..., f1*f2, f1, f2*f3, f2, f1*f3, f1*f2*f3, f3 ]


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