Архив разработки (14 кб, Word)
В статье построен контрпример для проблемы А. Стройновского (Варшавский университет): пусть G — группа, H Í G — ее подгруппа. Рассмотрим ряд нормализаторов H < NG(H) < NG(NG(H)) < …, и обозначим его объединение через HN. Пусть теперь A Í G — подгруппа, для которой H < < A. Всегда ли выполняется условие A Í HN ? Контрпример найден с помощью системы компьютерной алгебры GAP.
Пусть G - группа, H Í G - ее подгруппа. Подгруппа NG(H) = {g Î G | " h Î H g-1hg Î H } называется нормализатором подгруппы H в групе G. Если NG(H) = G, то H называется нормальной подгруппой групы G, что обозначается H < G. Подгруппа H группы G называется субнормальной подгруппой, что обозначается H < < G, если она содержится в субнормальном ряде группы G, т.е. в таком ряде подгрупп
G = U1 Ê U2 Ê … Un Ê Un+1 Ê …,
где каждая подгруппа Ui+1 нормальна в подгруппе Ui.
В 2000 г. А. Стройновский (Варшавский университет) предложил следующую проблему: пусть G — произвольная группа, H Í G — ее подгруппа. Рассмотрим ряд нормализаторов
H < NG(H) < NG(NG(H)) < … ,
и обозначим через объединение всех подгрупп из этого ряда, которое назовем гипернормалью подгруппы H в группе G . Пусть теперь A Í G — подгруппа такая, что H < < A. Всегда ли выполняется следующее условие:
A Í HN ? (*)
Он же предположил, что существует контрпример, который можно найти с помощью ЭВМ.
Для поиска контпримера была использована система компьютерной алгебры GAP [1]. Эта система, название которой означает "Группы, алгоритмы и программирование", была задумана как инструмент комбинаторной теории групп в 1986 г., и в дальнейшем была распространена и на другие разделы алгебры. GAP - свободно распространяемая открытая система, кроме того, одним из ее компонентов является специальный язык программирования, который также называется GAP, на котором можно создавать собственные программы и расширять систему.
Группы в GAP могут быть заданы в разных формах, например, в виде групп подстановок, матричных групп, групп, заданных порождающими элементами и определяющими соотношениями. Среди функций для работы с группами — вычисление порядка группы, классов сопряженных элементов, центра и коммутанта группы, рядов подгрупп, Силовских подгрупп, максимальных подгрупп, нормальных подгрупп, групп автоморфизмов, решеток подгрупп, и др. Для многих конечных групп можно определить их тип изоморфизма.
Дальнейшая информация о системе может быть найдена в методическом пособии [2], а также на личной странице одного из авторов [3] и на странице Украинской группы пользователей GAP [4].
Для поиска контрпримера было решено начать проверку с неразрешимых групп подстановок из библиотеки конечных групп системы компьютерной алгебры GAP, среди которых с большей вероятностью ожидался контрпример. Алгоритм проверки для каждой отдельной группы состоял из следующих этапов:
- Вычисление списка подгрупп заданной группы;
- Отбор всех подгрупп H, которые не являются субнормальными в G;
- Отбор всех подгрупп A таких, что H < < A, для каждой подгруппы H, найденной в п.2;
- Проверка условия A Í HN для каждой такой подгруппы A и соответствующей гипернормали HN.
Проверка прекращается, когда будет найдена пара подгрупп A и N, для которых не выполняется условие A Í HN.
Этот алгоритм был реализован в программе на языке GAP. Разработанная программа состоит из двух функций:
1. Функции Row(G,H), возвращающей ряд нормализаторов { H, NG(H), NG(NG(H)), … } подгруппы H в группе G, например:
gap> G:=SymmetricGroup(6);
Sym( [ 1 .. 6 ] )
gap> H:=Subgroup(G,[(1,2,3)]);
Group([ (1,2,3) ])
gap> Row(G,H);
[ Group([ (1,2,3) ]), Group([ (1,2,3), (5,6), (4,5,6), (2,3)(5,6) ]),
Group([ (1,3,2), (4,5), (4,5,6), (2,3)(4,5), (1,4,3,6)(2,5) ]) ]
Так как группа конечна, процесс построения ряда завершается, когда получаем самонормализующуюся подгруппу K, для которой K=NG(K).
2. Функции Test(G), проверяющей выполнение условия (*) для группы G. Если условие выполняется, функция возвращает значение true, в противном случае она возвращает подгруппы Н та А, для которых не выполняется условие (*). Пример работы с этой функцией приведен ниже..
Кроме указанных функций, в программе используются стандартные библиотечные функции системы GAP:
1. Функция ConjugacyClassesSubgroups(G), возвращающая список классов сопряженных подгрупп группы G, например:
gap> G:=SymmetricGroup(3);
Sym( [ 1 .. 3 ] )
gap> ConjugacyClassesSubgroups(G);
[ Group( () )^G, Group( [ (2,3) ] )^G, Group( [ (1,2,3) ] )^G,
SymmetricGroup( [ 1 .. 3 ] )^G ]
Аргументом этой функции может быть не только группа, но также и решетка подгрупп группы (см. ниже).
2. Функция IsSubnormal(G,U), проверяющая, является ли U субнормальной подгруппой группы G.
3. Функция IsSubset(G,U), проверяющая, является ли U подмножеством G. Фактически, в программе можно было бы использовать функцию IsSubgroup(G,U), которая возвращает true, если U является группой, которая, в свою очередь, является подмножеством алгебраической структуры G. Это реализуется с помощью проверки условия IsGroup(U) and IsSubset(G,U), однако для IsSubset доступны специальные методы, которые проверяют только порождающие элементы U, если G замкнуто относительно групповой операции. Поэтому в ряде случаев, например, когда уже известно, что U является группой, лучше использовать только IsSubset.
4. Функция LatticeSubgroups(G), вычисляющая решетку подгрупп группы G, например:
gap> g:=SymmetricGroup(4);
gap> l:=LatticeSubgroups(g);
<subgroup lattice of Sym( [ 1 .. 4 ] ), 11 classes, 30 subgroups>
Эта решетка содержит классы сопряженных подгрупп как атрибут ConjugacyClassesSubgroups.
5. Функция Normaliser(G,U), возвращающая нормализатор подгруппы U в группе G, например:
gap> G:=SymmetricGroup(4);
Sym( [ 1 .. 4 ] )
gap> H:=Subgroup(G,[(1,2,3)]);
Group([ (1,2,3) ])
gap> Normalizer(G,H);
Group([ (1,2,3), (2,3) ])
Текст программы, разработанной для поиска контрпримера, приведен ниже.
Row:=function(G,H)
local i, # параметр цикла
Row, # ряд нормализаторов
T; # текущая подгруппа, нормализатор которой вычисляется
#
Row:=[]; # создаем пустой список
T:=H; # начинаем с подгруппы H
i:=0; # начальное значение параметра цикла
repeat
i:=i+1; # переход к следующему эл-ту ряда нормализаторов
Row[i]:=T; # его запись
T:=Normalizer(G,T); # вычисление его нормализатора
until T=Row[i]; # проверка, является ли он самонормализующимся
return Row;
end;
Test:=function(G)
local A, # подгруппа из списка всех подгрупп группы G
c, # класс сопряженных подгрупп
# из списка классов сопряженных подгрупп
H, # подгруппа из списка всех подгрупп группы G
m, # список классов сопряженных подгрупп
res, # результат проверки условия (*)
row, # ряд нормализаторов подгруппы H в группе G
s; # список всех подгрупп группы G
#
LatticeSubgroups(G); #решетка подгрупп группы G
Print("Subgroup lattice calculated \n");
#
m:=ConjugacyClassesSubgroups(G); #классы сопряженных подгрупп группы G
Print("ConjugacyClassesSubgroups calculated \ n");
#
# Создание списка всех подгрупп группы G
#
s:=[]; #создаем пустой список
for c in m do
Append(s,AsList(c)); #присоединяем к нему по одному элементу
od;
#
# Перебор пар (H,A) и проверка для них условия (*)
#
for H in s do
if IsSubnormal(G,H)=false then #H субнормальная => HN=G
#поэтому не проверяем
for A in s do
if IsSubset(A,H)=true then #отбираем A, которые содержат H
if IsSubnormal(A,H) then #отбираем A, где H субнормальная в A
row:=Row(G,H); #если такая A найдена, вычисляем HN
res:=IsSubset(row[Length(row)],A); #проверяем условие (*)
if res=false then #возвращаем найденный контрпример
Print("H: ", H, "\n", "A: ", A, "\n");
return [H,A];
fi;
fi;
fi;
od;
fi;
od;
return true; #контрпример не найден
Работа с программой демонстрируется такими примерами. Сначала зададим симметрическую группу подстановок третьего порядка S3 и проверим для нее условие (*).
gap> S3:=SymmetricGroup(3);
Sym( [ 1 .. 3 ] )
gap> Test(S3);
Subgroup lattice calculated
ConjugacyClassesSubgroups calculated
true
Видим, что для симметрической группы подстановок третьего порядка условие (*) выполняется для всех ее подгрупп. Теперь проверим условие (*) для симметрической группы подстановок пятого порядка S5:
gap> S5:=SymmetricGroup(5);
Sym( [ 1 .. 5 ] )
gap> Test(S5);
Subgroup lattice calculated
ConjugacyClassesSubgroups calculated
H: Group( [ (4,5) ] )
A: Group( [ (4,5), (2,3), (2,4)(3,5) ] )
[ Group([ (4,5) ]), Group([ (4,5), (2,3), (2,4)(3,5) ]) ]
В результате видим, что условие (*) не выполняется для таких подгрупп: H = < (4,5) > та А= < (4,5), (2,3), (2,4)(3,5) >. Действительно, NG(H)=< (2,3),(1,2),(4,5) > и состоит из подстановок e , (4,5), (2,3), (2,3)(4,5), (1,2), (1,2)(4,5), (1,2,3), (1,2,3)(4,5), (1,3,2), (1,3,2)(4,5), (1,3) и (1,3)(4,5). При этом NG(H)=NG(NG(H)), следовательно, HN=NG(H). С другой стороны, A состоит из подстановок e , (4,5), (2,3), (2,3)(4,5), (2,4)(3,5), (2,4,3,5), (2,5,3,4), (2,5)(3,4), где последние 4 подстановки не содержатся в HN. Таким образом, контпример найден.
Литература
- The GAP Group, GAP - Groups, Algorithms, and Programming, Version 4.2, Aachen, St Andrews, 1999, (http://www.gap-system.org).
- Коновалов А.Б. Система компьютерной алгебры GAP. Методические указания. Запорожье, ЗГУ, 1999. - 42 с.
- http://www.zsu.zp.ua/ppages/konoval/konov.htm
- http://www.zsu.zp.ua/UkrGAP/
В начало
|