diff --git a/.gitignore b/.gitignore index 5650812..4cc16e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,21 +1,18 @@ -/htm/ - -/doc/manual.aux -/doc/manual.bbl -/doc/manual.blg -/doc/manual.dvi -/doc/manual.example-*.tst -/doc/manual.idx -/doc/manual.ilg -/doc/manual.ind +/doc/*.css +/doc/*.js +/doc/_*.xml +/doc/_main.* +/doc/chap*.html +/doc/chap*.txt +/doc/chooser.html /doc/manual.lab -/doc/manual.log /doc/manual.pdf /doc/manual.six -/doc/manual.toc -/doc/tthin -/doc/tthmacros.tex -/doc/tthout +/doc/title.xml + +# Output of the old plain-TeX manual; kept ignored until the leftover +# directory is removed for good. +/htm/ /gh-pages/ /tmp/ diff --git a/PackageInfo.g b/PackageInfo.g index e2cbeaa..c6c8676 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -72,8 +72,8 @@ formations of finite solvable groups.", PackageDoc := rec( BookName := "FORMAT", - ArchiveURLSubset := ["doc", "htm"], - HTMLStart := "htm/chapters.htm", + ArchiveURLSubset := ["doc"], + HTMLStart := "doc/chap0_mj.html", PDFFile := "doc/manual.pdf", SixFile := "doc/manual.six", LongTitle := "Formations of Finite Soluble Groups", diff --git a/README.md b/README.md index d4cb9b3..4eccb3d 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ the GAP `pkg` directory, start GAP and use the command ## Examples -The subdirectory `grp' contains various examples of pc groups. They +The subdirectory `grp` contains various examples of pc groups. They can be used as examples for applications of the package. diff --git a/doc/cover.tex b/doc/cover.tex deleted file mode 100644 index 6cd1d88..0000000 --- a/doc/cover.tex +++ /dev/null @@ -1,60 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W cover.tex FORMAT documentation B. Eick and C.R.B. Wright -%% -%% 10-31-11 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\X{{\cal{X}}} -\Chapter{Covering Subgroups} - -%\index{Covering Subgroups} - -Let $\X$ be a collection of groups closed under taking homomorphic images. -An *$\X$-covering subgroup* of a group $G$ is a subgroup $E$ satisfying - -%display{tex} -(C) \qquad $E \in \X$, and $EV = U$ whenever $E \le U \le G$ with $U/V \in -\X$. -%display{html} -%(C) E is in X , and EV = U whenever E is contained in U is contained in G with U/V in X. -%enddisplay - -It follows from the definition that an $\X$-covering subgroup $E$ of $G$ is -also $\X$-covering in every subgroup $U$ of $G$ that contains $E$, and an -easy argument shows that $E$ is an *$\X$-projector* of every such $U$, -i.e., $E$ satisfies - -(P) \qquad $EK/K$ is an $\X$-maximal subgroup of $U/K$ whenever $K$ is -normal in $U$. - -Gasch{\accent127u}tz showed that if $\F$ is a locally defined formation, -then every finite solvable group has an $\F$-covering subgroup. Indeed, -locally defined formations are the only formations with this property. For -such formations the $\F$-projectors and $\F$-covering subgroups of a -solvable group coincide and form a single conjugacy class of subgroups. -(See \cite{DH} for details.) - -\> CoveringSubgroup1( , ) O -\> CoveringSubgroup2( , ) O -\> CoveringSubgroupWrtFormation( , ) O - -If is a locally defined integrated formation in {\GAP} and if is -a finite solvable group, then the command `CoveringSubgroup1( , )' -returns an -covering subgroup of . -The function `CoveringSubgroup2' uses a different algorithm to compute -$\F$-covering subgroups. The user may choose either function. Experiments with large groups suggest that `CoveringSubgroup1' is somewhat faster. -`CoveringSubgroupWrtFormation' checks first to see if either of these -two functions has already computed an -covering subgroup of and, if -not, it calls `FCoveringGroup1' to compute one. - -\medskip -Nilpotent-covering subgroups are also called *Carter subgroups*. - -\> CarterSubgroup( ) A - -The command `CarterSubgroup( )' is equivalent to -`CoveringSubgroupWrtFormation( , Formation( "Nilpotent" ) )'. - -\medskip -All of these functions call upon $\F$-normalizer algorithms as subroutines. diff --git a/doc/cover.xml b/doc/cover.xml new file mode 100644 index 0000000..091f504 --- /dev/null +++ b/doc/cover.xml @@ -0,0 +1,53 @@ + + +Covering Subgroups +Let \mathcal{X} be a collection of groups closed under taking homomorphic images. +An \mathcal{X}-covering subgroup of a group G is a subgroup E satisfying +

+(C) E \in \mathcal{X}, and EV = U whenever E \le U \le G with U/V \in +\mathcal{X}. +

+It follows from the definition that an \mathcal{X}-covering subgroup E of G is +also \mathcal{X}-covering in every subgroup U of G that contains E, and an +easy argument shows that E is an \mathcal{X}-projector of every such U, +i.e., E satisfies +

+(P) EK/K is an \mathcal{X}-maximal subgroup of U/K whenever K is +normal in U. +

+Gaschütz showed that if \mathcal{F} is a locally defined formation, +then every finite solvable group has an \mathcal{F}-covering subgroup. Indeed, +locally defined formations are the only formations with this property. For +such formations the \mathcal{F}-projectors and \mathcal{F}-covering subgroups of a +solvable group coincide and form a single conjugacy class of subgroups. +(See for details.) +

+Covering Subgroups + + + + + +If F is a locally defined integrated formation in ⪆ and if G is +a finite solvable group, then the command CoveringSubgroup1( G, F ) +returns an F-covering subgroup of G. +The function CoveringSubgroup2 uses a different algorithm to compute +\mathcal{F}-covering subgroups. The user may choose either function. Experiments with large groups suggest that CoveringSubgroup1 is somewhat faster. +CoveringSubgroupWrtFormation checks first to see if either of these +two functions has already computed an F-covering subgroup of G and, if +not, it calls CoveringSubgroup1 to compute one. +

+Nilpotent-covering subgroups are also called Carter subgroups. + + + + + +The command CarterSubgroup( G ) is equivalent to +CoveringSubgroupWrtFormation( G, Formation( "Nilpotent" ) ). +

+All of these functions call upon \mathcal{F}-normalizer algorithms as subroutines. + + +

+
diff --git a/doc/examples.tex b/doc/examples.xml similarity index 60% rename from doc/examples.tex rename to doc/examples.xml index c07fbdb..cc96773 100644 --- a/doc/examples.tex +++ b/doc/examples.xml @@ -1,70 +1,59 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W examples.tex FORMAT documentation B. Eick and C.R.B. Wright -%% -%% 10-31-11 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\Chapter{Formation Examples} - -%\index{Formation Examples} - - -The following is a {\GAP} session that illustrates the various functions -in the package. We have chosen to work with the symmetric group $S_4$ -and the special linear group $SL(2,3)$ as examples, because it is easy + + +Formation Examples +The following is a ⪆ session that illustrates the various functions +in the package. We have chosen to work with the symmetric group S_4 +and the special linear group SL(2,3) as examples, because it is easy to print and read the results of computations for these groups, and the answers can be checked by inspection. However, both -$S_4$ and $SL(2,3)$ are extremely small examples for the algorithms in -\FORMAT. In -\cite{EW} we describe effective application of the algorithms to groups +S_4 and SL(2,3) are extremely small examples for the algorithms in +&FORMAT;. In + we describe effective application of the algorithms to groups of composition length as much as 61, for which the computations take -a few seconds to complete. The file `grp' contains some of these groups and other groups readable as {\GAP} input. - -\beginexample +a few seconds to complete. The file grp contains some of these groups and other groups readable as ⪆ input. + LoadPackage("format");; -\endexample +]]> A primitive banner appears. - -First we define $S_4$ as a permutation group and compute some +

+First we define S_4 as a permutation group and compute some subgroups of it. -\beginexample + G := SymmetricGroup(4); Sym( [ 1 .. 4 ] ) gap> SystemNormalizer(G); CarterSubgroup(G); Group([ (3,4) ]) Group([ (3,4), (1,3)(2,4), (1,2)(3,4) ]) -\endexample +]]> Now we take the formation of supersolvable groups from the examples and look at it. -\beginexample + sup := Formation("Supersolvable"); formation of Supersolvable groups gap> KnownAttributesOfObject(sup); KnownPropertiesOfObject(sup); [ "NameOfFormation", "ScreenOfFormation" ] [ "IsIntegrated" ] -\endexample - -We can look at the screen for `sup'. -\beginexample +]]> +We can look at the screen for sup. + ScreenOfFormation(sup); gap> ScreenOfFormation(sup)(G,2); ScreenOfFormation(sup)(G,3); Group([ (3,4), (2,4,3), (1,4)(2,3), (1,3)(2,4) ]) Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]) -\endexample -We get the residuals for `G' of the formations of abelian groups of exponent 1 ($= 2-1$) and of exponent 2 (=$3-1$). - -Notice that `sup' does not yet have a residual function. - Let's compute some subgroups of `G' corresponding to `sup'. -\beginexample +]]> +We get the residuals for G of the formations of abelian groups of exponent 1 (= 2-1) and of exponent 2 (=3-1). +

+Notice that sup does not yet have a residual function. + Let's compute some subgroups of G corresponding to sup. + ResidualWrtFormation(G, sup); -Group([ (1,2)(3,4), (1,4)(2,3) ]) +Group([ (1,4)(2,3), (1,2)(3,4) ]) gap> KnownAttributesOfObject(sup); [ "NameOfFormation", "ScreenOfFormation", "ResidualFunctionOfFormation" ] -\endexample - The residual function for `sup' was required and created. -\beginexample +]]> +The residual function for sup was required and created. + FNormalizerWrtFormation(G, sup); Group([ (3,4), (2,4,3) ]) gap> CoveringSubgroupWrtFormation(G, sup); @@ -73,19 +62,19 @@ [ "Size", "OneImmutable", "SmallestMovedPoint", "NrMovedPoints", "MovedPoints", "GeneratorsOfMagmaWithInverses", "TrivialSubmagmaWithOne", "MultiplicativeNeutralElement", "DerivedSubgroup", "IsomorphismPcGroup", - "IsomorphismSpecialPcGroup", "PcgsElementaryAbelianSeries", "Pcgs", - "GeneralizedPcgs", "StabChainOptions", "ComputedResidualWrtFormations", + "IsomorphismSpecialPcGroup", "PcgsElementaryAbelianSeries", "HomePcgs", + "Pcgs", "StabChainOptions", "ComputedResidualWrtFormations", "ComputedAbelianExponentResiduals", "ComputedFNormalizerWrtFormations", "ComputedCoveringSubgroup1s", "ComputedCoveringSubgroup2s", "SystemNormalizer", "CarterSubgroup" ] -\endexample - The `AbelianExponentResidual's were computed in connection with the -local definition of `sup'. (`AbelianExponentResidual(G, n)' returns -the smallest normal subgroup of `G' whose factor group is abelian of -exponent dividing `n-1'.) Here are some of the other records. -\beginexample +]]> +The AbelianExponentResiduals were computed in connection with the +local definition of sup. (AbelianExponentResidual(G, n) returns +the smallest normal subgroup of G whose factor group is abelian of +exponent dividing n-1.) Here are some of the other records. + ComputedResidualWrtFormations(G); -[ formation of Supersolvable groups, Group([ (1,2)(3,4), (1,4)(2,3) ]) ] +[ formation of Supersolvable groups, Group([ (1,4)(2,3), (1,2)(3,4) ]) ] gap> ComputedFNormalizerWrtFormations(G); [ formation of Nilpotent groups, Group([ (3,4) ]), formation of Supersolvable groups, Group([ (3,4), (2,4,3) ]) ] @@ -94,40 +83,39 @@ gap> ComputedCoveringSubgroup1s(G); [ formation of Nilpotent groups, Group([ (3,4), (1,3)(2,4), (1,2)(3,4) ]), formation of Supersolvable groups, Group([ (3,4), (2,4,3) ]) ] -\endexample -The call by `CoveringSubgroupWrtFormation' was to `CoveringSubgroup1', not -`CoveringSubgroup2'. - +]]> +The call by CoveringSubgroupWrtFormation was to CoveringSubgroup1, not +CoveringSubgroup2. +

We could also have started with a pc group or a nice enough matrix group. -\beginexample + s4 := SymmetricGroup(IsPcGroup, 4); -\endexample -This is $S_4$ again. The answers just look different now. -\beginexample +]]> +This is S_4 again. The answers just look different now. + SystemNormalizer(s4); CarterSubgroup(s4); Group([ f1 ]) Group([ f1, f4, f3*f4 ]) -\endexample -Similarly, we have $SL(2,3)$ and an isomorphic pc group. -\beginexample +]]> +Similarly, we have SL(2,3) and an isomorphic pc group. + sl := SpecialLinearGroup(2,3); SL(2,3) gap> h := PcGroupWithPcgs(Pcgs(sl)); -\endexample +]]> We get the following subgroups. -\beginexample + CarterSubgroup(sl); Size(last); - + 6 gap> SystemNormalizer(h); CarterSubgroup(h); Group([ f1, f4 ]) Group([ f1, f4 ]) -\endexample - +]]> Now let's make new formations from old. -\beginexample + ab := Formation("Abelian"); formation of Abelian groups gap> KnownPropertiesOfObject(ab); KnownAttributesOfObject(ab); @@ -138,41 +126,41 @@ gap> KnownPropertiesOfObject(nil2); KnownAttributesOfObject(nil2); [ "IsIntegrated" ] [ "NameOfFormation", "ScreenOfFormation", "ResidualFunctionOfFormation" ] -\endexample +]]> Compute the product and check some attributes. -\beginexample + form := ProductOfFormations(ab, nil2); formation of (AbelianBy2Nilpotent) groups gap> KnownAttributesOfObject(form); [ "NameOfFormation", "ResidualFunctionOfFormation" ] -\endexample -Now the product in the other order, which *is* locally defined. -\beginexample +]]> +Now the product in the other order, which is locally defined. + form2 := ProductOfFormations(nil2, ab); formation of (2NilpotentByAbelian) groups gap> KnownAttributesOfObject(form2); [ "NameOfFormation", "ScreenOfFormation", "ResidualFunctionOfFormation" ] -\endexample -We check the results on `G', which is still $S_4$. -\beginexample +]]> +We check the results on G, which is still S_4. + ResidualWrtFormation(G, form); ResidualWrtFormation(G, form2); Group(()) Group([ (1,2)(3,4), (1,3)(2,4) ]) gap> KnownPropertiesOfObject(form2); [ ] -\endexample -Although `form2' is not integrated, we can make an integrated formation -that differs from `form2' only in its local definition, i.e., whose -residual subgroups are the same as those for `form2'. -\beginexample +]]> +Although form2 is not integrated, we can make an integrated formation +that differs from form2 only in its local definition, i.e., whose +residual subgroups are the same as those for form2. + Integrated(form2); formation of (2NilpotentByAbelian)Int groups -\endexample -`FNormalizerWrtFormation' and -`CoveringSubgroupWrtFormation' both require integrated formations, so they -silently replace `form2' by this last formation without, however, -changing `form2'. -\beginexample +]]> +FNormalizerWrtFormation and +CoveringSubgroupWrtFormation both require integrated formations, so they +silently replace form2 by this last formation without, however, +changing form2. + FNormalizerWrtFormation(G, form2); CoveringSubgroupWrtFormation(G, form2); Group([ (3,4), (2,4,3) ]) Group([ (3,4), (2,4,3) ]) @@ -183,17 +171,16 @@ formation of Nilpotent groups, Group([ (3,4), (1,3)(2,4), (1,2)(3,4) ]), formation of Supersolvable groups, Group([ (3,4), (2,4,3) ]) ] gap> ComputedResidualWrtFormations(G); -[ formation of (2NilpotentByAbelian) groups, - Group([ (1,4)(2,3), (1,2)(3,4) ]), - formation of (AbelianBy2Nilpotent) groups, Group(()), +[ formation of (2NilpotentByAbelian) groups, Group([ (1,2)(3,4), (1,3)(2,4) ]) + , formation of (AbelianBy2Nilpotent) groups, Group(()), formation of 2Nilpotent groups, Group([ (1,2)(3,4), (1,3)(2,4) ]), - formation of Abelian groups, Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]), - formation of Supersolvable groups, Group([ (1,2)(3,4), (1,4)(2,3) ]) ] -\endexample + formation of Abelian groups, Alt( [ 1 .. 4 ] ), + formation of Supersolvable groups, Group([ (1,4)(2,3), (1,2)(3,4) ]) ] +]]> Lots of work has been going on behind the scenes. - +

Before we compute an intersection, we construct yet another formation. -\beginexample + pig := Formation("PiGroups", [2,5]); formation of (2,5)-Group groups with support [ 2, 5 ] gap> form := Intersection(pig, nil2); @@ -201,31 +188,30 @@ gap> KnownAttributesOfObject(form); [ "NameOfFormation", "ScreenOfFormation", "SupportOfFormation", "ResidualFunctionOfFormation" ] -\endexample - Let's cut down the support of `nil2' to $\{2,5\}$. -\beginexample +]]> +Let's cut down the support of nil2 to \{2,5\}. + form3 := ChangedSupport(nil2, [2,5]); formation of Changed2Nilpotent[ 2, 5 ] groups gap> SupportOfFormation(form3); [ 2, 5 ] gap> form = form3; false -\endexample -Although the formations defined by `form' and `form3' are abstractly -identical, {\GAP} has no way to know this fact, and so distinguishes +]]> +Although the formations defined by form and form3 are abstractly +identical, ⪆ has no way to know this fact, and so distinguishes them. - +

We can mix the various operations, too. -\beginexample + ProductOfFormations(Intersection(pig, nil2), sup); formation of (((2,5)-GroupAnd2Nilpotent)BySupersolvable) groups gap> Intersection(pig, ProductOfFormations(nil2, sup)); formation of ((2,5)-GroupAnd(2NilpotentBySupersolvable)) groups with support [ 2, 5 ] -\endexample - - Now let's define our own formation. -\beginexample +]]> +Now let's define our own formation. + preform := rec( name := "MyOwn", > fScreen := function( G, p) > return DerivedSubgroup( G ); @@ -236,10 +222,10 @@ gap> KnownAttributesOfObject(form); KnownPropertiesOfObject(form); [ "NameOfFormation", "ScreenOfFormation" ] [ ] -\endexample -In fact, the definition is integrated. Let's tell {\GAP} so and compute +]]> +In fact, the definition is integrated. Let's tell ⪆ so and compute some related subgroups. -\beginexample + SetIsIntegrated(form, true); gap> ResidualWrtFormation(G, form); Group([ (1,2)(3,4), (1,3)(2,4) ]) @@ -247,6 +233,7 @@ Group([ (3,4), (2,4,3) ]) gap> CoveringSubgroup1(G, form); Group([ (3,4), (2,4,3) ]) -\endexample -These answers are consistent with the fact that `MyOwn' is really just the +]]> +These answers are consistent with the fact that MyOwn is really just the formation of abelian by nilpotent groups. + diff --git a/doc/manual.bib b/doc/format.bib similarity index 93% rename from doc/manual.bib rename to doc/format.bib index 6c2184b..9626b44 100644 --- a/doc/manual.bib +++ b/doc/format.bib @@ -29,8 +29,8 @@ @Article{EW } @Article{G, - author = {Wolfgang Gasch\"utz}, - title = {Zur Theorie der endlichen aufl\"osbaren Gruppen}, + author = {Wolfgang Gaschütz}, + title = {Zur Theorie der endlichen auflösbaren Gruppen}, journal = {Mathematische Zeitschrift}, volume = 80, number = 1, diff --git a/doc/forms.tex b/doc/forms.tex deleted file mode 100644 index 715691f..0000000 --- a/doc/forms.tex +++ /dev/null @@ -1,161 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W forms.tex FORMAT documentation B. Eick and C.R.B. Wright -%% -%% 10-31-11 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\Chapter{Formations in GAP} - -%\index{Formations in GAP} - -A *formation* is a class ${\F}$ of groups closed under taking epimorphic -images and subdirect products. Closure under subdirect products is equivalent to the property that each finite group $G$ has a unique -smallest normal subgroup $G^{\F}$ with factor group $G / G^{\F}$ in~$\F$. -The subgroup $G^{\F}$ is called the *$\F$-residual* subgroup of $G$. Thus, -for example, the derived subgroup of $G$ is its residual for the formation -of abelian groups, and the residual for the formation of nilpotent groups -is the last term of the descending central series. - -In {\FORMAT} a formation is described by a function that computes $G^{\F}$ -for each (finite solvable) group $G$, and from that perspective $\F$ -consists of the groups $G$ for which $G^{\F}$ is trivial. To define a -formation that is not one of the standard examples provided (see below), -one must give {\GAP} an identifier for the formation and also some method -for computing residual subgroups. - -Some of the most interesting formations can also be described by ``local definition.'' For each prime $p$ -let $\F(p)$ be a formation or the empty class, and let $\F$ be the class -of all finite solvable groups $G$ such that for each prime $p$ and each $p$-chief factor $H/K$ of $G$ the group of automorphisms that $G$ -induces on $H/K$ by conjugation belongs to $\F(p)$. Then $\F$ is a -formation, with *local definition* the set of $ \F(p)$s. -The set of primes $p$ for which $\F(p)$ is not empty is called the -*support* of~$\F$. A $p$-chief factor is *$\F$-central* in case $G$ -induces an $\F(p)$-group on it or, equivalently, in case $G^{\F(p)}$ -centralizes it. It is possible to define a formation in {\FORMAT} by -giving such a local definition. Indeed one can define a kind of -generalized formation by giving what is called a normal subgroup function -or *screen*, which specifies arbitrary normal subgroups, not necessarily -of form $G^{\F(p)}$, to test ``centrality.'' Section~"Other Applications" describes one such usage of general screens. Most applications of formation -theory to solvable groups require local definition, as do the {\GAP} -functions for computing $\F$-normalizers and $\F$-covering subgroups. - -\> Formation( ) O -\> Formation( [, ] ) O - -The definition of a formation in {\FORMAT} begins with the creation of a -record `rec', which must contain a `name' component and at least one of -the components `fResidual' or `fScreen'. The component `name' is a string, -`fResidual' is a function that computes a normal subgroup of each group, -and `fScreen' is a function of two variables, a group and a prime, that -returns a normal subgroup of the input group. - -In the second form the function `Formation' can be used to obtain a -formation from the supplied library of formations. The formations -provided are: - -\beginitems -`Formation( "Nilpotent" )' & The formation of nilpotent groups, - -`Formation( "Supersolvable" )' & The formation of supersolvable groups, - - -`Formation( "Abelian" )' & The formation of abelian groups, - - -`Formation( "ElementaryAbelianProduct" )' & The formation of direct products of elementary abelian groups, - - -`Formation( "PNilpotent", prime )' & The formation of $p$-nilpotent groups -for $p =$ `prime', - - -`Formation( "PiGroups", primes )' & The formation of $\pi$-groups for -$\pi =$ the set `primes', - - -`Formation( "PLengthOne", prime )' & The formation of groups of $p$-length 1 -for $p =$ `prime'. -\enditems - -\> IsFormation( ) C -\> NameOfFormation( ) A -\> ResidualFunctionOfFormation( ) A - -`IsFormation' returns `true' if and only if is a {\GAP} formation. -`NameOfFormation' returns the name of a formation and `ResidualFunctionOfFormation' -returns the residual function of a formation. - -\> ScreenOfFormation( ) A - -If is locally defined by some screen of $\F(p)$s, -then `HasScreenOfFormation( )' is `true', `ScreenOfFormation( )' is a function of two variables, and , and -`ScreenOfFormation( )( ,

)' returns $G^{F(p)}$ if

is -in the support of and gives the empty list otherwise. - -\> SupportOfFormation( ) A - -The attribute `SupportOfFormation' is optional. It may be bound by -`SetSupportOfFormation'. If `SupportOfFormation' is not bound, then the support -of the formation is taken to be the set of all primes. In case the support of - is a finite set of primes, then `SupportOfFormation( )' is a list of -those primes, and `HasSupportOfFormation( )' returns true. In case the -support of is an infinite set but not the set of all primes, then the user -will need to make sure, perhaps with `ChangedSupport' or -`SetSupportOfFormation', that all primes dividing the orders of relevant groups -are considered. - -\> ChangedSupport( , ) O - -This function may be used to change the support of a formation. Let -be a formation and a list of primes. Then `ChangedSupport' -returns a formation with a new name whose support is the intersection -of the support of and . - -\> IsIntegrated( ) P - -The local definition is called *integrated* in case $\F(p)$ is contained in -$\F$ for each prime~$p$. The optional property `IsIntegrated' makes sense only if `HasScreenOfFormation( )' is `true'. Notice that -some of the functions described below will require that all of the attributes `HasScreenOfFormation( - )', `HasIsIntegrated( )' and `IsIntegrated( )' are `true'. If -unbound, this property can be bound with `SetIsIntegrated', but it is up to the -user to determine whether such a setting is appropriate. -Section "Formation Examples" contains an example of such usage. - -\> Integrated( ) O - -A local definition of a formation may always be replaced by an -integrated one without changing the formation itself, though the meaning -of ${\F}$-central may change. Let be a locally defined {\GAP} formation with -name `'. If is already integrated, then `Integrated( )' -yields itself. Otherwise, it yields a formation `Int' that is -abstractly the same as but has integrated local definition. - -\> ` = ' {formation!equality} -\> ` \< ' {formation!comparison} - -Two {\GAP} formations and are considered to be equal in case they -have the same name. The natural ordering on strings gives an ordering -on formations. This ordering is useful for organizing key-dependent -lists but has no mathematical significance. - -\> Intersection( , ) O - -The intersection of two {\GAP} formations and - is again a formation. `Intersection' produces the new formation -`(And)', which has attribute `ResidualFunctionOfFormation' if -either or does, has `FScreen' whenever both formations have `FScreen', and is -integrated if both are. - -\> ProductOfFormations( , ) O - -The product of two formations and is the formation -such that a finite group $G$ is a member of if and only if -$G^{F2}$ is in . (Notice that the product of by is -not necessarily equal to the product of by , and unless is normal subgroup-closed the product need not contain all extensions of a group in by a group in .) The function -`ProductOfFormations( , )' yields the product `(By)' of the two -formations. The product has the attribute `ResidualFunctionOfFormation' and has -the attribute `ScreenOfFormation' whenever both and have this entry -or whenever both `HasScreenOfFormation( )' and `not HasSupportOfFormation( - )' are `true'. In these cases the property `IsIntegrated' will be inherited -if possible. diff --git a/doc/forms.xml b/doc/forms.xml new file mode 100644 index 0000000..93272b3 --- /dev/null +++ b/doc/forms.xml @@ -0,0 +1,172 @@ + + +Formations in GAP +A formation is a class \mathcal{F} of groups closed under taking epimorphic +images and subdirect products. Closure under subdirect products is equivalent to the property that each finite group G has a unique +smallest normal subgroup G^\mathcal{F} with factor group G / G^\mathcal{F} in \mathcal{F}. +The subgroup G^\mathcal{F} is called the \mathcal{F}-residual subgroup of G. Thus, +for example, the derived subgroup of G is its residual for the formation +of abelian groups, and the residual for the formation of nilpotent groups +is the last term of the descending central series. +

+In &FORMAT; a formation is described by a function that computes G^\mathcal{F} +for each (finite solvable) group G, and from that perspective \mathcal{F} +consists of the groups G for which G^\mathcal{F} is trivial. To define a +formation that is not one of the standard examples provided (see below), +one must give &GAP; an identifier for the formation and also some method +for computing residual subgroups. +

+Some of the most interesting formations can also be described by local definition. For each prime p +let \mathcal{F}(p) be a formation or the empty class, and let \mathcal{F} be the class +of all finite solvable groups G such that for each prime p and each p-chief factor H/K of G the group of automorphisms that G +induces on H/K by conjugation belongs to \mathcal{F}(p). Then \mathcal{F} is a +formation, with local definition the set of \mathcal{F}(p)s. +The set of primes p for which \mathcal{F}(p) is not empty is called the +support of \mathcal{F}. A p-chief factor is \mathcal{F}-central in case G +induces an \mathcal{F}(p)-group on it or, equivalently, in case G^{\mathcal{F}(p)} +centralizes it. It is possible to define a formation in &FORMAT; by +giving such a local definition. Indeed one can define a kind of +generalized formation by giving what is called a normal subgroup function +or screen, which specifies arbitrary normal subgroups, not necessarily +of form G^{\mathcal{F}(p)}, to test centrality. Section  describes one such usage of general screens. Most applications of formation +theory to solvable groups require local definition, as do the &GAP; +functions for computing \mathcal{F}-normalizers and \mathcal{F}-covering subgroups. +

+Formations in GAP + + + + +The definition of a formation in &FORMAT; begins with the creation of a +record rec, which must contain a name component and at least one of +the components fResidual or fScreen. The component name is a string, +fResidual is a function that computes a normal subgroup of each group, +and fScreen is a function of two variables, a group and a prime, that +returns a normal subgroup of the input group. +

+In the second form the function Formation can be used to obtain a +formation from the supplied library of formations. The formations +provided are: + +Formation( "Nilpotent" ) +The formation of nilpotent groups, +Formation( "Supersolvable" ) +The formation of supersolvable groups, +Formation( "Abelian" ) +The formation of abelian groups, +Formation( "ElementaryAbelianProduct" ) +The formation of direct products of elementary abelian groups, +Formation( "PNilpotent", prime ) +The formation of p-nilpotent groups +for p = prime, +Formation( "PiGroups", primes ) +The formation of \pi-groups for +\pi = the set primes, +Formation( "PLengthOne", prime ) +The formation of groups of p-length 1 +for p = prime. + + + + + + + + +IsFormation returns true if and only if F is a &GAP; formation. +NameOfFormation returns the name of a formation and ResidualFunctionOfFormation +returns the residual function of a formation. + + + + + +If F is locally defined by some screen of \mathcal{F}(p)s, +then HasScreenOfFormation( F ) is true, ScreenOfFormation( F ) is a function of two variables, group and prime, and +ScreenOfFormation( F )( G, p ) returns G^{F(p)} if p is +in the support of F and gives the empty list otherwise. + + + + + +The attribute SupportOfFormation is optional. It may be bound by +SetSupportOfFormation. If SupportOfFormation is not bound, then the support +of the formation is taken to be the set of all primes. In case the support of +F is a finite set of primes, then SupportOfFormation( F ) is a list of +those primes, and HasSupportOfFormation( F ) returns true. In case the +support of F is an infinite set but not the set of all primes, then the user +will need to make sure, perhaps with ChangedSupport or +SetSupportOfFormation, that all primes dividing the orders of relevant groups +are considered. + + + + + +This function may be used to change the support of a formation. Let F +be a formation and primes a list of primes. Then ChangedSupport +returns a formation with a new name whose support is the intersection +of the support of F and primes. + + + + + +The local definition is called integrated in case \mathcal{F}(p) is contained in +\mathcal{F} for each prime p. The optional property IsIntegrated makes sense only if HasScreenOfFormation( F ) is true. Notice that +some of the functions described below will require that all of the attributes HasScreenOfFormation( +F ), HasIsIntegrated( F ) and IsIntegrated( F ) are true. If +unbound, this property can be bound with SetIsIntegrated, but it is up to the +user to determine whether such a setting is appropriate. +Section contains an example of such usage. + + + + + +A local definition of a formation may always be replaced by an +integrated one without changing the formation itself, though the meaning +of \mathcal{F}-central may change. Let F be a locally defined &GAP; formation with +name name. If F is already integrated, then Integrated( F ) +yields F itself. Otherwise, it yields a formation nameInt that is +abstractly the same as F but has integrated local definition. + + + + + + +Two &GAP; formations F1 and F2 are considered to be equal in case they +have the same name. The natural ordering on strings gives an ordering +on formations. This ordering is useful for organizing key-dependent +lists but has no mathematical significance. + + + + + +The intersection of two &GAP; formations F1 and +F2 is again a formation. Intersection produces the new formation +(name1Andname2), which has attribute ResidualFunctionOfFormation if +either F1 or F2 does, has fScreen whenever both formations have fScreen, and is +integrated if both are. + + + + + +The product of two formations F1 and F2 is the formation F +such that a finite group G is a member of F if and only if +G^{F2} is in F1. (Notice that the product of F1 by F2 is +not necessarily equal to the product of F2 by F1, and unless F1 is normal subgroup-closed the product need not contain all extensions of a group in F1 by a group in F2.) The function +ProductOfFormations( F1, F2 ) yields the product (name1Byname2) of the two +formations. The product has the attribute ResidualFunctionOfFormation and has +the attribute ScreenOfFormation whenever both F1 and F2 have this entry +or whenever both HasScreenOfFormation( F2 ) and not HasSupportOfFormation( +F1 ) are true. In these cases the property IsIntegrated will be inherited +if possible. + + +

+
diff --git a/doc/intro.tex b/doc/intro.tex deleted file mode 100644 index f9ce4fa..0000000 --- a/doc/intro.tex +++ /dev/null @@ -1,52 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W intro.tex FORMAT documentation B. Eick and C.R.B. Wright -%% -%% 10-31-11 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%\def\FORMAT{{\sf FORMAT}} -\def\F{{\cal{F}}} -\Chapter{Introduction to FORMAT} - -\index{Format} - -The {\GAP} package {\FORMAT} provides functions to compute with formations -of finite solvable groups. In addition to tools for constructing and -combining formations, the package contains functions to compute -$\F$-residual subgroups and to construct $\F$-normalizers and -$\F$-covering subgroups determined by locally defined formations. -System normalizers and Carter subgroups are available as special cases, -and the $\F$-normalizer functions also apply to the computation of -complements. The corresponding algorithms, together with applications -and a complexity analysis, are described in~\cite{EW}. - -The package permits the computation of formation-theoretic subgroups -not only for a number of classical formations, such as nilpotent, -supersolvable or $p$-length 1 groups, but for other formations that the -user may define. It also allows computation with classes of -finite solvable groups defined by normal subgroup functions (see -\cite{DH}, pages 395~ff). Attention may be restricted to the -subgroups of a single group, a feature that has applications -in the computation of complements to elementary abelian normal subgroups -in finite solvable groups (see \cite{EW}). An example of such an -application is given in Section~"Other Applications". - -This documentation contains only a brief account of the main -formation-theoretic ideas. For a much more complete treatment we -refer the reader to \cite{DH}. Fundamental ideas of formation theory are -described in \cite{G} and \cite{CH}. - -In the following sections we first describe the {\GAP} definition of a -formation and the examples of standard formations that are included in -the package. We also present some functions that obtain new formations -from ones already defined or that modify defined formations slightly. -(See Section~"Formations in GAP".) - -Then we describe functions that compute formation-theoretic subgroups -of finite solvable groups (see Sections "Residual Functions", -"FNormalizers" and~"Covering Subgroups"). - -Finally we provide examples from a {\GAP} session (see Sections~"Formation -Examples" and "Other Applications") to illustrate the functions in the package. - diff --git a/doc/intro.xml b/doc/intro.xml new file mode 100644 index 0000000..fefc882 --- /dev/null +++ b/doc/intro.xml @@ -0,0 +1,43 @@ + + +Introduction to FORMAT +Format +

+The &GAP; package &FORMAT; provides functions to compute with formations +of finite solvable groups. In addition to tools for constructing and +combining formations, the package contains functions to compute +\mathcal{F}-residual subgroups and to construct \mathcal{F}-normalizers and +\mathcal{F}-covering subgroups determined by locally defined formations. +System normalizers and Carter subgroups are available as special cases, +and the \mathcal{F}-normalizer functions also apply to the computation of +complements. The corresponding algorithms, together with applications +and a complexity analysis, are described in . +

+The package permits the computation of formation-theoretic subgroups +not only for a number of classical formations, such as nilpotent, +supersolvable or p-length 1 groups, but for other formations that the +user may define. It also allows computation with classes of +finite solvable groups defined by normal subgroup functions (see +, pages 395 ff). Attention may be restricted to the +subgroups of a single group, a feature that has applications +in the computation of complements to elementary abelian normal subgroups +in finite solvable groups (see ). An example of such an +application is given in Section . +

+This documentation contains only a brief account of the main +formation-theoretic ideas. For a much more complete treatment we +refer the reader to . Fundamental ideas of formation theory are +described in and . +

+In the following sections we first describe the &GAP; definition of a +formation and the examples of standard formations that are included in +the package. We also present some functions that obtain new formations +from ones already defined or that modify defined formations slightly. +(See Section .) +

+Then we describe functions that compute formation-theoretic subgroups +of finite solvable groups (see Sections , + and ). +

+Finally we provide examples from a &GAP; session (see Sections  and ) to illustrate the functions in the package. + diff --git a/doc/make_doc b/doc/make_doc deleted file mode 100755 index fa49d9d..0000000 --- a/doc/make_doc +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -set -e - -echo "TeXing documentation" -# delete old stuff to avoid spurious or "hidden errors" caused by their presence -rm -f manual.{aux,bbl,blg,dvi,idx,ilg,ind,lab,log,pdf,ps,six,toc} - -# TeX the manual -tex manual -# ... and build its bibliography -bibtex manual -# TeX the manual again to incorporate the ToC -tex manual -# ... and build the index -../../../doc/manualindex manual -# Finally TeX the manual again to get cross-references right -tex manual - -# Create PDF version -pdftex manual -pdftex manual - -# The HTML version of the manual -mkdir -p ../htm -echo "Creating HTML documentation" -../../../etc/convert.pl -i -u -c -n FORMAT . ../htm diff --git a/doc/manual.mst b/doc/manual.mst deleted file mode 100644 index cc39d64..0000000 --- a/doc/manual.mst +++ /dev/null @@ -1,16 +0,0 @@ -preamble "" -postamble "\n" -group_skip "\n" -headings_flag 1 -heading_prefix "\\letter " -numhead_positive "{}" -symhead_positive "{}" -item_0 "\n " -item_1 "\n \\sub " -item_01 "\n \\sub " -item_x1 ", " -item_2 "\n \\subsub " -item_12 "\n \\subsub " -item_x2 ", " -page_compositor "--" -line_max 1000 diff --git a/doc/manual.tex b/doc/manual.tex deleted file mode 100644 index 3b33943..0000000 --- a/doc/manual.tex +++ /dev/null @@ -1,104 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W manual.tex GAP documentation Thomas Breuer -%W & Frank Celler -%W & Martin Schoenert -%W & Heiko Theissen -%% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F gapmacro . . . . . . . . . . . . . . . . read the GAP macro package -%% -\input ../../../doc/gapmacro -% -% -\Package{FORMAT} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F BeginningOfBook . . . . . . . . . . . . . . . . . . . start the book -%% -\BeginningOfBook{format} -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F UseReferences . . . . . . . . . . . . . . . . . . specify references -%% -\UseReferences{../../../doc/ref} -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F TitlePage . . . . . . . . . . . . . . . . . . . . . . nice title page -%% -\TitlePage{ - \centerline{\titlefont FORMAT} - \bigskip\bigskip - \centerline{\titlefont A GAP Package} - \bigskip - \centerline{\titlefont on Formations} \vfill - \centerline{\secfont by}\vfill - \centerline{\secfont Bettina Eick and C.R.B. Wright} - - \vfill - \centerline{\copyright 2000-2018 by - Bettina Eick, and Charles R.B. Wright} - - \bigskip - \centerline{This software is released under the GPL version 2 or later - (at your preference).} - \centerline{For the text of the GPL, please see https://www.gnu.org/licenses/.} -} - -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F TableOfContents . . . . . . . . . . . . generate a table of contents -%% -\OneColumnTableOfContents -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F FrontMatter . . . . . . . . . . . . . . . . . . . . . GAP 4 Tutorial -%% -\FrontMatter -\immediate\write\citeout{\bs bibdata{manual}} -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F Chapters . . . . . . . . . . . . . . . . . . . . . . GAP 4 Tutorial -%% -\Chapters - -\Input{intro} -\Input{forms} -\Input{resid} -\Input{norm} -\Input{cover} -\Input{examples} -\Input{others} -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%%F Appendices . . . . . . . . . . . . Extending GAP 4 Reference Manual -%% -%\Appendices -\Bibliography -\Index -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%F EndOfBook . . . . . . . . . . . . . . . . . . . . . . . . . that's it -%% -\EndOfBook -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%E manual.tex . . . . . . . . . . . . . . . . . . . . . . . . ends here diff --git a/doc/norm.tex b/doc/norm.tex deleted file mode 100644 index 1e41f31..0000000 --- a/doc/norm.tex +++ /dev/null @@ -1,64 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W norm.tex FORMAT documentation B. Eick and C.R.B. Wright -%% -%% 10-31-11 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\Chapter{FNormalizers} - -%\index{FNormalizers} - -Let $\F$ be an integrated locally defined formation, and let $G$ be -a finite solvable group with Sylow complement basis -%display{tex} -$\Sigma := -\{ S^p \mid p$ divides $ \|G\| \}$. -%display{html} -%$\Sigma$. -%enddisplay -Let $\pi$ be the set of prime -divisors of the order of $G$ that are in the support of $\F$ and -${\nu}$ the remaining prime divisors of the order of $G$. -Then the *$\F$-normalizer* of $G$ with respect to $\Sigma$ is defined -to be -%display{tex} -$\bigcap_{q \in \nu} S^q \cap - \bigcap_{p \in \pi} N_G( G^{\F(p)} \cap S^p )$. -%display{html} -%[see the PDF manual]. -%enddisplay -The special case $\F(p) = \{ 1 \}$ for all $p$ defines the formation -of nilpotent groups, whose $\F$-normalizers -are the *system normalizers* of $G$. The $\F$-normalizers of a group -$G$ for a given $\F$ are all conjugate. They cover $\F$-central chief -factors and avoid $\F$-hypereccentric ones. - -\> FNormalizerWrtFormation( , ) O -\> SystemNormalizer( ) A - -If is a locally defined integrated formation in {\GAP} and - is a finite solvable group, then the function `FNormalizerWrtFormation' -returns an -normalizer of . The function `SystemNormalizer' yields a -system normalizer of . - -The underlying algorithm here requires to have a special pcgs (see section "ref:Polycyclic Groups" in the {\GAP} reference manual), so the algorithm's first step is - to compute such a pcgs for if one is not known. The complement basis -$\Sigma$ associated with this pcgs is then used to compute the --normalizer of with respect to $\Sigma$. This process means that -in the case of a finite solvable group that does not have a special pcgs, -the first call of `FNormalizerWrtFormation' (or similarly of `FormationCoveringGroup') -will take longer than subsequent calls, since it will include the -computation of a special pcgs. - -The `FNormalizerWrtFormation' algorithm next computes an -system for , a -complicated record that includes a pcgs corresponding to a normal series -of whose factors are either -central or -hypereccentric. A subset -of this pcgs then exhibits the -normalizer of determined by -$\Sigma$. The list `ComputedFNormalizerWrtFormations( )' stores the -normalizers -of that have been found for various formations . - -The `FNormalizerWrtFormation' function can be used to study the subgroups of a -single group , as illustrated in an example in Section "Other Applications". In that case it is sufficient to have a function -`ScreenOfFormation' that returns a normal subgroup of on each call. - diff --git a/doc/norm.xml b/doc/norm.xml new file mode 100644 index 0000000..67246a1 --- /dev/null +++ b/doc/norm.xml @@ -0,0 +1,53 @@ + + +FNormalizers +Let \mathcal{F} be an integrated locally defined formation, and let G be +a finite solvable group with Sylow complement basis +\Sigma := +\{ S^p \mid p divides |G| \}. +Let \pi be the set of prime +divisors of the order of G that are in the support of \mathcal{F} and +{\nu} the remaining prime divisors of the order of G. +Then the \mathcal{F}-normalizer of G with respect to \Sigma is defined +to be +\bigcap_{q \in \nu} S^q \cap + \bigcap_{p \in \pi} N_G( G^{\mathcal{F}(p)} \cap S^p ). +The special case \mathcal{F}(p) = \{ 1 \} for all p defines the formation +of nilpotent groups, whose \mathcal{F}-normalizers +are the system normalizers of G. The \mathcal{F}-normalizers of a group +G for a given \mathcal{F} are all conjugate. They cover \mathcal{F}-central chief +factors and avoid \mathcal{F}-hypereccentric ones. +

+FNormalizers + + + + +If F is a locally defined integrated formation in &GAP; and +G is a finite solvable group, then the function FNormalizerWrtFormation +returns an F-normalizer of G. The function SystemNormalizer yields a +system normalizer of G. +

+The underlying algorithm here requires G to have a special pcgs (see section in the &GAP; reference manual), so the algorithm's first step is + to compute such a pcgs for G if one is not known. The complement basis +\Sigma associated with this pcgs is then used to compute the +F-normalizer of G with respect to \Sigma. This process means that +in the case of a finite solvable group G that does not have a special pcgs, +the first call of FNormalizerWrtFormation (or similarly of CoveringSubgroupWrtFormation) +will take longer than subsequent calls, since it will include the +computation of a special pcgs. +

+The FNormalizerWrtFormation algorithm next computes an F-system for G, a +complicated record that includes a pcgs corresponding to a normal series +of G whose factors are either F-central or F-hypereccentric. A subset +of this pcgs then exhibits the F-normalizer of G determined by +\Sigma. The list ComputedFNormalizerWrtFormations( G ) stores the F-normalizers +of G that have been found for various formations F. +

+The FNormalizerWrtFormation function can be used to study the subgroups of a +single group G, as illustrated in an example in Section . In that case it is sufficient to have a function +ScreenOfFormation that returns a normal subgroup of G on each call. + + +

+
diff --git a/doc/others.tex b/doc/others.tex deleted file mode 100644 index 625fb66..0000000 --- a/doc/others.tex +++ /dev/null @@ -1,51 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W others.tex FORMAT documentation B. Eick and C.R.B. Wright -%% -%% 10-31-11 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\Chapter{Other Applications} - -%\index{Other Applications} - -Up to this point our screens, i.e., normal subgroup functions, have yielded local formation residual subgroups, but there is no requirement that they do so. Screens for which the selected normal subgroups can be arbitrary have applications beyond formation theory. Chapter V of \cite{CH} contains an account of a generalized normalizer theory built from them, and Wright (\cite{WA} and \cite{WB}) uses them to construct internal versions of formations that are conceptually related to ordinary formations much as Fitting sets are related to Fitting classes. - -A major application of the generalized normalizers is to speed up computation of complements to normal factors (see~\cite{EW}). -Suppose that $G$ is a finite solvable group with an elementary abelian -normal subgroup $A$ for which there exists a normal subgroup $N$ of $G$ -containing $A$ such that $N/A$ is nilpotent and $[N,A] = A$. Then $A$ has a complement in $G$, and all complements -are conjugate---indeed, they can be viewed as generalized -$\F$-normalizers. We will show the idea, which of course is most useful with very large groups, by using `FNormalizerWrtFormation' to find a complement to an -elementary abelian normal subgroup, in this case to $K$ in $S_4$ with $N = -A_4$. - -We need to define a formation `F' in {\GAP} (not a real formation, -of course, just a local version) such that `ScreenOfFormation( F )(s4,p)' returns $A_4$ for -every call. In order to call `FNormalizerWrtFormation' we must also set the property -`IsIntegrated' to `true'. -\beginexample -gap> preform := rec( name := "ForComplement", -> fScreen := function( H, p ) -> return Subgroup( H, GeneratorsOfGroup( H ){[2,3,4]}); -> end);; -gap> form := Formation(preform); -formation of ForComplement groups -gap> SetIsIntegrated(form, true); -\endexample -Now we may use `FNormalizerWrtFormation' with `s4' to -get the complement, an $S_3$. (Recall that unless `form' already -thinks it's integrated, `FNormalizerWrtFormation' will automatically -integrate `form' before running its computations, which may not be -the desired behavior.) -\beginexample -gap> comp := FNormalizerWrtFormation(s4, form); Size(comp); -Group([ f1, f2 ]) -6 -\endexample - -A user who wanted to employ the $\F$-normalizer technique to compute very -many complements in this way would probably wish to create a new {\GAP} -function by extracting portions of the code that computes -$\F$-systems. - diff --git a/doc/others.xml b/doc/others.xml new file mode 100644 index 0000000..68f8b49 --- /dev/null +++ b/doc/others.xml @@ -0,0 +1,42 @@ + + +Other Applications +Up to this point our screens, i.e., normal subgroup functions, have yielded local formation residual subgroups, but there is no requirement that they do so. Screens for which the selected normal subgroups can be arbitrary have applications beyond formation theory. Chapter V of contains an account of a generalized normalizer theory built from them, and Wright ( and ) uses them to construct internal versions of formations that are conceptually related to ordinary formations much as Fitting sets are related to Fitting classes. +

+A major application of the generalized normalizers is to speed up computation of complements to normal factors (see ). +Suppose that G is a finite solvable group with an elementary abelian +normal subgroup A for which there exists a normal subgroup N of G +containing A such that N/A is nilpotent and [N,A] = A. Then A has a complement in G, and all complements +are conjugate---indeed, they can be viewed as generalized +\mathcal{F}-normalizers. We will show the idea, which of course is most useful with very large groups, by using FNormalizerWrtFormation to find a complement to an +elementary abelian normal subgroup, in this case to K in S_4 with N = +A_4. +

+We need to define a formation F in &GAP; (not a real formation, +of course, just a local version) such that ScreenOfFormation( F )(s4,p) returns A_4 for +every call. In order to call FNormalizerWrtFormation we must also set the property +IsIntegrated to true. + preform := rec( name := "ForComplement", +> fScreen := function( H, p ) +> return Subgroup( H, GeneratorsOfGroup( H ){[2,3,4]}); +> end);; +gap> form := Formation(preform); +formation of ForComplement groups +gap> SetIsIntegrated(form, true); +]]> +Now we may use FNormalizerWrtFormation with s4 to +get the complement, an S_3. (Recall that unless form already +thinks it's integrated, FNormalizerWrtFormation will automatically +integrate form before running its computations, which may not be +the desired behavior.) + comp := FNormalizerWrtFormation(s4, form); Size(comp); +Group([ f1, f2 ]) +6 +]]> +A user who wanted to employ the \mathcal{F}-normalizer technique to compute very +many complements in this way would probably wish to create a new &GAP; +function by extracting portions of the code that computes +\mathcal{F}-systems. + diff --git a/doc/resid.tex b/doc/resid.tex deleted file mode 100644 index 1400361..0000000 --- a/doc/resid.tex +++ /dev/null @@ -1,46 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%W resid.tex FORMAT documentation B. Eick and C.R.B. Wright -%% -%% 12-28-99 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\Chapter{Residual Functions} - -%\index{Residual Functions} - -\bigskip - -\> ResidualWrtFormation( , ) O - -Let be a finite solvable group and a formation. Then -`ResidualWrtFormation' returns the -residual subgroup of . - -The following special cases have their own functions. - -\bigskip - -\> NilpotentResidual( ) A - -This is the last term of the descending central series of . - -\> PResidual( ,

) O - -This is the smallest normal subgroup of whose index is a power of -the prime

. - -\> PiResidual( , ) O - -This is the smallest normal subgroup of whose index is divisible -only by primes in the list . - -\> CoprimeResidual( , ) O - -This is the smallest normal subgroup of whose index is -divisible only by primes *not* in the list `primes'. - -\> ElementaryAbelianProductResidual( ) A - -This is the smallest normal subgroup of whose factor group is a -direct product of groups of prime order. - - diff --git a/doc/resid.xml b/doc/resid.xml new file mode 100644 index 0000000..9610951 --- /dev/null +++ b/doc/resid.xml @@ -0,0 +1,50 @@ + + +Residual Functions +

+Residual Functions + + + +Let G be a finite solvable group and F a formation. Then +ResidualWrtFormation returns the F-residual subgroup of G. +

+The following special cases have their own functions. + + + + + +This is the last term of the descending central series of G. + + + + + +This is the smallest normal subgroup of G whose index is a power of +the prime p. + + + + + +This is the smallest normal subgroup of G whose index is divisible +only by primes in the list primes. + + + + + +This is the smallest normal subgroup of G whose index is +divisible only by primes not in the list primes. + + + + + +This is the smallest normal subgroup of G whose factor group is a +direct product of groups of prime order. + + +

+
diff --git a/makedoc.g b/makedoc.g new file mode 100644 index 0000000..ab1b693 --- /dev/null +++ b/makedoc.g @@ -0,0 +1,33 @@ +############################################################################# +## +## makedoc.g +## +## Builds the package documentation with AutoDoc/GAPDoc. +## +############################################################################# + +LoadPackage("AutoDoc"); + +# Run this from the package's root directory: gap makedoc.g +AutoDoc(rec( + autodoc := true, + gapdoc := true, + extract_examples := true, + scaffold := rec( + includes := [ + "intro.xml", + "forms.xml", + "resid.xml", + "norm.xml", + "cover.xml", + "examples.xml", + "others.xml" + ], + entities := rec( + FORMAT := "FORMAT", + ), + bib := "format.bib", + ), +)); + +QuitGap(); diff --git a/tst/manual.example-6.tst b/tst/format01.tst similarity index 68% rename from tst/manual.example-6.tst rename to tst/format01.tst index 8e20062..064ee36 100644 --- a/tst/manual.example-6.tst +++ b/tst/format01.tst @@ -1,29 +1,61 @@ -gap> START_TEST(""); - +# FORMAT, chapter 6 +# +# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! # +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. +# +gap> START_TEST("format01.tst"); + +# doc/examples.xml:14-16 +gap> LoadPackage("format");; + +# doc/examples.xml:21-27 gap> G := SymmetricGroup(4); Sym( [ 1 .. 4 ] ) gap> SystemNormalizer(G); CarterSubgroup(G); Group([ (3,4) ]) Group([ (3,4), (1,3)(2,4), (1,2)(3,4) ]) + +# doc/examples.xml:30-36 gap> sup := Formation("Supersolvable"); formation of Supersolvable groups gap> KnownAttributesOfObject(sup); KnownPropertiesOfObject(sup); [ "NameOfFormation", "ScreenOfFormation" ] [ "IsIntegrated" ] + +# doc/examples.xml:38-44 gap> ScreenOfFormation(sup); gap> ScreenOfFormation(sup)(G,2); ScreenOfFormation(sup)(G,3); Group([ (3,4), (2,4,3), (1,4)(2,3), (1,3)(2,4) ]) Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]) + +# doc/examples.xml:49-54 gap> ResidualWrtFormation(G, sup); Group([ (1,4)(2,3), (1,2)(3,4) ]) gap> KnownAttributesOfObject(sup); [ "NameOfFormation", "ScreenOfFormation", "ResidualFunctionOfFormation" ] + +# doc/examples.xml:56-70 gap> FNormalizerWrtFormation(G, sup); Group([ (3,4), (2,4,3) ]) gap> CoveringSubgroupWrtFormation(G, sup); Group([ (3,4), (2,4,3) ]) +gap> KnownAttributesOfObject(G); +[ "Size", "OneImmutable", "SmallestMovedPoint", "NrMovedPoints", + "MovedPoints", "GeneratorsOfMagmaWithInverses", "TrivialSubmagmaWithOne", + "MultiplicativeNeutralElement", "DerivedSubgroup", "IsomorphismPcGroup", + "IsomorphismSpecialPcGroup", "PcgsElementaryAbelianSeries", "HomePcgs", + "Pcgs", "StabChainOptions", "ComputedResidualWrtFormations", + "ComputedAbelianExponentResiduals", "ComputedFNormalizerWrtFormations", + "ComputedCoveringSubgroup1s", "ComputedCoveringSubgroup2s", + "SystemNormalizer", "CarterSubgroup" ] + +# doc/examples.xml:75-86 gap> ComputedResidualWrtFormations(G); [ formation of Supersolvable groups, Group([ (1,4)(2,3), (1,2)(3,4) ]) ] gap> ComputedFNormalizerWrtFormations(G); @@ -34,21 +66,31 @@ gap> ComputedCoveringSubgroup2s(G); gap> ComputedCoveringSubgroup1s(G); [ formation of Nilpotent groups, Group([ (3,4), (1,3)(2,4), (1,2)(3,4) ]), formation of Supersolvable groups, Group([ (3,4), (2,4,3) ]) ] + +# doc/examples.xml:91-94 gap> s4 := SymmetricGroup(IsPcGroup, 4); + +# doc/examples.xml:96-100 gap> SystemNormalizer(s4); CarterSubgroup(s4); Group([ f1 ]) Group([ f1, f4, f3*f4 ]) + +# doc/examples.xml:102-107 gap> sl := SpecialLinearGroup(2,3); SL(2,3) gap> h := PcGroupWithPcgs(Pcgs(sl)); + +# doc/examples.xml:109-116 gap> CarterSubgroup(sl); Size(last); 6 gap> SystemNormalizer(h); CarterSubgroup(h); Group([ f1, f4 ]) Group([ f1, f4 ]) + +# doc/examples.xml:118-129 gap> ab := Formation("Abelian"); formation of Abelian groups gap> KnownPropertiesOfObject(ab); KnownAttributesOfObject(ab); @@ -59,21 +101,31 @@ formation of 2Nilpotent groups gap> KnownPropertiesOfObject(nil2); KnownAttributesOfObject(nil2); [ "IsIntegrated" ] [ "NameOfFormation", "ScreenOfFormation", "ResidualFunctionOfFormation" ] + +# doc/examples.xml:131-136 gap> form := ProductOfFormations(ab, nil2); formation of (AbelianBy2Nilpotent) groups gap> KnownAttributesOfObject(form); [ "NameOfFormation", "ResidualFunctionOfFormation" ] + +# doc/examples.xml:138-143 gap> form2 := ProductOfFormations(nil2, ab); formation of (2NilpotentByAbelian) groups gap> KnownAttributesOfObject(form2); [ "NameOfFormation", "ScreenOfFormation", "ResidualFunctionOfFormation" ] + +# doc/examples.xml:145-151 gap> ResidualWrtFormation(G, form); ResidualWrtFormation(G, form2); Group(()) Group([ (1,2)(3,4), (1,3)(2,4) ]) gap> KnownPropertiesOfObject(form2); [ ] + +# doc/examples.xml:155-158 gap> Integrated(form2); formation of (2NilpotentByAbelian)Int groups + +# doc/examples.xml:163-179 gap> FNormalizerWrtFormation(G, form2); CoveringSubgroupWrtFormation(G, form2); Group([ (3,4), (2,4,3) ]) Group([ (3,4), (2,4,3) ]) @@ -83,8 +135,14 @@ gap> ComputedCoveringSubgroup1s(G); [ formation of (2NilpotentByAbelian)Int groups, Group([ (3,4), (2,4,3) ]), formation of Nilpotent groups, Group([ (3,4), (1,3)(2,4), (1,2)(3,4) ]), formation of Supersolvable groups, Group([ (3,4), (2,4,3) ]) ] -gap> Length(ComputedResidualWrtFormations(G)); -10 +gap> ComputedResidualWrtFormations(G); +[ formation of (2NilpotentByAbelian) groups, Group([ (1,2)(3,4), (1,3)(2,4) ]) + , formation of (AbelianBy2Nilpotent) groups, Group(()), + formation of 2Nilpotent groups, Group([ (1,2)(3,4), (1,3)(2,4) ]), + formation of Abelian groups, Alt( [ 1 .. 4 ] ), + formation of Supersolvable groups, Group([ (1,4)(2,3), (1,2)(3,4) ]) ] + +# doc/examples.xml:183-191 gap> pig := Formation("PiGroups", [2,5]); formation of (2,5)-Group groups with support [ 2, 5 ] gap> form := Intersection(pig, nil2); @@ -92,18 +150,24 @@ formation of ((2,5)-GroupAnd2Nilpotent) groups with support [ 2, 5 ] gap> KnownAttributesOfObject(form); [ "NameOfFormation", "ScreenOfFormation", "SupportOfFormation", "ResidualFunctionOfFormation" ] + +# doc/examples.xml:193-200 gap> form3 := ChangedSupport(nil2, [2,5]); formation of Changed2Nilpotent[ 2, 5 ] groups gap> SupportOfFormation(form3); [ 2, 5 ] gap> form = form3; false + +# doc/examples.xml:206-212 gap> ProductOfFormations(Intersection(pig, nil2), sup); formation of (((2,5)-GroupAnd2Nilpotent)BySupersolvable) groups gap> Intersection(pig, ProductOfFormations(nil2, sup)); formation of ((2,5)-GroupAnd(2NilpotentBySupersolvable)) groups with support [ 2, 5 ] -gap> preform := rec( name := "MyOwn", + +# doc/examples.xml:214-225 +gap> preform := rec( name := "MyOwn", > fScreen := function( G, p) > return DerivedSubgroup( G ); > end); @@ -113,6 +177,8 @@ formation of MyOwn groups gap> KnownAttributesOfObject(form); KnownPropertiesOfObject(form); [ "NameOfFormation", "ScreenOfFormation" ] [ ] + +# doc/examples.xml:228-236 gap> SetIsIntegrated(form, true); gap> ResidualWrtFormation(G, form); Group([ (1,2)(3,4), (1,3)(2,4) ]) @@ -122,4 +188,4 @@ gap> CoveringSubgroup1(G, form); Group([ (3,4), (2,4,3) ]) # -gap> STOP_TEST( "" ,1); +gap> STOP_TEST("format01.tst", 1); diff --git a/tst/format02.tst b/tst/format02.tst new file mode 100644 index 0000000..d46819d --- /dev/null +++ b/tst/format02.tst @@ -0,0 +1,28 @@ +# FORMAT, chapter 7 +# +# DO NOT EDIT THIS FILE - EDIT EXAMPLES IN THE SOURCE INSTEAD! +# +# This file has been generated by AutoDoc. It contains examples extracted from +# the package documentation. Each example is preceded by a comment which gives +# the name of a GAPDoc XML file and a line range from which the example were +# taken. Note that the XML file in turn may have been generated by AutoDoc +# from some other input. +# +gap> START_TEST("format02.tst"); + +# doc/others.xml:19-27 +gap> preform := rec( name := "ForComplement", +> fScreen := function( H, p ) +> return Subgroup( H, GeneratorsOfGroup( H ){[2,3,4]}); +> end);; +gap> form := Formation(preform); +formation of ForComplement groups +gap> SetIsIntegrated(form, true); + +# doc/others.xml:33-37 +gap> comp := FNormalizerWrtFormation(s4, form); Size(comp); +Group([ f1, f2 ]) +6 + +# +gap> STOP_TEST("format02.tst", 1); diff --git a/tst/manual.example-7.tst b/tst/manual.example-7.tst deleted file mode 100644 index edc4cac..0000000 --- a/tst/manual.example-7.tst +++ /dev/null @@ -1,16 +0,0 @@ -gap> START_TEST(""); - -# -gap> preform := rec( name := "ForComplement", -> fScreen := function( H, p ) -> return Subgroup( H, GeneratorsOfGroup( H ){[2,3,4]}); -> end);; -gap> form := Formation(preform); -formation of ForComplement groups -gap> SetIsIntegrated(form, true); -gap> comp := FNormalizerWrtFormation(s4, form); Size(comp); -Group([ f1, f2 ]) -6 - -# -gap> STOP_TEST( "" ,1);