Лекція 4 ОПЕРАЦІЇ НАД ГРУПАМИ І ЇХ ЕЛЕМЕНТАМИ

4.1  Завдання групи підстановок

Даний розділ присвячений операціям над групами і їх елементами. Визначення і необхідні теоретичні відомості можуть бути знайдені в [2, 3, 5, 6, 8]. Приведені нижче приклади використовують групи підстановок, але більшість використовуваних в них функцій (в т.ч. Group, Size, Sylowsubgroup ) застосовуються і до інших використовуваних в GAP видам груп, для кожного з яких обчислення проводяться по спеціальному алгоритму.

Задамо групу підстановок, яка породжується (записаними у вигляді твору незалежних циклів) підстановками (1 2) і (1 2 3 4 5 6 7 8). Ця група є не що інше, як симетрична група S8:

gap> s8:= Group( (1,2), (1,2,3,4,5,6,7,8) ); Group( (1,2), (1,2,3,4,5,6,7,8) )

4.2  Завдання підгрупи групи підстановок

Група S8 містить знакозмінну групу A8, яка може бути задана як підгрупа, що складається з парних підстановок, або як її коммутант:

gap> a8 := Derivedsubgroup( s8 );Group([ (1,2,3), (2,3,4), (2,4)(3,5), (2,6,4), (2,4)(5,7), (2,8,6,4)(3,5) ])

Якщо звернення до об'єкту відбувається часто, зручно привласнити йому ім'я. В цьому випадку при наступних зверненнях до об'єкту замість його уявлення виводитиметься на друк його ім'я:

gap> Setname(a8,"a8");gap> a8;A8

Не дивлячись на відсутність зв'язку між ім'ям і ідентифікатором, їх бажано вибирати погоджено.

 

 

4.3  Прості властивості групи. Силовськие підгрупи.

Вивчимо групу a8. Вона є об'єктом, список відомих властивостей і атрибутів якого можна отримати таким чином:

gap> Knownpropertiesofobject(a8);[ "Isfinite", "Caneasilycompareelements", "Caneasilysortelements",  "Isduplicatefree", "Isgeneratorsofmagmawithinverses", "Isassociative",  "Isfinitelygeneratedgroup", "Issubsetlocallyfinitegroup",  "Knowshowtodecompose", "Ischaintypegroup", "Isstabchainviachainsubgroup" ]gap> Knownattributesofobject(a8);[ "Name", "Oneimmutable", "Largestmovedpoint", "Parentattr",  "Generatorsofmagmawithinverses", "Multiplicativeneutralelement",  "Stabchainmutable", "Stabchainoptions" ]

Цей список може розширюватися в процесі роботи з об'єктом, оскільки багато функцій зберігають інформацію про нього  в нових атрибутах і властивостях, що дозволяє ефективно уникати повторних обчислень.

Наприклад, знайдемо порядок групи. Видно, що швидкість його повторного визначення істотно нижча, оскільки замість його обчислення просто виводиться на друк його вже збережене значення.

gap> Size( a8 );20160gap> time;63gap> Size( a8 );20160gap> time;4

Тепер перевіримо, чи є група абельовой і досконалою:

gap> Isabelian( a8 ); Isperfect( a8 );falsetrue

Порівняємо тепер список відомих властивостей і атрибутів з первинним і побачимо, що додалися до них нові:

gap> Knownpropertiesofobject(a8);[ "Isempty", "Istrivial", "Isnontrivial", "Isfinite",  "Caneasilycompareelements", "Caneasilysortelements", "Isduplicatefree",  "Isgeneratorsofmagmawithinverses", "Isassociative", "Iscommutative",  "Isfinitelygeneratedgroup", "Issubsetlocallyfinitegroup",  "Knowshowtodecompose", "Isperfectgroup", "Ischaintypegroup",  "Isstabchainviachainsubgroup" ]gap> Knownattributesofobject(a8);[ "Name", "Size", "Oneimmutable", "Largestmovedpoint", "Parentattr",  "Generatorsofmagmawithinverses", "Trivialsubmagmawithone",  "Multiplicativeneutralelement", "Derivedsubgroup", "Stabchainmutable",  "Stabchainoptions" ]

Тепер отримаємо список простих дільників порядку групи:

         gap> Set( Factors( Size( a8 )));           [ 2, 3, 5, 7 ]

Для кожного з простих дільників p обчислимо силовськую p-подгруппу і надрукуємо її порядок:

gap> for p in last do> Print(p " - ", Size(Sylowsubgroup(a8,p)),"\n");> od;2 - 643 - 95 - 57 - 7

Досліджуємо силовськую 2-подгруппу. Позначимо її syl2:

gap> syl2:=sylowsubgroup(a8,2);Group([ (1,8)(5,7), (2,6)(5,7), (3,4)(5,7), (3,5)(4,7), (1,2)(6,8),  (1,3)(2,5)(4,8)(6,7) ])

Тепер обчислимо її нормалізатор в a8:

gap> Normalizer( a8, syl2 );Group([ (1,8)(3,4), (2,6)(3,4), (3,4)(5,7), (3,7)(4,5), (1,6)(2,8),  (1,7)(2,4)(3,6)(5,8) ])

Перевіримо, що він збігається з нею самою:

          gap> last = syl2;           true

Обчислимо центр підгрупи  syl2:

gap> Centre(syl2);Group([ (1,8)(2,6)(3,4)(5,7) ])

Знайдемо централізатор cent останньої підгрупи в a8, тобто підгрупу елементів а8, перестановочних з кожним елементом центру групи syl2:

gap> cent:= Centralizer( a8, last );Group([ (3,4)(5,7), (3,5)(4,7), (2,3)(4,6), (1,2)(6,8) ])

Знайдемо його порядок:

         gap> Size( cent );          192

Обчислимо ряд коммутантов cent:

gap> Derivedseries(cent);[ Group([ (3,5)(4,7), (2,5,3)(4,6,7), (1,3)(2,5)(4,8)(6,7),      (1,2)(3,5)(4,7)(6,8), (3,4)(5,7), (2,6)(3,4), (1,8)(2,6)(3,4)(5,7) ]),  Group([ (2,5,3)(4,6,7), (1,3)(2,5)(4,8)(6,7), (1,2)(3,5)(4,7)(6,8),      (3,4)(5,7), (2,6)(3,4), (1,8)(2,6)(3,4)(5,7) ]),  Group([ (1,3)(2,5)(4,8)(6,7), (1,2)(3,5)(4,7)(6,8), (3,4)(5,7), (2,6)(3,4),      (1,8)(2,6)(3,4)(5,7) ]), Group([ (1,8)(2,6)(3,4)(5,7) ]), Group(())]

Останній елемент отриманого списку - тривіальна підгрупа, тому cent - вирішувана група.

Порядки підгруп, що входять в ряд коммутантов (похідний ряд) зручно отримати таким чином:

         gap> List( last, Size );          [ 192, 96, 32, 2, 1 ]

Обчислимо тепер нижній центральний ряд групи cent:

gap> Lowercentralseries(cent);[ Group([ (3,4)(5,7), (3,5)(4,7), (2,3)(4,6), (1,2)(6,8) ]),  Group([ (2,5,3)(4,6,7), (1,3)(2,5)(4,8)(6,7), (1,2)(3,5)(4,7)(6,8),      (3,4)(5,7), (2,6)(3,4), (1,8)(2,6)(3,4)(5,7) ])]

4.4  Інші види підгруп

Тепер покажемо, як знайти стабілізатор деякого елементу множини, на якій діє група підстановок. Як видно з наступного прикладу, стабілізатором одиниці є підгрупа близько 2520 і індексу 8, породжена п'ятьма підстановками:

gap> stab:= Stabilizer( a8, 1 );Group([ (2,4,3), (3,5,4), (3,4)(5,6), (2,7,5,4,3), (2,8,6,5,4) ])gap> Size(stab);2520gap> Index(a8,stab);8

    За допомогою функції Random отримаємо випадковий елемент з a8:

          gap> x:=random( a8 );           (1,5,8,2,4)(3,6,7)

Нові підгрупи можуть бути тепер отримані шляхом пошуку його централізатора, а потім комбінацій сполучення і перетину вже відомих підгруп. 

gap> x:=random(a8);(1,5,8,2,4)(3,6,7)gap> cent:=centralizer(a8,x);Group([ (3,6,7), (1,2,5,4,8) ])gap> Size(cent);15gap> conj:= Conjugatesubgroup( cent (2,3,4) );Group([ (4,6,7), (1,3,5,2,8) ])gap> inter:= Intersection( cent, conj );Group(())

У наступному прикладі ми обчислимо підгрупу групи a8, потім її нормалізатор і у результаті визначимо структуру факторгруппи. Спочатку створимо елементарну абельову підгрупу близько 8:

gap> elab := Group( (1,2)(3,4)(5,6)(7,8), (1,3)(2,4)(5,7)(6,8),>                   (1,5)(2,6)(3,7)(4,8) );;gap> Size( elab );8gap> Iselementaryabelian( elab );true

Тепер привласнимо їй ім'я і обчислимо її нормалізатор:

gap> Setname( elab, "2^3" ); elab;2^3gap> norm := Normalizer( a8, elab );; Size( norm );1344

 

 

4.5  Факторгруппи

Тепер ми маємо підгрупу norm близько 1344 і її підгрупу elab, і бажаний побудувати факторгруппу. Оскільки ми також жедаєм знайти прообрази елементів факторгруппи в norm, нам також знадобиться природний гомоморфізм з norm у факторгруппу з ядром elab.

gap> hom := Naturalhomomorphismbynormalsubgroup( norm, elab );<action epimorphism>gap> f := Image( hom );Group([ (), (), (), (4,5)(6,7), (4,6)(5,7), (2,3)(6,7), (2,4)(3,5),   (1,2)(5,6) ])gap> Size( f );168

Отримана факторгруппа f також є групою підстановок. Проте множина, на якій вона діє, не має нічого спільного з множиною крапок, на якому діє norm (це просто збіг, що обидві множини є підмножинами безлічі натуральних чисел). Тепер ми можемо знайти образи і прообрази щодо природного гомоморфізму. Безліч прообразів елементу є суміжним класом по підгрупі elab. Ми використовуємо функцію Preimages, оскільки hom не є взаємно однозначним відображенням.

gap> ker:= Kernel( hom );2^3gap> x := (1,8,3,5,7,6,2);; Image( hom, x );(1,7,5,6,2,3,4)gap> coset := Preimages( hom, last );Rightcoset(2^3(2,8,6,7,3,4,5))

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

gap> rep:= Representative( coset );(2,8,6,7,3,4,5)gap> x * rep^-1 in ker;true

Факторгруппа f є простою групою, тобто вона не має нетривіальних нормальних підгруп:

gap> Issimple( f );true

Група norm діє на 8 елементах своєї нормальної підгрупи elab за допомогою сполучення, що приводить до представлення групи f в S8, що залишає нерухомою тільки крапку 1. Образ цього уявлення може бути обчислений за допомогою функції Action; більш того, він навіть содежітся в групі norm, і ми можемо показати, що norm насправді є расщепімим розширенням елементарної абельовой групи elab за допомогою групи f.

gap> op := Action( norm, elab );Group([ (), (), (), (5,6)(7,8), (5,7)(6,8), (3,4)(7,8), (3,5)(4,6),   (2,3)(6,7) ])gap> Issubgroup( a8, op ); Issubgroup( norm, op );truetruegap> Istrivial( Intersection( elab, op ));true

Примітка. Не можна використовувати знак "<" замість Issubgroup. Так, не приводить до помилки команда:

         gap> elab < a8;          false

 Оператор же рівності "=" фактично перевіряє рівність груп.  4.6  Класи зв'язаних елементів

Іншим джерелом інформації про групу a8 буде її розбиття на класи зв'язаних елементів. Отримаємо список класів зв'язаності:

gap> ccl:=conjugacyclasses(a8);[ ()^G, (1,2)(3,4)^G, (1,2)(3,4)(5,6)(7,8)^G, (1,2,3)^G, (1,2,3)(4,5)(6,7)^G,  (1,2,3)(4,5,6)^G, (1,2,3,4)(5,6)^G, (1,2,3,4)(5,6,7,8)^G, (1,2,3,4,5)^G,  (1,2,3,4,5)(6,7,8)^G, (1,2,3,4,5)(6,8,7)^G, (1,2,3,4,5,6)(7,8)^G,  (1,2,3,4,5,6,7)^G, (1,2,3,4,5,6,8)^G ]gap> Length(last);14

Тепер визначимо порядки представників класів зв'язаності, узявши в кожному класі по одному представникові:

gap> reps:= List( ccl, Representative );[ (), (1,2)(3,4), (1,2)(3,4)(5,6)(7,8), (1,2,3), (1,2,3)(4,5)(6,7),  (1,2,3)(4,5,6), (1,2,3,4)(5,6), (1,2,3,4)(5,6,7,8), (1,2,3,4,5),  (1,2,3,4,5)(6,7,8), (1,2,3,4,5)(6,8,7), (1,2,3,4,5,6)(7,8), (1,2,3,4,5,6,7),  (1,2,3,4,5,6,8) ]gap> List( reps, r -> Order( r ));[ 1, 2, 2, 3, 6, 3, 4, 4, 5, 15, 15, 6, 7, 7 ]

Визначимо, скільки елементів міститься в кожному класі:

gap> List(ccl,size);[ 1, 210, 105, 112, 1680, 1120, 2520, 1260, 1344, 1344, 1344, 3360, 2880,  2880 ]

Примітка: слід розрізняти функції Order (порядок елементу), Size (порядок групи, класу зв'язаності і тому подібне) і Length (довжина списку).

Побудувавши класи зв'язаних елементів, ми можемо розглядати їх функції, тобто відображення, що набувають однакових значень на всьому класі зв'язаних елементів. Прикладом може бути число нерухомих крапок:

gap> nrfixedpoints:= function( perm, support )> return Number( [1 .. support], x -> x^perm = x);> end;function( perm, support )... end

Обчислимо його для групи a8:

gap> permchar1:= List(reps, x->nrfixedpoints(x,8));[ 8, 4, 0, 5, 1, 2, 2, 0, 3, 0, 0, 0, 1, 1 ]

 

 [Попередній розділ <file:///d:\ Комп'ютерна%20алгебра\metgap43\3-data.htm> ][Зміст <file:///d:\ Комп'ютерна%20алгебра\metgap43\metgap43.htm> ][Наступний розділ <file:///d:\ Комп'ютерна%20алгебра\metgap43\refs.htm> ]