Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Система компьютерной алгебры GAP - выпуск 22 от 21/04/03


Информационный Канал Subscribe.Ru

Рассылка "Система компьютерной алгебры GAP"
ведущий рассылки А.Б.Коновалов,
a_konovalov@hotmail.com
выпуск 22 от 21 апреля 2003 г.


СОДЕРЖАНИЕ:
  • Пакет LAGUNA 3.0 для работы с групповыми кольцами
  • Новый журнал "Алгебра и дискретная математика"
  • Международная конференция по математике и механике (Томск, 16-18 сентября 2003 г.)
  • Вопрос: как задать группу порождающими элементами и определяющими соотношениями ?

Пакет LAGUNA 3.0 для работы с групповыми кольцами

8 апреля 2003 г. объявлено о выпуске пакета LAGUNA 3.0, расширяющего возможности GAP 4.3 для работы с групповыми кольцами. Название пакета расшифровывается как "Lie AlGebras and UNits of group Algebras". Авторы пакета - Виктор Бовди, Александр Коновалов, Ричард Россманиц и Чобо Шнайдер.

Кроме определения некоторых общих характеристик групповых колец и их элементов, LAGUNA позволяет исследовать Лиевские свойства группового кольца конечной группы и вычислять нормированную мультипликативную группу модулярной групповой алгебры конечной р-группы над полем из р элементов. Домашняя страница пакета LAGUNA c дальнейшей информацией о нем, документацией и дистрибутивом находится по адресу http://ukrgap.exponenta.ru/laguna.htm.

Для демонстрации возможностей пакета LAGUNA выполним некоторые вычисления в групповой алгебре группы диэдра порядка 16 над полем из двух элементов. Вначале мы создадим эту групповую алгебру:


gap> K := GF( 2 );
GF(2)
gap> G := DihedralGroup( 16 );
<pc group of size 16 with 4 generators>
gap> KG := GroupRing( K, G );
<algebra-with-one over GF(2), with 4 generators>


Некоторые свойства и атрибуты групповой алгебры KG могут быть получены сразу же, так как являются прямым следствием ее определения:


gap> IsGroupAlgebra( KG );
true
gap> IsPModularGroupAlgebra( KG );
true
gap> IsFModularGroupAlgebra( KG );
true
gap> UnderlyingGroup( KG );
<pc group of size 16 with 4 generators>
gap> LeftActingDomain( KG );
GF(2)


Так как KG является групповой алгеброй, то информация, хранимая в атрибуте
LeftActingDomain, также может быть получена двумя другими способами:


gap> UnderlyingRing( KG );
GF(2)
gap> UnderlyingField( KG );
GF(2)


Построим некоторый элемент данной групповой алгебры. Например, возьмем минимальную систему порождающих элементов группы G и найдем соответствующие им элементы в KG:


gap> MinimalGeneratingSet( G );
[ f1, f2 ]
gap> l := List( last, g -> g^Embedding( G, KG ) );
[ (Z(2)^0)*f1, (Z(2)^0)*f2 ]


Теперь зададим элемент x следующим образом:


