1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %A pcgs.xml GAP documentation Alexander Hulpke -->
<!-- %A Bettina Eick -->
<!-- %% -->
<!-- %% -->
<!-- %Y (C) 1998 School Math and Comp. Sci., University of St Andrews, Scotland -->
<!-- %Y Copyright (C) 2002 The GAP Group -->
<!-- %% -->
<Chapter Label="Polycyclic Groups">
<Heading>Polycyclic Groups</Heading>
A group <A>G</A> is <E>polycyclic</E> if there exists a subnormal series
<M>G = C_1 > C_2 > \ldots > C_n > C_{{n+1}} = \{ 1 \}</M>
with cyclic factors. Such a series is called <E>pc series</E> of <A>G</A>.
<P/>
Every polycyclic group is solvable and every finite solvable group
is polycyclic. However, there are infinite solvable groups which
are not polycyclic.
<P/>
In &GAP; there exists a large number of methods for polycyclic groups
which are based upon the polycyclic structure of these groups. These
methods are usually very efficient, especially for groups which are
given by a pc-presentation (see chapter <Ref Chap="Pc Groups"/>), and can
be applied to many types of groups. Hence &GAP; tries to use them
whenever possible, for example, for permutation groups and matrix
groups over finite fields that are known to be polycyclic
(the only exception is the representation as finitely presented group
for which the polycyclic methods cannot be used in general).
<P/>
At the current state of implementations the &GAP; library contains
methods to compute with finite polycyclic groups, while the &GAP;
package <Package>Polycyclic</Package> by Bettina Eick and Werner Nickel
allows also computations with infinite polycyclic groups which are given
by a pc-presentation.
<P/>
<!-- %% Most of the methods for polycyclic groups are due to Frank Celler, Bettina -->
<!-- %% Eick, Alexander Hulpke and Werner Nickel. The methods to consider a solvable -->
<!-- %% permutation group as a polycyclic group are due to Heiko Theißen. -->
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Polycyclic Generating Systems">
<Heading>Polycyclic Generating Systems</Heading>
Let <A>G</A> be a polycyclic group with a pc series as above. A
<E>polycyclic generating sequence</E> (<E>pcgs</E> for short) of <A>G</A> is a
sequence <M>P := (g_1, \ldots, g_n)</M> of elements of <A>G</A> such that
<M>C_i = \langle C_{{i+1}}, g_i \rangle</M> for <M>1 \leq i \leq n</M>.
Note that each polycyclic group has a pcgs, but except for very
small groups, a pcgs is not unique.
<P/>
For each index <M>i</M> the subsequence of elements <M>(g_i, \ldots, g_n)</M>
forms a pcgs of the subgroup <M>C_i</M>. In particular, these <E>tails</E>
generate the subgroups of the pc series and hence we say that
the pc series is <E>determined</E> by <M>P</M>.
<P/>
Let <M>r_i</M> be the index of <M>C_{{i+1}}</M> in <M>C_i</M> which is either
a finite positive number or infinity. Then <M>r_i</M> is the order of
<M>g_i C_{{i+1}}</M> and we call the resulting list of indices the
<E>relative orders</E> of the pcgs <A>P</A>.
<P/>
Moreover, with respect to a given pcgs <M>(g_1, \ldots, g_n)</M> each
element <A>g</A> of <A>G</A> can be represented in a unique
way as a product <M>g = g_1^{{e_1}} \cdot g_2^{{e_2}} \cdots g_n^{{e_n}}</M>
with exponents <M>e_i \in \{0, \ldots, r_i-1\}</M>, if <M>r_i</M> is finite,
and <M>e_i \in &ZZ;</M> otherwise.
Words of this form are called <E>normal words</E> or <E>words in normal form</E>.
Then the integer vector <M>[ e_1, \ldots, e_n ]</M> is called the
<E>exponent vector</E> of the element <M>g</M>. Furthermore, the smallest
index <M>k</M> such that <M>e_k \neq 0</M> is called the <E>depth</E> of <A>g</A> and
<M>e_k</M> is the <E>leading exponent</E> of <A>g</A>.
<P/>
For many applications we have to assume that each of the relative orders
<M>r_i</M> is either a prime or infinity. This is equivalent to saying that
there are no trivial factors in the pc series and the finite factors of the
pc series are maximal refined.
Then we obtain that <M>r_i</M> is the order of <M>g C_{{i+1}}</M> for all
elements <M>g</M> in <M>C_i \setminus C_{{i+1}}</M> and we call
<M>r_i</M> the <E>relative order</E> of the element <M>g</M>.
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Computing a Pcgs">
<Heading>Computing a Pcgs</Heading>
Suppose a group <A>G</A> is given; for example, let <A>G</A> be a permutation
or matrix group. Then we can ask &GAP; to compute a pcgs of this group.
If <A>G</A> is not polycyclic, the result will be <K>fail</K>.
<P/>
Note that these methods can only be applied if <A>G</A> is not given
as finitely presented group. For finitely presented groups one
can try to compute a pcgs via the polycyclic quotient methods,
see <Ref Sect="Quotient Methods"/>.
<P/>
Note also that a pcgs behaves like a list.
<#Include Label="Pcgs">
<#Include Label="IsPcgs">
<#Include Label="CanEasilyComputePcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Defining a Pcgs Yourself">
<Heading>Defining a Pcgs Yourself</Heading>
In a number of situations it might be useful to supply a pcgs to a group.
<P/>
Note that the elementary operations for such a pcgs might be rather
inefficient, since &GAP; has to use generic methods in this case.
It might be helpful to supply the relative orders of the self-defined
pcgs as well by <C>SetRelativeOrder</C>.
See also <Ref Prop="IsPrimeOrdersPcgs"/>.
<#Include Label="PcgsByPcSequence">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Elementary Operations for a Pcgs">
<Heading>Elementary Operations for a Pcgs</Heading>
<#Include Label="RelativeOrders:pcgs">
<#Include Label="IsFiniteOrdersPcgs">
<#Include Label="IsPrimeOrdersPcgs">
<#Include Label="PcSeries">
<#Include Label="GroupOfPcgs">
<#Include Label="OneOfPcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Elementary Operations for a Pcgs and an Element">
<Heading>Elementary Operations for a Pcgs and an Element</Heading>
<#Include Label="RelativeOrderOfPcElement">
<#Include Label="ExponentOfPcElement">
<#Include Label="ExponentsOfPcElement">
<#Include Label="DepthOfPcElement">
<#Include Label="LeadingExponentOfPcElement">
<#Include Label="PcElementByExponents">
<#Include Label="LinearCombinationPcgs">
<#Include Label="SiftedPcElement">
<#Include Label="CanonicalPcElement">
<#Include Label="ReducedPcElement">
<#Include Label="CleanedTailPcElement">
<#Include Label="HeadPcElementByNumber">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Exponents of Special Products">
<Heading>Exponents of Special Products</Heading>
There are certain products of elements whose exponents are used often within
algorithms, and which might be obtained more easily than by computing the
product first and to obtain its exponents afterwards. The operations in this
section provide a way to obtain such exponent vectors directly.
<P/>
(The circumstances under which these operations give a speedup depend very
much on the pcgs and the representation of elements that is used. So the
following operations are not guaranteed to give a speedup in every case,
however the default methods are not slower than to compute the exponents of
a product and thus these operations should <E>always</E> be used if applicable.)
<P/>
The second class are exponents of products of the generators which make up
the pcgs.
If the pcgs used is a family pcgs (see <Ref Attr="FamilyPcgs"/>) then
these exponents can be looked up and do not need to be computed.
<#Include Label="ExponentsConjugateLayer">
<#Include Label="ExponentsOfRelativePower">
<#Include Label="ExponentsOfConjugate">
<#Include Label="ExponentsOfCommutator">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Subgroups of Polycyclic Groups - Induced Pcgs">
<Heading>Subgroups of Polycyclic Groups – Induced Pcgs</Heading>
Let <A>U</A> be a subgroup of <A>G</A> and let <A>P</A> be a pcgs of <A>G</A> as above such
that <A>P</A> determines the subnormal series
<M>G = C_1 > \ldots > C_{{n+1}} = \{ 1 \}</M>.
Then the series of subgroups <M>U \cap C_i</M> is a subnormal series
of <A>U</A> with cyclic or trivial factors. Hence, if we choose an element
<M>u_{{i_j}} \in (U \cap C_{{i_j}}) \setminus (U \cap C_{{i_j+1}})</M>
whenever this factor is non-trivial, then we obtain a pcgs
<M>Q = (u_{{i_1}}, \ldots, u_{{i_m}})</M> of <M>U</M>.
We say that <M>Q</M> is an <E>induced pcgs</E> with respect to <A>P</A>.
The pcgs <A>P</A> is the <E>parent pcgs</E> to the induced pcgs <A>Q</A>.
<P/>
Note that the pcgs <M>Q</M> is induced with respect to <A>P</A> if and only
if the matrix of exponent vectors of the elements <M>u_{{i_j}}</M> with
respect to <A>P</A> is in upper triangular form. Thus <M>Q</M> is not unique in
general.
<P/>
In particular, the elements of an induced pcgs do <E>not necessarily</E> have
leading coefficient 1 relative to the inducing pcgs. The attribute
<Ref Attr="LeadCoeffsIGS"/> holds the leading coefficients in case
they have to be renormed in an algorithm.
<P/>
Each induced pcgs is a pcgs and hence allows all elementary operations
for pcgs. On the other hand each pcgs could be transformed into an
induced pcgs for the group defined by the pcgs, but note that an
arbitrary pcgs is in general not an induced pcgs for technical reasons.
<P/>
An induced pcgs is <Q>compatible</Q> with its parent,
see <Ref Attr="ParentPcgs"/>.
<P/>
In <Cite Key="SOGOS"/> a <Q>non-commutative Gauss</Q> algorithm is
described to compute an induced pcgs of a subgroup <A>U</A> from a
generating set of <A>U</A>.
For calling this in &GAP;, see <Ref Subsect="InducedPcgs"/> to
<Ref Subsect="ExtendedPcgs"/>.
<P/>
To create a subgroup generated by an induced pcgs such that the
induced pcgs gets stored automatically, use <Ref Oper="SubgroupByPcgs"/>.
<#Include Label="IsInducedPcgs">
<#Include Label="InducedPcgsByPcSequence">
<#Include Label="ParentPcgs">
<#Include Label="InducedPcgs">
<#Include Label="InducedPcgsByGenerators">
<#Include Label="InducedPcgsByPcSequenceAndGenerators">
<#Include Label="LeadCoeffsIGS">
<#Include Label="ExtendedPcgs">
<#Include Label="SubgroupByPcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Subgroups of Polycyclic Groups - Canonical Pcgs">
<Heading>Subgroups of Polycyclic Groups – Canonical Pcgs</Heading>
The induced pcgs <A>Q</A> of <A>U</A> is called <E>canonical</E> if the matrix
of exponent vectors contains normed vectors only and above each
leading entry in the matrix there are 0's only. The canonical pcgs
of <A>U</A> with respect to <A>P</A> is unique and hence such pcgs can be used
to compare subgroups.
<#Include Label="IsCanonicalPcgs">
<#Include Label="CanonicalPcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Factor Groups of Polycyclic Groups - Modulo Pcgs">
<Heading>Factor Groups of Polycyclic Groups – Modulo Pcgs</Heading>
Let <A>N</A> be a normal subgroup of <A>G</A> such that <A>G/N</A> is polycyclic
with pcgs <M>(h_1 N, \ldots, h_r N)</M>. Then we call the sequence of
preimages <M>(h_1, \ldots h_r)</M> a <E>modulo pcgs</E> of <A>G/N</A>.
<A>G</A> is called the <E>numerator</E> of the modulo pcgs and <A>N</A> is the
<E>denominator</E> of the modulo pcgs.
<P/>
Modulo pcgs are often used to facilitate efficient computations with
factor groups, since they allow computations with factor groups without
formally defining the factor group at all.
<P/>
All elementary operations of pcgs,
see Sections <Ref Sect="Elementary Operations for a Pcgs"/> and
<Ref Sect="Elementary Operations for a Pcgs and an Element"/>,
apply to modulo pcgs as well. However, it is in general not possible to
compute induced pcgs with respect to a modulo pcgs.
<P/>
Two more elementary operations for modulo pcgs are
<Ref Attr="NumeratorOfModuloPcgs"/> and
<Ref Attr="DenominatorOfModuloPcgs"/>.
<#Include Label="ModuloPcgs">
<#Include Label="IsModuloPcgs">
<#Include Label="NumeratorOfModuloPcgs">
<#Include Label="DenominatorOfModuloPcgs">
<ManSection>
<Meth Name="\mod" Arg='P, I' Label="for two pcgs"/>
<Description>
Modulo Pcgs can also be built from compatible induced pcgs.
Let <M>G</M> be a group with pcgs <A>P</A> and let <A>I</A> be
an induced pcgs of a normal subgroup <M>N</M> of <M>G</M>.
(Respectively: <A>P</A> and <A>I</A> are both induced
with respect to the <E>same</E> Pcgs.)
Then we can compute a modulo pcgs of <M>G</M> mod <M>N</M> by
<P/>
<A>P</A> <K>mod</K> <A>I</A>
<P/>
Note that in this case we obtain the advantage that the values of
<Ref Attr="NumeratorOfModuloPcgs"/> and <Ref Attr="DenominatorOfModuloPcgs"/>
are just <A>P</A> and <A>I</A>, respectively, and hence are unique.
<P/>
The resulting modulo pcgs will consist of a subset of <A>P</A> and will be
<Q>compatible</Q> with <A>P</A> (or its parent).
<P/>
<Example><![CDATA[
gap> G := Group((1,2,3,4));;
gap> P := Pcgs(G);
Pcgs([ (1,2,3,4), (1,3)(2,4) ])
gap> I := InducedPcgsByGenerators(P, [(1,3)(2,4)]);
Pcgs([ (1,3)(2,4) ])
gap> M := P mod I;
[ (1,2,3,4) ]
gap> NumeratorOfModuloPcgs(M);
Pcgs([ (1,2,3,4), (1,3)(2,4) ])
gap> DenominatorOfModuloPcgs(M);
Pcgs([ (1,3)(2,4) ])
]]></Example>
</Description>
</ManSection>
<#Include Label="CorrespondingGeneratorsByModuloPcgs">
<#Include Label="CanonicalPcgsByGeneratorsWithImages">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Factor Groups of Polycyclic Groups in their Own Representation">
<Heading>Factor Groups of Polycyclic Groups in their Own Representation</Heading>
If substantial calculations are done in a factor it might be worth still to
construct the factor group in its own representation (for example by
calling <Ref Attr="PcGroupWithPcgs"/> on a modulo pcgs.
<P/>
<#Include Label="[1]{pcgs}">
<#Include Label="ProjectedPcElement">
<#Include Label="ProjectedInducedPcgs">
<#Include Label="LiftedPcElement">
<#Include Label="LiftedInducedPcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Pcgs and Normal Series">
<Heading>Pcgs and Normal Series</Heading>
By definition, a pcgs determines a pc series of its underlying group.
However, in many applications it will be necessary that this pc series
refines a normal series with certain properties; for example, a normal
series with abelian factors.
<P/>
There are functions in &GAP; to compute a pcgs through a normal series
with elementary abelian factors, a central series or the lower p-central
series. See also Section <Ref Sect="Special Pcgs"/> for a more explicit possibility.
<#Include Label="IsPcgsElementaryAbelianSeries">
<#Include Label="PcgsElementaryAbelianSeries">
<#Include Label="IndicesEANormalSteps">
<#Include Label="EANormalSeriesByPcgs">
<#Include Label="IsPcgsCentralSeries">
<#Include Label="PcgsCentralSeries">
<#Include Label="IndicesCentralNormalSteps">
<#Include Label="CentralNormalSeriesByPcgs">
<#Include Label="IsPcgsPCentralSeriesPGroup">
<#Include Label="PcgsPCentralSeriesPGroup">
<#Include Label="IndicesPCentralNormalStepsPGroup">
<#Include Label="PCentralNormalSeriesByPcgsPGroup">
<#Include Label="IsPcgsChiefSeries">
<#Include Label="PcgsChiefSeries">
<#Include Label="IndicesChiefNormalSteps">
<#Include Label="ChiefNormalSeriesByPcgs">
<#Include Label="IndicesNormalSteps">
<#Include Label="NormalSeriesByPcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Sum and Intersection of Pcgs">
<Heading>Sum and Intersection of Pcgs</Heading>
<!-- %eclaration{SumPcgs} -->
<!-- %eclaration{IntersectionSumPcgs} -->
<!-- %eclaration{NormalIntersectionPcgs} -->
<#Include Label="SumFactorizationFunctionPcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Special Pcgs">
<Heading>Special Pcgs</Heading>
In short, a special pcgs is a pcgs which has particularly nice properties,
for example it always refines an elementary abelian series, for <M>p</M>-groups
it even refines a central series. These nice properties permit particularly
efficient algorithms.
<P/>
Let <A>G</A> be a finite polycyclic group. A <E>special pcgs</E> of <A>G</A> is a pcgs
which is closely related to a Hall system and the maximal subgroups of <A>G</A>.
These pcgs have been introduced by C. R. Leedham-Green who also gave an
algorithm to compute them. Improvements to this algorithm
<!-- %% and the &GAP; implementation -->
are due to Bettina Eick. For a more detailed account of
their definition the reader is referred to <Cite Key="Eick97"/>
<P/>
To introduce the definition of special pcgs we first need to define
the <E>LG-series</E> and <E>head complements</E> of a finite polycyclic group <A>G</A>.
Let <M>G = G_1 > G_2 > \ldots G_m > G_{{m+1}} = \{ 1 \}</M> be the lower
nilpotent series of <M>G</M>; that is, <M>G_i</M> is the smallest normal
subgroup of <M>G_{{i-1}}</M> with nilpotent factor. To obtain the LG-series
of <A>G</A> we need to refine this series.
Thus consider a factor <M>F_i := G_i / G_{{i+1}}</M>.
Since <M>F_i</M> is finite nilpotent, it is a direct
product of its Sylow subgroups <M>F_i = P_{{i,1}} \cdots P_{{i,r_i}}</M>.
For each Sylow <M>p_j</M>-subgroup <M>P_{{i,j}}</M> we can consider its
lower <M>p_j</M>-central series. To obtain a characteristic central series
with elementary abelian factors of <M>F_i</M> we loop over its Sylow subgroups.
Each time we consider <M>P_{{i,j}}</M> in this process we take the next step of
its lower <M>p_j</M>-central series into the series of <M>F_i</M>. If there
is no next step, then we just skip the consideration of <M>P_{{i,j}}</M>.
Note that the second term of the lower <M>p</M>-central series of a <M>p</M>-group
is in fact its Frattini subgroup. Thus the Frattini subgroup of <M>F_i</M>
is contained in the computed series of this group. We denote the
Frattini subgroup of <M>F_i = G_i / G_{{i+1}}</M> by <M>G_i^* / G_{{i+1}}</M>.
<P/>
The factors <M>G_i / G_i^*</M> are called the heads of <M>G</M>, while the
(possibly trivial) factors <M>G_i^* / G_{{i+1}}</M> are the tails of <M>G</M>.
A head complement of <M>G</M> is a subgroup <M>U</M> of <M>G</M> such that
<M>U / G_i^*</M>
is a complement to the head <M>G_i / G_i^*</M> in <M>G / G_i^*</M>
for some <M>i</M>.
<P/>
Now we are able to define a special pcgs of <A>G</A>. It is a pcgs of <A>G</A>
with three additional properties. First, the pc series determined
by the pcgs refines the LG-series of <A>G</A>. Second, a special pcgs
<E>exhibits</E> a Hall system of the group <A>G</A>; that is, for each set of
primes <M>\pi</M> the elements of the pcgs with relative order in <M>\pi</M>
form a pcgs of a Hall <M>\pi</M>-subgroup in a Hall system of <A>G</A>.
Third, a special pcgs exhibits a head complement for each head
of <A>G</A>.
<P/>
To record information about the LG-series with the special pcgs
we define the <E>LGWeights</E> of the special pcgs. These weights are
a list which contains a weight <M>w</M> for each elements <M>g</M> of the
special pcgs. Such a weight <M>w</M> represents the smallest subgroup of
the LG-series containing <M>g</M>.
<P/>
Since the LG-series is defined in terms of the lower nilpotent
series, Sylow subgroups of the factors and lower
<M>p</M>-central series of the Sylow subgroup, the weight <M>w</M> is a
triple. More precisely, <M>g</M> is contained in the <M>w[1]</M>th term
<M>U</M> of the lower nilpotent series of <A>G</A>, but not in the next smaller
one <M>V</M>. Then <M>w[3]</M> is a prime such that <M>g V</M> is contained in the
Sylow <M>w[3]</M>-subgroup <M>P/V</M> of <M>U/V</M>. Moreover, <M>gV</M> is contained in
the <M>w[2]</M>th term of the lower <M>p</M>-central series of <M>P/V</M>.
<P/>
There are two more attributes of a special pcgs containing
information about the LG-series: the list <E>LGLayers</E> and the
list <E>LGFirst</E>. The list of layers corresponds to the elements
of the special pcgs and denotes the layer of the LG-series in
which an element lies. The list LGFirst corresponds to the
LG-series and gives the number of the first element in the
special pcgs of the corresponding subgroup.
<#Include Label="IsSpecialPcgs">
<#Include Label="SpecialPcgs">
<#Include Label="LGWeights">
<#Include Label="LGLayers">
<#Include Label="LGFirst">
<#Include Label="LGLength">
<#Include Label="IsInducedPcgsWrtSpecialPcgs">
<#Include Label="InducedPcgsWrtSpecialPcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Action on Subfactors Defined by a Pcgs">
<Heading>Action on Subfactors Defined by a Pcgs</Heading>
When working with a polycyclic group, one often needs to compute matrix
operations of the group on a factor of the group.
For this purpose there are the functions described in
<Ref Subsect="VectorSpaceByPcgsOfElementaryAbelianGroup"/> to
<Ref Subsect="LinearActionLayer"/>.
<P/>
In certain situations, for example within the computation of conjugacy
classes of finite soluble groups as described in <Cite Key="MeckyNeubueser89"/>,
affine actions of groups are required. For this purpose we introduce
the functions <Ref Oper="AffineAction"/> and
<Ref Func="AffineActionLayer"/>.
<#Include Label="VectorSpaceByPcgsOfElementaryAbelianGroup">
<#Include Label="LinearAction">
<#Include Label="LinearActionLayer">
<#Include Label="AffineAction">
<#Include Label="AffineActionLayer">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Orbit Stabilizer Methods for Polycyclic Groups">
<Heading>Orbit Stabilizer Methods for Polycyclic Groups</Heading>
If a pcgs <A>pcgs</A> is known for a group <A>G</A>, then orbits and stabilizers
can be computed by a special method which is particularly efficient.
Note that within this function only the elements in <A>pcgs</A> and the
relative orders of <A>pcgs</A> are needed. Hence this function works effectively
even if the elementary operations for <A>pcgs</A> are slow.
<#Include Label="StabilizerPcgs">
<#Include Label="Pcgs_OrbitStabilizer:pcgs">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Operations which have Special Methods for Groups with Pcgs">
<Heading>Operations which have Special Methods for Groups with Pcgs</Heading>
<Index Key="IsNilpotent" Subkey="for groups with pcgs"><C>IsNilpotent</C></Index>
<Index Key="IsSupersolvable" Subkey="for groups with pcgs"><C>IsSupersolvable</C></Index>
<Index Key="Size" Subkey="for groups with pcgs"><C>Size</C></Index>
<Index Key="CompositionSeries" Subkey="for groups with pcgs"><C>CompositionSeries</C></Index>
<Index Key="ConjugacyClasses" Subkey="for groups with pcgs"><C>ConjugacyClasses</C></Index>
<Index Key="Centralizer" Subkey="for groups with pcgs"><C>Centralizer</C></Index>
<Index Key="FrattiniSubgroup" Subkey="for groups with pcgs"><C>FrattiniSubgroup</C></Index>
<Index Key="PrefrattiniSubgroup" Subkey="for groups with pcgs"><C>PrefrattiniSubgroup</C></Index>
<Index Key="MaximalSubgroups" Subkey="for groups with pcgs"><C>MaximalSubgroups</C></Index>
<Index Key="HallSystem" Subkey="for groups with pcgs"><C>HallSystem</C></Index>
<Index Key="MinimalGeneratingSet" Subkey="for groups with pcgs"><C>MinimalGeneratingSet</C></Index>
<Index Key="Centre" Subkey="for groups with pcgs"><C>Centre</C></Index>
<Index Key="Intersection" Subkey="for groups with pcgs"><C>Intersection</C></Index>
<Index Key="AutomorphismGroup" Subkey="for groups with pcgs"><C>AutomorphismGroup</C></Index>
<Index Key="IrreducibleModules" Subkey="for groups with pcgs"><C>IrreducibleModules</C></Index>
For the following operations there are special methods for groups with
pcgs installed:
<P/>
<Ref Prop="IsNilpotentGroup"/>,
<Ref Prop="IsSupersolvableGroup"/>,
<Ref Attr="Size"/>,
<Ref Attr="CompositionSeries"/>,
<Ref Attr="ConjugacyClasses" Label="attribute"/>,
<Ref Oper="Centralizer" Label="for a magma and an element"/>,
<Ref Attr="FrattiniSubgroup"/>,
<Ref Attr="PrefrattiniSubgroup"/>,
<Ref Attr="MaximalSubgroups"/> and related operations,
<Ref Attr="HallSystem"/> and related operations,
<Ref Attr="MinimalGeneratingSet"/>,
<Ref Attr="Centre"/>,
<Ref Func="Intersection" Label="for various collections"/>,
<Ref Attr="AutomorphismGroup"/>,
<Ref Oper="IrreducibleModules"/>.
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Conjugacy Classes in Solvable Groups">
<Heading>Conjugacy Classes in Solvable Groups</Heading>
There are a variety of algorithms to compute conjugacy classes and
centralizers in solvable groups via epimorphic images
(<Cite Key="FelschNeubueser79"/>, <Cite Key="MeckyNeubueser89"/>,
<Cite Key="Theissen93"/>).
Usually these are only invoked as methods, but it is possible to access the
algorithm directly.
<P/>
<#Include Label="ClassesSolvableGroup">
<#Include Label="CentralizerSizeLimitConsiderFunction">
</Section>
</Chapter>
|