gap> a :=l[1]; b:=l[2]; # a и b - образы порождающих элементов группы в KG
(Z(2)^0)*f1
(Z(2)^0)*f2
gap> e := One( KG ); # для удобства, обозначим нейтральный элемент через e
(Z(2)^0)*<identity> of ...
gap> x := ( e + a ) * ( e + b );
(Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2


Исследуем некоторые основные свойства этого элемента:

gap> Support( x );
[ <identity> of ..., f1, f2, f1*f2 ]
gap> CoefficientsBySupport( x );
[ Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0 ]
gap> Length( x );
4
gap> TraceOfMagmaRingElement( x );
Z(2)^0


Мы можем также вычислить сумму коэффициентов элемента x:

gap> Augmentation( x );
0*Z(2)
gap> IsUnit( KG, x );
false


Так как сумма коэффициентов равна нулю, то x не является обратимым, но 1+x - обратим. Это также легко проверить:

gap> y := e + x;
(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2
gap> IsUnit( KG, y );
true


Обратный элемент к 1+x вычисляется очень легко:

gap> y^-1;
(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f3+(Z(2)^0)*f4+(Z(2)^0)*f1*f2+(Z(2)^0)*f1*f3+(
Z(2)^0)*f1*f4+(Z(2)^0)*f2*f4+(Z(2)^0)*f1*f2*f4+(Z(2)^0)*f2*f3*f4+(Z(2)^
0)*f1*f2*f3*f4


Проверим, что получен в действительности обратный элемент:

gap> y * y^-1;
(Z(2)^0)*<identity> of ...


Мы можем также проверить, является ли y симметричным (т.е., инвариантным относительно классической инволюции), а также является ли y унитарным (т.е., переводится классической инволюцией в элемент, обратный к y). В данном случае ни то, ни другое условие не выполняется:

gap> Involution( y );
(Z(2)^0)*f1+(Z(2)^0)*f1*f2+(Z(2)^0)*f2*f3*f4
gap> y = Involution( y );
false
gap> y * Involution( y );
(Z(2)^0)*<identity> of ...+(Z(2)^0)*f2+(Z(2)^0)*f2*f3*f4


Теперь вычислим некоторые важные идеалы групповой алгебры KG. Сначала получим фундаментальный идеал, который совпадает с множеством элементов, у которых сумма коэффициентов равна нулю. В нашем случае он совпадает с радикалом групповой алгебры:


gap> AugmentationIdeal( KG );
<two-sided ideal in <algebra-with-one of dimension 16 over GF(2)>,
(dimension 15)>
gap> AugmentationIdeal( KG ) = RadicalOfAlgebra( KG );
true


Хорошо известно, что в данном случае фундаментальный идеал является нильпотентным идеалом. Используя теорию размерностных подгрупп, мы можем вычислить его индекс нильпотентности без непосредственного вычисления степеней фундаментального идела:

gap> AugmentationIdealNilpotencyIndex( KG );
9


С другой стороны, мы можем вычислить и степени фундаментального идела:

gap> AugmentationIdealPowerSeries( KG );
[ <algebra of dimension 15 over GF(2)>, <algebra of dimension 13 over GF(2)>,
<algebra of dimension 11 over GF(2)>, <algebra of dimension 9 over GF(2)>,
<algebra of dimension 7 over GF(2)>, <algebra of dimension 5 over GF(2)>,
<algebra of dimension 3 over GF(2)>, <algebra of dimension 1 over GF(2)>,
<algebra over GF(2)> ]


Как видно, длина данного списка совпадает с полученным ранее индексом нильпотентности.

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


gap> V := NormalizedUnitGroup( KG );
<group of size 32768 with 15 generators>


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


gap> W := PcNormalizedUnitGroup( KG );
<pc group of size 32768 with 15 generators>


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


Первый из изоморфизмов отображает NormalizedUnitGroup(KG) в ее рс-представление PcNormalizedUnitGroup(PC). Найдем с его помощью образы элементов группы G в W:

gap> t := NaturalBijectionToPcNormalizedUnitGroup( KG );
MappingByFunction( <group of size 32768 with 15 generators>, <pc group of size
32768 with 15 generators>, function( x ) ... end )
gap> List( AsList( G ), x -> ( x^Embedding( G, KG ) )^t );
[ <identity> of ..., f2, f1, f3, f7, f1*f2*f3, f2*f3, f2*f7, f1*f3, f1*f7, f3*f7,
f1*f2*f7, f1*f2*f3*f7, f2*f3*f7, f1*f3*f7, f1*f2 ]


Второй изоморфизм является обратным к предыдущему:

gap> f := NaturalBijectionToNormalizedUnitGroup( KG );
[ f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15 ] ->
[ (Z(2)^0)*f2, (Z(2)^0)*f1, (Z(2)^0)*f3, (Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2,
(Z(2)^0)*f2+(Z(2)^0)*f3+(Z(2)^0)*f2*f3, (Z(2)^0)*f1+(Z(2)^0)*f3+(Z(2)^0)*f1*f3,
(Z(2)^0)*f4, (Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f3+(Z(2)^0)*f1*f2+(Z(2)^0)*f1*f3+(
Z(2)^0)*f2*f3+(Z(2)^0)*f1*f2*f3, (Z(2)^0)*f2+(Z(2)^0)*f4+(Z(2)^0)*f2*f4,
(Z(2)^0)*f1+(Z(2)^0)*f4+(Z(2)^0)*f1*f4, (Z(2)^0)*f3+(Z(2)^0)*f4+(Z(2)^0)*f3*f4,
(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f4+(Z(2)^0)*f1*f2+(Z(2)^0)*f1*f4+(Z(2)^
0)*f2*f4+(Z(2)^0)*f1*f2*f4, (Z(2)^0)*f2+(Z(2)^0)*f3+(Z(2)^0)*f4+(Z(2)^
0)*f2*f3+(Z(2)^0)*f2*f4+(Z(2)^0)*f3*f4+(Z(2)^0)*f2*f3*f4,
(Z(2)^0)*f1+(Z(2)^0)*f3+(Z(2)^0)*f4+(Z(2)^0)*f1*f3+(Z(2)^0)*f1*f4+(Z(2)^
0)*f3*f4+(Z(2)^0)*f1*f3*f4, (Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f3+(Z(2)^0)*f4+(
Z(2)^0)*f1*f2+(Z(2)^0)*f1*f3+(Z(2)^0)*f1*f4+(Z(2)^0)*f2*f3+(Z(2)^0)*f2*f4+(
Z(2)^0)*f3*f4+(Z(2)^0)*f1*f2*f3+(Z(2)^0)*f1*f2*f4+(Z(2)^0)*f1*f3*f4+(Z(2)^
0)*f2*f3*f4+(Z(2)^0)*f1*f2*f3*f4 ]


В качестве примера вычислим классы сопряженных элементов группы W, а затем найдем представитель одного из классов в групповой алгебре KG:


gap> cc := ConjugacyClasses( W );;
gap> Length( cc );
848
gap> Representative( cc[ Length( cc ) ] );
f1*f2*f4*f6*f12*f15
gap> last^f;
(Z(2)^0)*<identity> of ...+(Z(2)^0)*f2+(Z(2)^0)*f4+(Z(2)^0)*f1*f2+(Z(2)^0)*f1*f3+(
Z(2)^0)*f1*f4+(Z(2)^0)*f2*f3+(Z(2)^0)*f2*f4+(Z(2)^0)*f3*f4+(Z(2)^0)*f1*f2*f3+(Z(2)^
0)*f1*f3*f4


Имея pc-представление нормированной мультипликативной группы, мы можем использовать всю мощь имеющихся в GAP методов для рс-групп. Например, очень быстро вычисляется ее нижний центральный ряд:

gap> LowerCentralSeries( W );
[ <pc group of size 32768 with 15 generators>,
Group([ f3, f5*f8*f10*f12*f13*f14*f15, f6*f8*f12*f14*f15, f7, f9*f12, f10*f14,
f11*f13, f13*f14, f14*f15 ]),
Group([ f7, f9*f12, f10*f15, f11*f15, f13*f15, f14*f15 ]),
Group([ f11*f15, f13*f15, f14*f15 ]), Group([ <identity> of ... ]) ]


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


gap> C := Centre( W );
Group([ f3*f5*f13*f15, f7, f15, f13*f15, f14*f15, f11*f13*f14*f15 ])
gap> m := MinimalGeneratingSet( C );
[ f11, f13, f14, f15, f3*f5*f13*f15 ]
gap> List( m, g -> g^f );
[ (Z(2)^0)*f3+(Z(2)^0)*f4+(Z(2)^0)*f3*f4, (Z(2)^0)*f2+(Z(2)^0)*f3+(Z(2)^0)*f4+(
Z(2)^0)*f2*f3+(Z(2)^0)*f2*f4+(Z(2)^0)*f3*f4+(Z(2)^0)*f2*f3*f4,
(Z(2)^0)*f1+(Z(2)^0)*f3+(Z(2)^0)*f4+(Z(2)^0)*f1*f3+(Z(2)^0)*f1*f4+(Z(2)^
0)*f3*f4+(Z(2)^0)*f1*f3*f4, (Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f3+(Z(2)^0)*f4+(
Z(2)^0)*f1*f2+(Z(2)^0)*f1*f3+(Z(2)^0)*f1*f4+(Z(2)^0)*f2*f3+(Z(2)^0)*f2*f4+(
Z(2)^0)*f3*f4+(Z(2)^0)*f1*f2*f3+(Z(2)^0)*f1*f2*f4+(Z(2)^0)*f1*f3*f4+(Z(2)^
0)*f2*f3*f4+(Z(2)^0)*f1*f2*f3*f4, (Z(2)^0)*f1+(Z(2)^0)*f4+(Z(2)^0)*f1*f2+(Z(2)^
0)*f1*f3+(Z(2)^0)*f1*f4+(Z(2)^0)*f2*f3+(Z(2)^0)*f2*f4+(Z(2)^0)*f1*f2*f3+(Z(2)^
0)*f1*f2*f4+(Z(2)^0)*f1*f3*f4+(Z(2)^0)*f1*f2*f3*f4 ]


Мы закончим демонстрацию пакета LAGUNA определением некоторых Лиевских свойств групповой алгебры KG, понятных из названия используемых в этом примере функций:

gap> L := LieAlgebra( KG );
<Lie algebra of dimension 16 over GF(2)>
gap> D := LieDerivedSubalgebra( L );
<Lie algebra of dimension 9 over GF(2)>
gap> LC := LieCentre( L );
<Lie algebra of dimension 7 over GF(2)>
gap> LieLowerNilpotencyIndex( KG );
5
gap> LieUpperNilpotencyIndex( KG );
5
gap> IsLieAbelian( L );
false
gap> IsLieSolvable( L );
true
gap> IsLieMetabelian( L );
false
gap> IsLieCentreByMetabelian( L );
true


Описание всех функций, используемых в данном примере, содержится в руководстве пользователя, которое является частью пакета, а также находится на домашней странице пакета LAGUNA по адресу http://ukrgap.exponenta.ru/laguna.htm.


Новый журнал "Алгебра и дискретная математика"

Вышел из печати первый номер журнала "Algebra and discrete mathematics". Этот журнал основан в Украине в 2002 г. и публикуется на английском языке. Тематика журнала - алгебра (общая алгебра, полугруппы, группы, кольца и модули, линейная алгебра, алгебраическая геометрия, универсальные алгебры, гомологическая алгебра и т.д.) и дискретная математика (комбинаторика, теория графов, математическая логика, теория автоматов, теория кодирования, криптография и т.д.).

Обложка с содержанием номера и первые три страницы журнала с выходными данными, составом редколлегии и требованиями к авторским материалам доступны в формате PDF по адресу http://ukrgap.exponenta.ru/news/ADM-info.pdf.

Желаем успеха его издателям и надеемся, что скоро журнал будет включен в список изданий ВАК Украины, о чем с удовольствием сообщим.



Международная конференция по математике и механике
(Томский государственный университет, г. Томск, 16-18 сентября 2003 г.)

Конференция проводится в ТГУ и посвящается 125-летию Томского государственного университета и 55-летию механико-математического факультета. В 2003 г. также исполняется 70 лет кафедре теоретической механики (зав. кафедрой проф. А.М. Бубенчиков), 65 лет кафедре общей математики (зав. кафедрой проф. С.В. Панько) и 45 лет кафедре вычислительной математики и компьютерного моделирования (зав. кафедрой проф. А.В. Старченко).

В период работы конференции будут функционировать секции:
  • алгебра и математическая логика (председатель – проф. П.А. Крылов);
  • математический анализ (председатель – член-корреспондент РАО, проф. И.А. Александров);
  • геометрия и топология (председатель – проф. Гулько С.П.);
  • теория вероятностей и математическая статистика (председатель – доц. Ю.К. Устинов);
  • вычислительная математика и компьютерное моделирование (председатель – проф. А.В. Старченко);
  • теоретическая механика и гидромеханика (председатель – проф. А.М. Бубенчиков);
  • теория фильтрации и ее приложения (председатель – проф. С.В. Панько);
  • физическая и вычислительная механика (председатель – заслуженный деятель науки РФ, проф. А.М. Гришин);
  • биомеханика (председатель – доц. С.Е. Корнелик).
Тезисы докладов и заявки на участие в конференции принимаются до 15 июня 2003 г.
Второе информационное сообщение доступно по адресу http://ukrgap.exponenta.ru/meetings/tomsk.rtf.


Вопрос: как в системе GAP задать группу порождающими элементами и определяющими соотношениями ?

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

Продемонстрируем это, на примере построения группы диэдра порядка 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 ]





С уважением,

Коновалов Александр Борисович , председатель Украинской группы пользователей GAP ,
доцент кафедры алгебры и геометрии Запорожского государственного университета










http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное