diff --git a/.gitignore b/.gitignore
index 5a3c92c..ea4d814 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,22 +1,28 @@
-/htm/
-
+/doc/*.css
+/doc/*.js
+/doc/_*.xml
+/doc/chap*.html
+/doc/chap*.txt
+/doc/chap*_mj.html
+/doc/chap*_mj.txt
+/doc/chooser.html
+/doc/main.*
/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/manual.lab
/doc/manual.log
/doc/manual.pdf
-/doc/manual.ps
/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 9115055..8b9822c 100644
--- a/PackageInfo.g
+++ b/PackageInfo.g
@@ -1,6 +1,6 @@
#############################################################################
##
-## PackageInfo.g for the package `Aclib' Bettina Eick
+## PackageInfo.g for the package AClib Bettina Eick
##
SetPackageInfo( rec(
@@ -18,7 +18,7 @@ Persons := [
IsAuthor := true,
IsMaintainer := false,
Email := "Karel.Dekimpe@kuleuven.be",
- WWWHome := "https://www.kuleuven-kulak.be/~dekimpe/",
+ WWWHome := "https://kulak.kuleuven.be/~dekimpe/",
PostalAddress := Concatenation( [
"Katholieke Universiteit Leuven\n",
"Campus Kortrijk, Universitaire Campus\n",
@@ -33,7 +33,7 @@ Persons := [
IsAuthor := true,
IsMaintainer := true,
Email := "beick@tu-bs.de",
- WWWHome := "http://www.iaa.tu-bs.de/beick",
+ WWWHome := "https://www.iaa.tu-bs.de/beick",
PostalAddress := Concatenation(
"Institut Analysis und Algebra\n",
"TU Braunschweig\n",
@@ -61,12 +61,12 @@ ArchiveURL := Concatenation( ~.SourceRepository.URL,
ArchiveFormats := ".tar.gz",
AbstractHTML :=
-"The AClib package contains a library of almost crystallographic groups and a some algorithms to compute with these groups. A group is called almost crystallographic if it is finitely generated nilpotent-by-finite and has no non-trivial finite normal subgroups. Further, an almost crystallographic group is called almost Bieberbach if it is torsion-free. The almost crystallographic groups of Hirsch length 3 and a part of the almost cyrstallographic groups of Hirsch length 4 have been classified by Dekimpe. This classification includes all almost Bieberbach groups of Hirsch lengths 3 or 4. The AClib package gives access to this classification; that is, the package contains this library of groups in a computationally useful form. The groups in this library are available in two different representations. First, each of the groups of Hirsch length 3 or 4 has a rational matrix representation of dimension 4 or 5, respectively, and such representations are available in this package. Secondly, all the groups in this libraray are (infinite) polycyclic groups and the package also incorporates polycyclic presentations for them. The polycyclic presentations can be used to compute with the given groups using the methods of the Polycyclic package.",
+"The AClib package contains a library of almost crystallographic groups and some algorithms to compute with these groups. A group is called almost crystallographic if it is finitely generated nilpotent-by-finite and has no non-trivial finite normal subgroups. Further, an almost crystallographic group is called almost Bieberbach if it is torsion-free. The almost crystallographic groups of Hirsch length 3 and a part of the almost crystallographic groups of Hirsch length 4 have been classified by Dekimpe. This classification includes all almost Bieberbach groups of Hirsch lengths 3 or 4. The AClib package gives access to this classification; that is, the package contains this library of groups in a computationally useful form. The groups in this library are available in two different representations. First, each of the groups of Hirsch length 3 or 4 has a rational matrix representation of dimension 4 or 5, respectively, and such representations are available in this package. Secondly, all the groups in this library are (infinite) polycyclic groups and the package also incorporates polycyclic presentations for them. The polycyclic presentations can be used to compute with the given groups using the methods of the Polycyclic package.",
PackageDoc := rec(
BookName := "AClib",
- ArchiveURLSubset := ["doc", "htm"],
- HTMLStart := "htm/chapters.htm",
+ ArchiveURLSubset := ["doc"],
+ HTMLStart := "doc/chap0_mj.html",
PDFFile := "doc/manual.pdf",
SixFile := "doc/manual.six",
LongTitle := "Almost Crystallographic Groups - A Library and Algorithms",
@@ -83,8 +83,17 @@ AvailabilityTest := ReturnTrue,
TestFile := "tst/testall.g",
Keywords := ["almost crystallographic groups", "almost Bieberbach group",
- "virtually nilpotent group", "nilpotent-by-finite group",
- "datalibrary of almost Bieberbach groups"]
+ "virtually nilpotent group", "nilpotent-by-finite group",
+ "datalibrary of almost Bieberbach groups"],
+
+AutoDoc := rec(
+ entities := rec(
+ Polycyclic := "Polycyclic",
+ Cryst := "Cryst",
+ CaratInterface := "CaratInterface",
+ CrystCat := "CrystCat",
+ ),
+),
));
diff --git a/README b/README
index 85ad2da..cce3a14 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
-Aclib -- A Library of 3- and 4-Dimensional Almost Crystallographic Groups
-=========================================================================
+AClib -- A Library of 3- and 4-Dimensional Almost Crystallographic Groups
+========================================================================
by Karel Dekimpe and Bettina Eick
@@ -7,27 +7,25 @@ by Karel Dekimpe and Bettina Eick
Introduction
------------
-The package `aclib' contains the almost crystallographic groups as
-classified by K. Dekimpe in the Springer Lecture Notes, Vol. 1639:
-"Almost Bieberbach Groups: Affine and Polynomial Structures".
+The AClib package contains the almost crystallographic groups as
+classified by K. Dekimpe in the Springer Lecture Notes, Vol. 1639:
+"Almost-Bieberbach Groups: Affine and Polynomial Structures".
The groups are available as rational matrix groups. Further, all the
-groups in the library are polycyclic. If the `Polycyclic' package for
+groups in the library are polycyclic. If the Polycyclic package for
computations with infinite polycyclic groups is installed, then also
polycyclic presentations for the almost crystallographic groups are
available and can be used for computations with these groups.
-
Support
-------
-
-Please report any problems you may encounter using `aclib' at
-
+Please report any problems you may encounter using AClib at
+
License
-------
-The `aclib' package is licensed under the Artistic License 2.0.
+The AClib package is licensed under the Artistic License 2.0.
diff --git a/doc/aclib.bib b/doc/aclib.bib
index c0110a3..3567bd8 100644
--- a/doc/aclib.bib
+++ b/doc/aclib.bib
@@ -17,15 +17,15 @@ @article{AUS
author = "Louis Auslander",
title = "Bieberbach's theorem on space groups and discrete uniform
subgroups of Lie groups",
-journal = "Ann. of Math",
+journal = "Ann. of Math.",
number = "3",
volume = "71",
year = "1960",
-pages = "579-590"
+pages = "579--590"
}
@book{BRO,
-author = "Kenneth S.\ Brown",
+author = "Kenneth S. Brown",
title = "Cohomology of Groups",
volume = "87",
series = "Grad. Texts in Math.",
diff --git a/doc/aclib.tex b/doc/aclib.tex
deleted file mode 100644
index b4c0e54..0000000
--- a/doc/aclib.tex
+++ /dev/null
@@ -1,304 +0,0 @@
-\Chapter{The catalog of almost crystallographic groups}
-
-This chapter introduces the access functions to the catalog of
-3- and 4-dimensional crystallographic groups. This catalog is an
-electronic version of the classification obtained in \cite{KD}.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Rational matrix groups}
-
-The following three main functions are available to access the library
-of almost crystallographic groups as rational matrix groups.
-
-\> AlmostCrystallographicGroup( , , )
-\> AlmostCrystallographicDim3( , )
-\> AlmostCrystallographicDim4( , )
-
- is the dimension of the required group. Thus must be
-either 3 or 4. The inputs and are used to define
-the desired group as described in \cite{KD}. We outline the possible
-choices for and here briefly. A more extended
-description is given later in Section "More about almost crystallographic
-groups" or can be obtained from \cite{KD}.
-
- specifies the type of the required group. There are 17 types
-in dimension 3 and 95 types in dimension 4. The input can either
-be an integer defining the position of the desired type among all types;
-that is, in this case is a number in [1..17] in dimension 3 or a
-number in [1..95] in dimension 4. Alternatively, can be a string
-defining the desired type. In dimension 3 the possible strings are
-`"01"', `"02"', $\ldots$, `"17"'. In dimension 4 the possible strings
-are listed in the list `ACDim4Types' and thus can be accessed from \GAP.
-
- is a list of integers. Its length depends on the type of
-the chosen group. The lists `ACDim3Param' and `ACDim4Param' contain
-at position $i$ the length of the parameter list for the type number $i$.
-Every list of integers of this length is a valid input.
-Alternatively, one can input `false' instead of a parameter list. Then
-\GAP\ will chose a random parameter list of suitable length.
-
-\beginexample
-gap> G := AlmostCrystallographicGroup( 4, 50, [ 1, -4, 1, 2 ] );
-
-gap> DimensionOfMatrixGroup( G );
-5
-gap> FieldOfMatrixGroup( G );
-Rationals
-gap> GeneratorsOfGroup( G );
-[ [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ],
- [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ],
- [ [ 1, 1/2, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 1 ],
- [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ],
- [ [ 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],
- [ 0, 0, 0, 1, 1 ], [ 0, 0, 0, 0, 1 ] ],
- [ [ 1, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],
- [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ],
- [ [ 1, -4, 1, 0, 1/2 ], [ 0, 0, -1, 0, 0 ], [ 0, 1, 0, 0, 0 ],
- [ 0, 0, 0, 1, 1/4 ], [ 0, 0, 0, 0, 1 ] ] ]
-gap> G.1;
-[ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ],
- [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ]
-gap> ACDim4Types[50];
-"076"
-gap> ACDim4Param[50];
-4
-\endexample
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Polycyclically presented groups}
-
-All the almost crystallographic groups considered in this package are
-polycyclic. Hence they have a polycyclic presentation and this can be
-used to facilitate efficient computations with the groups. To obtain the
-polycyclic presentation of an almost crystallographic group we supply the
-following functions. Note that the share package {\sf Polycyclic} must be
-installed to use these functions.
-
-\> AlmostCrystallographicPcpGroup( , , )
-\> AlmostCrystallographicPcpDim3( , )
-\> AlmostCrystallographicPcpDim4( , )
-
-The input is the same as for the corresponding matrix group functions.
-The output is a pcp group isomorphic to the corresponding matrix group.
-An explicit isomorphism from an almost crystallographic matrix group
-to the corresponding pcp group can be obtained by the following function.
-
-\> IsomorphismPcpGroup( )
-
-We can use the polycyclic presentations of almost crystallographic
-groups to exhibit structure information on these groups. For example,
-we can determine their Fitting subgroup and ask group-theoretic
-questions about this nilpotent group. The factor $G / Fit(G)$ of an
-almost crystallographic group $G$ is called *holonomy group*. We
-provide access to this factor of a pcp group via the following
-functions. Let $G$ be an almost crystallographic pcp group.
-
-\> HolonomyGroup( )
-\> NaturalHomomorphismOnHolonomyGroup( )
-
-The following example shows applications of these functions.
-
-\beginexample
-gap> G := AlmostCrystallographicPcpGroup( 4, 50, [ 1, -4, 1, 2 ] );
-Pcp-group with orders [ 4, 0, 0, 0, 0 ]
-gap> Cgs(G);
-[ g1, g2, g3, g4, g5 ]
-
-gap> F := FittingSubgroup( G );
-Pcp-group with orders [ 0, 0, 0, 0 ]
-gap> Centre(F);
-Pcp-group with orders [ 0, 0 ]
-gap> LowerCentralSeries(F);
-[ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0 ],
- Pcp-group with orders [ ] ]
-gap> UpperCentralSeries(F);
-[ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0, 0 ],
- Pcp-group with orders [ ] ]
-gap> MinimalGeneratingSet(F);
-[ g2, g3, g4 ]
-
-gap> H := HolonomyGroup( G );
-Pcp-group with orders [ 4 ]
-gap> hom := NaturalHomomorphismOnHolonomyGroup( G );
-[ g1, g2, g3, g4, g5 ] -> [ g1, identity, identity, identity, identity ]
-gap> U := Subgroup( H, [Pcp(H)[1]^2] );
-Pcp-group with orders [ 2 ]
-gap> PreImage( hom, U );
-Pcp-group with orders [ 2, 0, 0, 0, 0 ]
-\endexample
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{More about the type and the defining parameters}
-
-Each group from this library knows that it is almost crystallographic and,
-additionally, it knows its type and defining parameters.
-
-\> AlmostCrystallographicInfo( )
-
-This attribute is set for groups from the library only. It is not possible
-at current to determine the type and the defining parameters for an arbitrary
-almost crystallographic groups which is not defined by the library access
-functions.
-
-\beginexample
-gap> G := AlmostCrystallographicGroup( 4, 70, false );
-
-gap> IsAlmostCrystallographic(G);
-true
-gap> AlmostCrystallographicInfo(G);
-rec( dim := 4, type := 70, param := [ 1, -4, 1, 2, -3 ] )
-\endexample
-
-\beginexample
-gap> G := AlmostCrystallographicPcpGroup( 4, 70, false );
-Pcp-group with orders [ 6, 0, 0, 0, 0 ]
-gap> IsAlmostCrystallographic(G);
-true
-gap> AlmostCrystallographicInfo(G);
-rec( dim := 4, type := 70, param := [ -3, 2, 5, 1, 0 ] )
-\endexample
-
-We consider the types of almost crystallographic groups in more detail. The
-almost crystallographic groups in dimensions 3 and 4 fall into three families
-
-\beginlist
-\item{(1)} 3-dimensional almost crystallographic groups.
-\item{(2)} 4-dimensional almost crystallographic groups with a
- Fitting subgroup of class 2.
-\item{(3)} 4-dimensional almost crystallographic groups with a
- Fitting subgroup of class 3.
-\endlist
-
-These families are split up further into subfamilies in \cite{KD} and to
-each subfamily is assigned a type; that is, a string which is used to
-identify the subfamily. As mentioned above, for the 3-dimensional almost
-crystallographic groups the type is a string representing the numbers from
-1 to 17, i.e. the available types are `"01"', `"02"', $\ldots$, `"17"'.
-
-For the 4-dimensional almost crystallographic groups with a Fitting subgroup
-of class 2 the type is a string of 3 or 4 characters. In general, a string of
-3 characters representing
-the number of the table entry in \cite{KD} is used. So possible types are
-`"001"', `"002"', $\ldots$. The reader is warned however that not all
-possible numbers are used, e.g.\ there are no groups of type `"016"'. Also,
-the types do not appear in their natural order in \cite{KD}. Moreover, for
-certain numbers there is more than one family of groups listed in \cite{KD}.
-For example, the 3 families of groups corresponding to number 19 on pages
-179-180 of \cite{KD} have types `"019"', `"019b"' and `"019c"' (the order is
-the one given in \cite{KD}).
-
-For the last category of groups, the 4-dimensional almost crystallographic
-groups with a Fitting subgroup of class 3, the type is a string of 2 or 3
-characters, where the first character is always the letter `"B"'. This `"B"'
-is followed by the number of the table entry as found in \cite{KD},
-eventually followed by a `"b"' or `"c"' as in the previous case.
-
-For each type of almost crystallographic group contained in the library
-there exists a function taking a parameter list as input and returning
-the desired matrix or pcp group. These functions can be accessed
-from \GAP\ using the lists `ACDim3Funcs', `ACDim4Funcs', `ACPcpDim3Funcs'
-and `ACPcpDim4Funcs' which consist of the corresponding functions.
-
-Although we include these direct access functions here for completeness,
-we note that the user should in general use the higher-level functions
-introduced above to obtain almost crystallographic groups from the
-library. In particular, these low-level access functions return matrix
-or pcp groups, but the almost crystallographic info flags will not be
-attached to them.
-
-\beginexample
-gap> ACDim3Funcs[15];
-function( k1, k2, k3, k4 ) ... end
-gap> ACDim3Funcs[15](1,1,1,1);
-
-gap> ACPcpDim3Funcs[1](1);
-Pcp-group with orders [ 0, 0, 0 ]
-\endexample
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{The electronic versus the printed library}
-
-The package `aclib' can be considered as the electronic version of
-Chapter 7 of \cite{KD}. In this section we outline the relationship
-between the library presented in this manual and the printed version
-in \cite{KD}. First we consider an example. At page 175 of \cite{KD},
-we find the following groups in the table starting with entry ``13''.
-
-\medskip
-13. $Q=P2/c$
-$$
-\matrix{ E:\;\langle a,b,c,d,\alpha,\beta\;\|\; & {\,[b,a]=1}\hskip 1.61cm
- {[d,a]=1}
-\hfill & \rangle \cr
- & \matrix{ {[c,a]=d^{2 k_1}}\hfill & {[d,b]=1}\hfill \cr
- {[c,b]=1}\hfill & {[d,c]=1}\hfill \cr
-\alpha a=a^{-1}\alpha d^{k_{2}}\hfill & \alpha^2=d^{k_3}\hfill \cr
-\alpha b=b\alpha \hfill & \alpha d= d \alpha\hfill \cr
-\alpha c=c^{-1}\alpha d^{-2 k_6}\hfill & \cr
-\beta a=a^{-1}\beta d^{k_1+k_2} \hfill & \beta^2=d^{k_5}\hfill \cr
-\beta b=b^{-1}\beta d^{k_4}\hfill & \beta d= d \beta\hfill \cr
-\beta c=c^{-1}\beta d^{-2 k_6}\hfill & \alpha \beta=c\beta\alpha d^{k_6}
-\hfill } & }
-$$
-
-$$\lambda(\alpha)=\left(\matrix{
-1& \frac{k_1}{2}+k_2 & 0 & -2 k_6 & \frac{k_3}{2}+\frac{k_6}{2} \cr
-0& -1 & 0 & 0 & 0 \cr
-0 & 0& 1 & 0 & 0 \cr
-0 & 0 & 0 & -1 & \frac12\cr
-0 & 0 & 0 & 0 & 1
-}\right)
-\;\;\lambda(\beta)=\left(\matrix{
-1& k_1+k_2 & k_4 & -2 k_6 & \frac{k_5}{2} \cr
-0& -1 & 0 & 0 & 0 \cr
-0 & 0& -1 & 0 & 0 \cr
-0 & 0 & 0 & -1 & 0\cr
-0 & 0 & 0 & 0 & 1
- }\right)
-$$
-
-$$H^2(Q,\Z{})=\Z{}\oplus(\Z{}_2)^4=\Z^{6}/A,$$
-$$A=\{(k_1,\ldots,k_6)\|
-k_1=0,\;k_2,\ldots, k_5\in 2\Z{},\;k_6\in\Z\}$$
-AB-groups:
-
-$\forall k>0,\;k\equiv 0\bmod 2,\;<(k,0,1,0,1,0)>$
-
-\medskip
-
-The number ``13'' at the beginning of this entry is the type of the
-almost crystallographic group in this library. This family of groups
-with type 13 depends on 6 parameters $k_1, k_2, \ldots, k_6$ and these
-are the list in this library. The rational matrix
-representation in \GAP\ corresponds exactly to the printed version in
-\cite{KD} where it is named $\lambda$. In the example below, we consider
-the group with parameters $(k_1,k_2,k_3,k_4,k_5,k_6)=(8,0,1,0,1,0)$.
-
-\beginexample
-gap> G:=AlmostCrystallographicDim4("013",[8,0,1,0,1,0]);
-
-gap> G.5;
-[ [ 1, 4, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],
- [ 0, 0, 0, -1, 1/2 ], [ 0, 0, 0, 0, 1 ] ]
-gap> G.6;
-[ [ 1, 8, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, -1, 0, 0 ],
- [ 0, 0, 0, -1, 0 ], [ 0, 0, 0, 0, 1 ] ]
-\endexample
-
-For a 4-dimensional almost crystallographic group the matrix group is
-built up such that $\{ a, b, c, d, \alpha, \beta, \gamma \}$ as described
-in \cite{KD} forms the defining generating set of $G$. For certain types
-the elements $\alpha$, $\beta$ or $\gamma$ may not be present.
-Similarly, for a 3-dimensional group we have the generating set $\{ a, b,
-c, \alpha, \beta \}$ and $\alpha$ and $\beta$ may be absent.
-
-\bigskip
-
-To obtain a polycyclic generating sequence from the defining generators
-of the matrix group we have to order the elements in the generating set
-suitably. For this purpose we take the subsequence of $(\gamma, \beta,
-\alpha, a, b, c, d)$ of those generators which are present in the
-defining generating set of the matrix group. This new ordering of the
-generators is then used to define a polycyclic presentation of the given
-almost crystallographic group.
-
diff --git a/doc/aclib.xml b/doc/aclib.xml
new file mode 100644
index 0000000..51e767c
--- /dev/null
+++ b/doc/aclib.xml
@@ -0,0 +1,300 @@
+
+The catalog of almost crystallographic groups
+This chapter introduces the access functions to the catalog of
+3- and 4-dimensional almost crystallographic groups. This catalog is an
+electronic version of the classification obtained in .
+
+Rational matrix groups
+The following three main functions are available to access the library
+of almost crystallographic groups as rational matrix groups.
+
+
+
+
+
+dim is the dimension of the required group. Thus dim must be
+either 3 or 4. The inputs type and parameters are used to define
+the desired group as described in . We outline the possible
+choices for type and parameters here briefly. A more extended
+description is given later in Section or can be obtained from .
+
+type specifies the type of the required group. There are 17 types
+in dimension 3 and 95 types in dimension 4. The input type can either
+be an integer defining the position of the desired type among all types;
+that is, in this case type is a number in [1..17] in dimension 3 or a
+number in [1..95] in dimension 4. Alternatively, type can be a string
+defining the desired type. In dimension 3 the possible strings are
+"01", "02", \ldots, "17". In dimension 4 the possible strings
+are listed in the list ACDim4Types and thus can be accessed from &GAP;.
+
+parameters is a list of integers. Its length depends on the type of
+the chosen group. The lists ACDim3Param and ACDim4Param contain
+at position i the length of the parameter list for the type number i.
+Every list of integers of this length is a valid parameter input.
+Alternatively, one can input false instead of a parameter list. Then
+&GAP; will choose a random parameter list of suitable length.
+ G := AlmostCrystallographicGroup( 4, 50, [ 1, -4, 1, 2 ] );
+
+gap> DimensionOfMatrixGroup( G );
+5
+gap> FieldOfMatrixGroup( G );
+Rationals
+gap> GeneratorsOfGroup( G );
+[ [ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ],
+ [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ],
+ [ [ 1, 1/2, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 1 ],
+ [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ],
+ [ [ 1, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],
+ [ 0, 0, 0, 1, 1 ], [ 0, 0, 0, 0, 1 ] ],
+ [ [ 1, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],
+ [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ],
+ [ [ 1, -4, 1, 0, 1/2 ], [ 0, 0, -1, 0, 0 ], [ 0, 1, 0, 0, 0 ],
+ [ 0, 0, 0, 1, 1/4 ], [ 0, 0, 0, 0, 1 ] ] ]
+gap> G.1;
+[ [ 1, 0, -1/2, 0, 0 ], [ 0, 1, 0, 0, 1 ], [ 0, 0, 1, 0, 0 ],
+ [ 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 1 ] ]
+gap> ACDim4Types[50];
+"076"
+gap> ACDim4Param[50];
+4
+]]>
+
+
+
+
+Polycyclically presented groups
+All the almost crystallographic groups considered in this package are
+polycyclic. Hence they have a polycyclic presentation and this can be
+used to facilitate efficient computations with the groups. To obtain the
+polycyclic presentation of an almost crystallographic group we supply the
+following functions. Note that the &Polycyclic; package must be installed
+to use these functions.
+
+
+
+
+
+The input is the same as for the corresponding matrix group functions.
+The output is a pcp group isomorphic to the corresponding matrix group.
+An explicit isomorphism from an almost crystallographic matrix group
+to the corresponding pcp group can be obtained by the following function.
+
+
+
+
+
+This returns an isomorphism from the almost crystallographic matrix
+group G onto the corresponding pcp group.
+
+
+We can use the polycyclic presentations of almost crystallographic
+groups to exhibit structure information on these groups. For example,
+we can determine their Fitting subgroup and ask group-theoretic
+questions about this nilpotent group. The factor G / Fitt(G) of an
+almost crystallographic group G is called holonomy group. We
+provide access to this factor of a pcp group via the following
+functions. Let G be an almost crystallographic pcp group.
+
+
+
+
+The following example shows applications of these functions.
+ G := AlmostCrystallographicPcpGroup( 4, 50, [ 1, -4, 1, 2 ] );
+Pcp-group with orders [ 4, 0, 0, 0, 0 ]
+gap> Cgs(G);
+[ g1, g2, g3, g4, g5 ]
+]]>
+ F := FittingSubgroup( G );
+Pcp-group with orders [ 0, 0, 0, 0 ]
+gap> Centre(F);
+Pcp-group with orders [ 0, 0 ]
+gap> LowerCentralSeries(F);
+[ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0 ],
+ Pcp-group with orders [ ] ]
+gap> UpperCentralSeries(F);
+[ Pcp-group with orders [ 0, 0, 0, 0 ], Pcp-group with orders [ 0, 0 ],
+ Pcp-group with orders [ ] ]
+gap> MinimalGeneratingSet(F);
+[ g2, g3, g4 ]
+]]>
+ H := HolonomyGroup( G );
+Pcp-group with orders [ 4 ]
+gap> hom := NaturalHomomorphismOnHolonomyGroup( G );
+[ g1, g2, g3, g4, g5 ] -> [ g1, id, id, id, id ]
+gap> U := Subgroup( H, [Pcp(H)[1]^2] );
+Pcp-group with orders [ 2 ]
+gap> PreImage( hom, U );
+Pcp-group with orders [ 2, 0, 0, 0, 0 ]
+]]>
+
+
+
+
+More about the type and the defining parameters
+Each group from this library knows that it is almost crystallographic and,
+additionally, it knows its type and defining parameters.
+
+
+
+This attribute is set for groups from the library only. It is not possible
+at present to determine the type and the defining parameters for an arbitrary
+almost crystallographic group which is not defined by the library access
+functions.
+ G := AlmostCrystallographicGroup( 4, 70, false );
+
+gap> IsAlmostCrystallographic(G);
+true
+gap> AlmostCrystallographicInfo(G);
+rec( dim := 4, type := 70, param := [ 1, -4, 1, 2, -3 ] )
+]]>
+ G := AlmostCrystallographicPcpGroup( 4, 70, false );
+Pcp-group with orders [ 6, 0, 0, 0, 0 ]
+gap> IsAlmostCrystallographic(G);
+true
+gap> AlmostCrystallographicInfo(G);
+rec( dim := 4, type := 70, param := [ -3, 2, 5, 1, 0 ] )
+]]>
+We consider the types of almost crystallographic groups in more detail. The
+almost crystallographic groups in dimensions 3 and 4 fall into three families
+
+- 3-dimensional almost crystallographic groups.
+
+- 4-dimensional almost crystallographic groups with a
+ Fitting subgroup of class 2.
+
+- 4-dimensional almost crystallographic groups with a
+ Fitting subgroup of class 3.
+
+These families are split up further into subfamilies in and to
+each subfamily is assigned a type; that is, a string which is used to
+identify the subfamily. As mentioned above, for the 3-dimensional almost
+crystallographic groups the type is a string representing the numbers from
+1 to 17, i.e. the available types are "01", "02", \ldots, "17".
+
+For the 4-dimensional almost crystallographic groups with a Fitting subgroup
+of class 2 the type is a string of 3 or 4 characters. In general, a string of
+3 characters representing
+the number of the table entry in is used. So possible types are
+"001", "002", \ldots. The reader is warned however that not all
+possible numbers are used, e.g. there are no groups of type "016". Also,
+the types do not appear in their natural order in . Moreover, for
+certain numbers there is more than one family of groups listed in .
+For example, the 3 families of groups corresponding to number 19 on pages
+179-180 of have types "019", "019b" and "019c" (the order is
+the one given in ).
+
+For the last category of groups, the 4-dimensional almost crystallographic
+groups with a Fitting subgroup of class 3, the type is a string of 2 or 3
+characters, where the first character is always the letter "B". This "B"
+is followed by the number of the table entry as found in ,
+possibly followed by a "b" or "c" as in the previous case.
+
+For each type of almost crystallographic group contained in the library
+there exists a function taking a parameter list as input and returning
+the desired matrix or pcp group. These functions can be accessed
+from &GAP; using the lists ACDim3Funcs, ACDim4Funcs, ACPcpDim3Funcs
+and ACPcpDim4Funcs which consist of the corresponding functions.
+
+Although we include these direct access functions here for completeness,
+we note that the user should in general use the higher-level functions
+introduced above to obtain almost crystallographic groups from the
+library. In particular, these low-level access functions return matrix
+or pcp groups, but the almost crystallographic info flags will not be
+attached to them.
+ ACDim3Funcs[15];
+function( k1, k2, k3, k4 ) ... end
+gap> ACDim3Funcs[15](1,1,1,1);
+
+gap> ACPcpDim3Funcs[1](1);
+Pcp-group with orders [ 0, 0, 0 ]
+]]>
+
+
+
+
+The electronic versus the printed library
+The &AClib; package can be considered as the electronic version of
+Chapter 7 of . In this section we outline the relationship
+between the library presented in this manual and the printed version
+in . First we consider an example. At page 175 of ,
+we find the following groups in the table starting with entry 13
.
+
+13. Q=P2/c
+
+\matrix{ E:\langle a,b,c,d,\alpha,\beta\| & {[b,a]=1}\hskip 1.61cm
+ {[d,a]=1}
+ & \rangle \cr
+ & \matrix{ {[c,a]=d^{2 k_1}} & {[d,b]=1} \cr
+ {[c,b]=1} & {[d,c]=1} \cr
+\alpha a=a^{-1}\alpha d^{k_{2}} & \alpha^2=d^{k_3} \cr
+\alpha b=b\alpha & \alpha d= d \alpha \cr
+\alpha c=c^{-1}\alpha d^{-2 k_6} & \cr
+\beta a=a^{-1}\beta d^{k_1+k_2} & \beta^2=d^{k_5} \cr
+\beta b=b^{-1}\beta d^{k_4} & \beta d= d \beta \cr
+\beta c=c^{-1}\beta d^{-2 k_6} & \alpha \beta=c\beta\alpha d^{k_6}
+ } & }
+
+
+\lambda(\alpha)=\left(\matrix{
+1& \frac{k_1}{2}+k_2 & 0 & -2 k_6 & \frac{k_3}{2}+\frac{k_6}{2} \cr
+0& -1 & 0 & 0 & 0 \cr
+0 & 0& 1 & 0 & 0 \cr
+0 & 0 & 0 & -1 & \frac12\cr
+0 & 0 & 0 & 0 & 1
+}\right)
+\lambda(\beta)=\left(\matrix{
+1& k_1+k_2 & k_4 & -2 k_6 & \frac{k_5}{2} \cr
+0& -1 & 0 & 0 & 0 \cr
+0 & 0& -1 & 0 & 0 \cr
+0 & 0 & 0 & -1 & 0\cr
+0 & 0 & 0 & 0 & 1
+ }\right)
+
+
+H^2(Q,&ZZ;{})=&ZZ;{}\oplus(&ZZ;{}_2)^4=&ZZ;^{6}/A,
+A=\{(k_1,\ldots,k_6)\|
+k_1=0,\;k_2,\ldots, k_5\in 2&ZZ;{},\;k_6\in&ZZ;\}
+AB-groups:
+
+\forall k>0,k\equiv 0\bmod 2,\langle(k,0,1,0,1,0)\rangle
+
+The number 13
at the beginning of this entry is the type of the
+almost crystallographic group in this library. This family of groups
+with type 13 depends on 6 parameters k_1, k_2, \ldots, k_6 and these
+are the parameters list in this library. The rational matrix
+representation in &GAP; corresponds exactly to the printed version in
+ where it is named \lambda. In the example below, we consider
+the group with parameters (k_1,k_2,k_3,k_4,k_5,k_6)=(8,0,1,0,1,0).
+ G:=AlmostCrystallographicDim4("013",[8,0,1,0,1,0]);
+
+gap> G.5;
+[ [ 1, 4, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ],
+ [ 0, 0, 0, -1, 1/2 ], [ 0, 0, 0, 0, 1 ] ]
+gap> G.6;
+[ [ 1, 8, 0, 0, 1/2 ], [ 0, -1, 0, 0, 0 ], [ 0, 0, -1, 0, 0 ],
+ [ 0, 0, 0, -1, 0 ], [ 0, 0, 0, 0, 1 ] ]
+]]>
+For a 4-dimensional almost crystallographic group the matrix group is
+built up such that \{ a, b, c, d, \alpha, \beta, \gamma \} as described
+in forms the defining generating set of G. For certain types
+the elements \alpha, \beta or \gamma may not be present.
+Similarly, for a 3-dimensional group we have the generating set \{ a, b,
+c, \alpha, \beta \} and \alpha and \beta may be absent.
+
+To obtain a polycyclic generating sequence from the defining generators
+of the matrix group we have to order the elements in the generating set
+suitably. For this purpose we take the subsequence of (\gamma, \beta,
+\alpha, a, b, c, d) of those generators which are present in the
+defining generating set of the matrix group. This new ordering of the
+generators is then used to define a polycyclic presentation of the given
+almost crystallographic group.
+
+
diff --git a/doc/algos.tex b/doc/algos.tex
deleted file mode 100644
index 60525e8..0000000
--- a/doc/algos.tex
+++ /dev/null
@@ -1,90 +0,0 @@
-\Chapter{Algorithms for almost crystallographic groups}
-
-This chapter presents a variety of algorithms for almost crystallographic
-groups. In most cases, they assume a polycyclically presented group as
-input; in particular, the input groups must be polycyclic in this case.
-The methods described here supplement the methods of the {\sf Polycyclic}
-package for polycyclically presented groups. Many of the functions in this
-chapter are based on methods of the {\sf Polycyclic} package and thus this
-package must be installed to use the functions introduced here. We refer to
-the {\sf Polycyclic} package for further information on polycyclic
-presentations.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Properties of almost crystallographic groups}
-
-\> IsAlmostCrystallographic( ) P
-
-This function checks if a polycyclically presented group is almost
-crystallographic; that is, it checks if is nilpotent-by-finite and
-has no non-trivial finite normal subgroup.
-
-\> IsAlmostBieberbachGroup( ) P
-
-This function checks if a polycyclically presented group is almost
-Bieberbach; that is, it checks if is nilpotent-by-finite and torsion
-free.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Betti numbers}
-
-Let $G$ be a polycyclically presented and torsion free group of Hirsch
-length $n$. Then we can compute the Betti numbers $\beta_i(G)$ for $i \in
-\{0, 1, 2, n-2, n-1, n\}$. If $n \leq 6$, then we can compute all Betti
-numbers $\beta_i(G)$ for $0 \leq i \leq 6$ of $G$. We introduce the following
-functions for this purpose and we refer to \cite{BRO} for the details on
-the orientation module and the Betti numbers.
-
-\> OrientationModule( ) F
-
-This function determines the orientation module of the polycyclically
-presented group ; that is, it returns a list of matrices $m_1, \ldots,
-m_n \leq GL( 1, \Z )$ which are the images of the 'Igs(G)' in their action
-on the orientation module.
-
-\> BettiNumber( , ) F
-
-This function returns the th Betti number of the polycyclically presented
-torsion free group if $m \in \{0, 1, 2, n-2, n-1, n\}$, where $n$ is the
-Hirsch length of .
-
-\> BettiNumbers( ) A
-
-This function returns the Betti number of the polycyclically presented
-torsion free group if the Hirsch length of is smaller than 7.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Determination of certain extensions}
-
-Let $G$ be a polycyclically presented almost crystallographic group. We want
-to check the existence of certain extensions of $G$.
-
-First, it is well-known that the equivalence classes of extensions of $G$
-correspond to the second cohomology group of $G$. This cohomology group can
-be computed using the methods of the {\sf Polycyclic} package for any
-explicitly given module of $G$. Further, we can construct a polycyclic
-presentation for each cocycle of the second cohomology group. We give an
-example for such a computation below.
-
-However, we may be interested in certain extensions only; for example,
-the torsion free extensions are often of particular interest. If the
-second cohomology group is finite, then we can compute a polycyclic
-presentation for each element of this group and check the resulting group
-for torsion freeness. But if the second cohomology group is infinite, then
-this approach is not available. Hence we introduce the following special
-method to cover this and related applications.
-
-\> HasExtensionOfType( , , ) F
-
-Suppose that is a polycyclically presented almost crystallographic group
-with Fitting subgroup $N$. This function checks if there is a $G$-module
-$M \cong \Z$ which is centralized by $N$ such that there exists a torsion
-free extension of $M$ by (if the flag is true) or an
-extension $E$ with $Z(Fitt(E)) = M$ (if the flag is true)
-or an extension which satisfies both conditions (if both flags are true).
-
-We note that the existence of such extensions is of interest in the
-determination of extensions which are almost Bieberbach groups. We refer
-to \cite{DE1} for a more detailed account of this application and for
-further results of a similar nature.
-
diff --git a/doc/algos.xml b/doc/algos.xml
new file mode 100644
index 0000000..20a67d3
--- /dev/null
+++ b/doc/algos.xml
@@ -0,0 +1,100 @@
+
+Algorithms for almost crystallographic groups
+This chapter presents a variety of algorithms for almost crystallographic
+groups. In most cases, they assume a polycyclically presented group as
+input; in particular, the input groups must be polycyclic in this case.
+The methods described here supplement the methods of the &Polycyclic;
+package for polycyclically presented groups. Many of the functions in this
+chapter are based on methods of the &Polycyclic; package and thus this
+package must be installed to use the functions introduced here. We refer to
+the &Polycyclic; package for further information on polycyclic
+presentations.
+
+Properties of almost crystallographic groups
+
+
+
+This function checks if a polycyclically presented group G is almost
+crystallographic; that is, it checks if G is nilpotent-by-finite and
+has no non-trivial finite normal subgroup.
+
+
+
+
+
+This function checks if a polycyclically presented group G is almost
+Bieberbach; that is, it checks if G is nilpotent-by-finite and torsion
+free.
+
+
+
+
+Betti numbers
+Let G be a polycyclically presented and torsion free group of Hirsch
+length n. Then we can compute the Betti numbers \beta_i(G) for i \in
+\{0, 1, 2, n-2, n-1, n\}. If n \leq 6, then we can compute all Betti
+numbers \beta_i(G) for 0 \leq i \leq 6 of G. We introduce the following
+functions for this purpose and we refer to for the details on
+the orientation module and the Betti numbers.
+
+
+
+This function determines the orientation module of the polycyclically
+presented group G; that is, it returns a list of matrices m_1, \ldots,
+m_n \in GL( 1, &ZZ; ) which are the images of the Igs(G) in their action
+on the orientation module.
+
+
+
+
+
+This function returns the mth Betti number of the polycyclically presented
+torsion free group G if m \in \{0, 1, 2, n-2, n-1, n\}, where n is the
+Hirsch length of G.
+
+
+
+
+
+This function returns the Betti numbers of the polycyclically presented
+torsion free group G if the Hirsch length of G is smaller than 7.
+
+
+
+
+Determination of certain extensions
+Let G be a polycyclically presented almost crystallographic group. We want
+to check the existence of certain extensions of G.
+
+First, it is well-known that the equivalence classes of extensions of G
+correspond to the second cohomology group of G. This cohomology group can
+be computed using the methods of the &Polycyclic; package for any
+explicitly given module of G. Further, we can construct a polycyclic
+presentation for each cocycle of the second cohomology group. We give an
+example for such a computation below.
+
+However, we may be interested in certain extensions only; for example,
+the torsion free extensions are often of particular interest. If the
+second cohomology group is finite, then we can compute a polycyclic
+presentation for each element of this group and check the resulting group
+for torsion freeness. But if the second cohomology group is infinite, then
+this approach is not available. Hence we introduce the following special
+method to cover this and related applications.
+
+
+
+Suppose that G is a polycyclically presented almost crystallographic group
+with Fitting subgroup N. This function checks if there is a G-module
+M \cong &ZZ; which is centralized by N such that there exists a torsion
+free extension of M by G (if the flag torsionfree is true) or an
+extension E with Z(Fitt(E)) = M (if the flag minimalcentre is true)
+or an extension which satisfies both conditions (if both flags are true).
+
+We note that the existence of such extensions is of interest in the
+determination of extensions which are almost Bieberbach groups. We refer
+to for a more detailed account of this application and for
+further results of a similar nature.
+
+
+
+
diff --git a/doc/examp.tex b/doc/examp.tex
deleted file mode 100644
index dcd90ec..0000000
--- a/doc/examp.tex
+++ /dev/null
@@ -1,235 +0,0 @@
-\Chapter{Example computations with almost crystallographic groups}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Example computations I}
-
-Using the functions available for pcp groups in the share package
-{\sf polycyclic} it is now easy to redo some of the calculations of
-\cite{KD}. As a first example we check whether the groups indicated
-as torsion free in \cite{KD} are also determined as torsion free
-ones by \GAP. In \cite{KD} these almost Bieberbach groups are listed as
-``AB-groups''. So for type ``013'' these are the groups with parameters
-$(k,0,1,0,1,0)$ where $k$ is an even integer. Let's look at some examples
-in \GAP:
-
-\beginexample
-gap> G:=AlmostCrystallographicPcpDim4("013",[8,0,1,0,1,0]);
-Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
-gap> IsTorsionFree(G);
-true
-gap> G:=AlmostCrystallographicPcpDim4("013",[9,0,1,0,1,0]);
-Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
-gap> IsTorsionFree(G);
-false
-\endexample
-
-Further, there is also some cohomology information in the tables
-of \cite{KD}. In fact, the groups in this library were obtained
-as extensions $E$ of the form
-
-$$
-1 \rightarrow \Z \rightarrow E \rightarrow Q \rightarrow 1
-$$
-
-where, in the 4-dimensional case $Q = E/\langle d \rangle$. The
-cohomology information for the particular example above shows that
-the groups determined by a parameter set $(k_1,k_2,k_3,k_4,k_4,k_6)$
-are equivalent as extensions to the groups determined by the parameters
-$(k_1, k_2 \bmod 2, k_3 \bmod 2, k_4 \bmod 2, k_5 \bmod 2, 0)$. This is
-also visible in finding torsion:
-
-\beginexample
-gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,2,0,1,0]);
-Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
-gap> IsTorsionFree(G);
-false
-gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,3,0,1,9]);
-Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
-gap> IsTorsionFree(G);
-true
-\endexample
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Example computations II}
-
-The computation of cohomology groups played an important role in the
-classification of the almost Bieberbach groups in \cite{KD}. Using
-\GAP, it is now possible to check these computations. As an example we
-consider the 4-dimensional almost crystallographic groups of type 85 on
-page 202 of \cite{KD}. This group $E$ has 6 generators. In the table, one
-also finds the information
-
-$$
-H^2(Q,\Z) = \Z \oplus (\Z_2)^2 \oplus \Z_4
-$$
-
-for $Q=E/\langle d \rangle$ as above. Moreover, the $Q$--module $\Z$ is
-in fact the group $\langle d \rangle$, where the $Q$-action comes from
-conjugation inside $E$. In the case of groups of type 85, $\Z$ is a
-trivial $Q$-module. The following example demonstrates how to (re)compute
-this two-cohomology group $H^2(Q,\Z)$.
-
-\beginexample
-gap> G:=AlmostCrystallographicPcpGroup(4, "085", false);
-Pcp group with orders [ 2, 4, 0, 0, 0, 0 ]
-gap> GroupGeneratedByd:=Subgroup(G, [G.6] );
-Pcp group with orders [ 0 ]
-gap> Q:=G/GroupGeneratedByd;
-Pcp group with orders [ 2, 4, 0, 0, 0 ]
-gap> action:=List( Pcp(Q), x -> [[1]] );
-[ [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ] ]
-gap> C:=CRRecordByMats( Q, action);;
-gap> TwoCohomologyCR( C ).factor.rels;
-[ 2, 2, 4, 0 ]
-\endexample
-
-This last line gives us the abelian invariants of the second
-cohomology group $H^2(Q,\Z)$. So we should read this line as
-
-$$
-H^2(Q,\Z) = \Z_2 \oplus \Z_2 \oplus \Z_4 \oplus \Z
-$$
-
-which indeed coincides with the information in \cite{KD}.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{Example computations III}
-
-As another application of the capabilities of the combination of
-`aclib' and {\sf polycyclic} we check some computations of \cite{DM}.
-
-Section 5 of the paper \cite{DM} is completely devoted to an example
-of the computation of the $P$-localization of a virtually nilpotent group,
-where $P$ is a set of primes. Although it is not our intention to
-develop the theory of $P$-localization of groups at this place, let us
-summarize some of the main results concerning this topic here.
-
-For a set of primes $P$, we say that $n \in P$ if and only if $n$ is
-a product of primes in $P$. A group $G$ is said to be $P$-local if and
-only if the map $\mu_n:G\rightarrow G: g \mapsto g^n$ is bijective for
-all $n \in P'$, where $P'$ is the set of all primes not in $P$. The
-$P$-localization of a group $G$, is a $P$-local group $G_P$ together
-with a morphism $\alpha :G \rightarrow G_P$ which satisfy the following
-universal property: For each $P$-local group $L$ and any morphism
-$\varphi: G \rightarrow L$, there exists a unique morphism $\psi:G_P
-\rightarrow L$, such that $\psi \circ \alpha = \varphi$.
-
-This concept of localization is well developed for finite groups and
-for nilpotent groups. For a finite group $G$, the $P$-localization is
-the largest quotient of $G$, having no elements with an order belonging to
-$P'$ (the morphism $\alpha$, mentioned above is the natural projection).
-
-In \cite{DM} a contribution is made towards the localization of virtually
-nilpotent groups. The theory developed in the paper is then illustrated
-in the last section of the paper by means of the computation of the
-$P$-localization of an almost crystallographic group. For their example
-the authors have chosen an almost crystallographic group $G$ of dimension 3
-and type 17. For the set of parameters $(k_1,k_2,k_3,k_4)$ they have
-considered all cases of the form $(k_1,k_2,k_3,k_4)=(2,0,0,k_4)$.
-
-Here we will check their computations in two cases $k_4=0$ and $k_4=1$
-using the set of primes $P=\{2\}$. The holonomy group of these almost
-crystallographic groups $G$ is the dihedral group ${\cal D}_6$ of order
-12. Thus there is a short exact sequence of the form
-$$ 1 \rightarrow {\rm Fitt}(G) \rightarrow G
- \rightarrow {\cal D}_6 \rightarrow 1. $$
-
-As a first step in their computation, Descheemaeker and Malfait determine
-the group $I_{P'}{\cal D}_6$, which is the unique subgroup of order 3 in
-${\cal D}_6$. One of the main objects in \cite{DM} is the group $K=p^{-1}
-(I_{P'}{\cal D}_6)$, where $p$ is the natural projection of $G$ onto its
-holonomy group. It is known that the $P$-localization of $G$ coincides
-with the $P$-localization of $G/\gamma_3(K)$, where $\gamma_3(K)$ is the
-third term in the lower central series of $K$. As $G/\gamma_3(K)$ is
-finite in this example, we exactly know what this $P$-localization is.
-Let us now show, how GAP can be used to compute this $P$-localization in
-two cases:
-
-\medskip
-First case: The parameters are $(k_1,k_2,k_3,k_4)=(2,0,0,0)$
-\beginexample
-gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,0] );
-Pcp group with orders [ 2, 6, 0, 0, 0 ]
-gap> projection := NaturalHomomorphismOnHolonomyGroup( G );
-[ g1, g2, g3, g4, g5 ] -> [ g1, g2, identity, identity, identity ]
-gap> F := HolonomyGroup( G );
-Pcp group with orders [ 2, 6 ]
-gap> IPprimeD6 := Subgroup( F , [F.2^2] );
-Pcp group with orders [ 3 ]
-gap> K := PreImage( projection, IPprimeD6 );
-Pcp group with orders [ 3, 0, 0, 0 ]
-gap> PrintPcpPresentation( K );
-pcp presentation on generators [ g2^2, g3, g4, g5 ]
-g2^2 ^ 3 = identity
-g3 ^ g2^2 = g3^-1*g4^-1
-g3 ^ g2^2^-1 = g4*g5^-2
-g4 ^ g2^2 = g3*g5^2
-g4 ^ g2^2^-1 = g3^-1*g4^-1*g5^2
-g4 ^ g3 = g4*g5^2
-g4 ^ g3^-1 = g4*g5^-2
-gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));
-Pcp group with orders [ 0, 0, 0 ]
-gap> quotient := G/Gamma3K;
-Pcp group with orders [ 2, 6, 3, 3, 2 ]
-gap> S := SylowSubgroup( quotient, 3);
-Pcp group with orders [ 3, 3, 3 ]
-gap> N := NormalClosure( quotient, S);
-Pcp group with orders [ 3, 3, 3 ]
-gap> localization := quotient/N;
-Pcp group with orders [ 2, 2, 2 ]
-gap> PrintPcpPresentation( localization );
-pcp presentation on generators [ g1, g2, g3 ]
-g1 ^ 2 = identity
-g2 ^ 2 = identity
-g3 ^ 2 = identity
-\endexample
-This shows that $G_P\cong \Z_2^3$.
-
-\medskip
-
-Second case: The parameters are $(k_1,k_2,k_3,k_4)=(2,0,0,1)$
-\beginexample
-gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,1]);;
-gap> projection := NaturalHomomorphismOnHolonomyGroup( G );;
-gap> F := HolonomyGroup( G );;
-gap> IPprimeD6 := Subgroup( F , [F.2^2] );;
-gap> K := PreImage( projection, IPprimeD6 );;
-gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));;
-gap> quotient := G/Gamma3K;;
-gap> S := SylowSubgroup( quotient, 3);;
-gap> N := NormalClosure( quotient, S);;
-gap> localization := quotient/N;
-Pcp group with orders [ 2, 2, 2 ]
-gap> PrintPcpPresentation( localization );
-pcp presentation on generators [ g1, g2, g3 ]
-g1 ^ 2 = identity
-g2 ^ 2 = g3
-g3 ^ 2 = identity
-g2 ^ g1 = g2*g3
-g2 ^ g1^-1 = g2*g3
-\endexample
-
-In this case, we see that $G_P={\cal D}_4$.
-
-\medskip
-
-The reader can check that these results coincide with those obtained in
-\cite{DM}. Note also that we used a somewhat different scheme to compute
-this localization than the one used in \cite{DM}. We invite the reader to
-check the same computations, tracing exactly the steps made in \cite{DM}.
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%E Emacs . . . . . . . . . . . . . . . . . . . . . local emacs variables
-%%
-%% Local Variables:
-%% fill-column: 73
-%% End:
-%%
-
-
-
-
-
-
diff --git a/doc/examp.xml b/doc/examp.xml
new file mode 100644
index 0000000..5d5be87
--- /dev/null
+++ b/doc/examp.xml
@@ -0,0 +1,201 @@
+
+Example computations with almost crystallographic groups
+
+Example computations I
+Using the functions available for pcp groups in the &Polycyclic; package
+it is now easy to redo some of the calculations of . As a
+first example we check whether the groups indicated
+as torsion free in are also determined as torsion free
+ones by &GAP;. In these almost Bieberbach groups are listed as
+AB-groups
. So for type 013
these are the groups with parameters
+(k,0,1,0,1,0) where k is an even integer. Let's look at some examples
+in &GAP;:
+ G:=AlmostCrystallographicPcpDim4("013",[8,0,1,0,1,0]);
+Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
+gap> IsTorsionFree(G);
+true
+gap> G:=AlmostCrystallographicPcpDim4("013",[9,0,1,0,1,0]);
+Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
+gap> IsTorsionFree(G);
+false
+]]>
+Further, there is also some cohomology information in the tables
+of . In fact, the groups in this library were obtained
+as extensions E of the form
+
+
+1 \rightarrow &ZZ; \rightarrow E \rightarrow Q \rightarrow 1
+
+
+where, in the 4-dimensional case Q = E/\langle d \rangle. The
+cohomology information for the particular example above shows that
+the groups determined by a parameter set (k_1,k_2,k_3,k_4,k_5,k_6)
+are equivalent as extensions to the groups determined by the parameters
+(k_1, k_2 \bmod 2, k_3 \bmod 2, k_4 \bmod 2, k_5 \bmod 2, 0). This is
+also visible in finding torsion:
+ G:=AlmostCrystallographicPcpDim4("013",[10,0,2,0,1,0]);
+Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
+gap> IsTorsionFree(G);
+false
+gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,3,0,1,9]);
+Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
+gap> IsTorsionFree(G);
+true
+]]>
+
+
+Example computations II
+The computation of cohomology groups played an important role in the
+classification of the almost Bieberbach groups in . Using
+&GAP;, it is now possible to check these computations. As an example we
+consider the 4-dimensional almost crystallographic group of type 85 on
+page 202 of . This group E has 6 generators. In the table, one
+also finds the information
+
+
+H^2(Q,&ZZ;) = &ZZ; \oplus (&ZZ;_2)^2 \oplus &ZZ;_4
+
+
+for Q=E/\langle d \rangle as above. Moreover, the Q-module &ZZ; is
+in fact the group \langle d \rangle, where the Q-action comes from
+conjugation inside E. In the case of groups of type 85, &ZZ; is a
+trivial Q-module. The following example demonstrates how to (re)compute
+this two-cohomology group H^2(Q,&ZZ;).
+ G:=AlmostCrystallographicPcpGroup(4, "085", false);
+Pcp-group with orders [ 2, 4, 0, 0, 0, 0 ]
+gap> GroupGeneratedByd:=Subgroup(G, [G.6] );
+Pcp-group with orders [ 0 ]
+gap> Q:=G/GroupGeneratedByd;
+Pcp-group with orders [ 2, 4, 0, 0, 0 ]
+gap> action:=List( Pcp(Q), x -> [[1]] );
+[ [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ], [ [ 1 ] ] ]
+gap> C:=CRRecordByMats( Q, action);;
+gap> TwoCohomologyCR( C ).factor.rels;
+[ 2, 2, 4, 0 ]
+]]>
+This last line gives us the abelian invariants of the second
+cohomology group H^2(Q,&ZZ;). So we should read this line as
+
+
+H^2(Q,&ZZ;) = &ZZ;_2 \oplus &ZZ;_2 \oplus &ZZ;_4 \oplus &ZZ;
+
+
+which indeed coincides with the information in .
+
+
+Example computations III
+As another application of the capabilities of the combination of
+&AClib; and &Polycyclic; we check some computations of .
+
+Section 5 of the paper is completely devoted to an example
+of the computation of the P-localization of a virtually nilpotent group,
+where P is a set of primes. Although it is not our intention to
+develop the theory of P-localization of groups at this place, let us
+summarize some of the main results concerning this topic here.
+
+For a set of primes P, we say that n \in P if and only if n is
+a product of primes in P. A group G is said to be P-local if and
+only if the map \mu_n:G\rightarrow G: g \mapsto g^n is bijective for
+all n \in P', where P' is the set of all primes not in P. The
+P-localization of a group G, is a P-local group G_P together
+with a morphism \alpha :G \rightarrow G_P which satisfy the following
+universal property: For each P-local group L and any morphism
+\varphi: G \rightarrow L, there exists a unique morphism \psi:G_P
+\rightarrow L, such that \psi \circ \alpha = \varphi.
+
+This concept of localization is well developed for finite groups and
+for nilpotent groups. For a finite group G, the P-localization is
+the largest quotient of G, having no elements with an order belonging to
+P' (the morphism \alpha, mentioned above is the natural projection).
+
+In a contribution is made towards the localization of virtually
+nilpotent groups. The theory developed in the paper is then illustrated
+in the last section of the paper by means of the computation of the
+P-localization of an almost crystallographic group. For their example
+the authors have chosen an almost crystallographic group G of dimension 3
+and type 17. For the set of parameters (k_1,k_2,k_3,k_4) they have
+considered all cases of the form (k_1,k_2,k_3,k_4)=(2,0,0,k_4).
+
+Here we will check their computations in two cases k_4=0 and k_4=1
+using the set of primes P=\{2\}. The holonomy group of these almost
+crystallographic groups G is the dihedral group {\cal D}_6 of order
+12. Thus there is a short exact sequence of the form
+ 1 \rightarrow Fitt(G) \rightarrow G
+ \rightarrow {\cal D}_6 \rightarrow 1.
+
+As a first step in their computation, Descheemaeker and Malfait determine
+the group I_{P'}{\cal D}_6, which is the unique subgroup of order 3 in
+{\cal D}_6. One of the main objects in is the group K=p^{-1}
+(I_{P'}{\cal D}_6), where p is the natural projection of G onto its
+holonomy group. It is known that the P-localization of G coincides
+with the P-localization of G/\gamma_3(K), where \gamma_3(K) is the
+third term in the lower central series of K. As G/\gamma_3(K) is
+finite in this example, we exactly know what this P-localization is.
+Let us now show how &GAP; can be used to compute this P-localization in
+two cases:
+
+First case: The parameters are (k_1,k_2,k_3,k_4)=(2,0,0,0)
+ G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,0] );
+Pcp-group with orders [ 2, 6, 0, 0, 0 ]
+gap> projection := NaturalHomomorphismOnHolonomyGroup( G );
+[ g1, g2, g3, g4, g5 ] -> [ g1, g2, id, id, id ]
+gap> F := HolonomyGroup( G );
+Pcp-group with orders [ 2, 6 ]
+gap> IPprimeD6 := Subgroup( F , [F.2^2] );
+Pcp-group with orders [ 3 ]
+gap> K := PreImage( projection, IPprimeD6 );
+Pcp-group with orders [ 3, 0, 0, 0 ]
+gap> PrintPcpPresentation( K );
+g1^3 = id
+g2 ^ g1 = g2^-1 * g3^-1
+g3 ^ g1 = g2 * g4^2
+g3 ^ g2 = g3 * g4^2
+g3 ^ g2^-1 = g3 * g4^-2
+gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));
+Pcp-group with orders [ 0, 0, 0 ]
+gap> quotient := G/Gamma3K;
+Pcp-group with orders [ 2, 6, 3, 3, 2 ]
+gap> S := SylowSubgroup( quotient, 3);
+Pcp-group with orders [ 3, 3, 3 ]
+gap> N := NormalClosure( quotient, S);
+Pcp-group with orders [ 3, 3, 3 ]
+gap> localization := quotient/N;
+Pcp-group with orders [ 2, 2, 2 ]
+gap> PrintPcpPresentation( localization );
+g1^2 = id
+g2^2 = id
+g3^2 = id
+]]>
+This shows that G_P\cong &ZZ;_2^3.
+
+Second case: The parameters are (k_1,k_2,k_3,k_4)=(2,0,0,1)
+ G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,1]);;
+gap> projection := NaturalHomomorphismOnHolonomyGroup( G );;
+gap> F := HolonomyGroup( G );;
+gap> IPprimeD6 := Subgroup( F , [F.2^2] );;
+gap> K := PreImage( projection, IPprimeD6 );;
+gap> Gamma3K := CommutatorSubgroup( K, CommutatorSubgroup( K, K ));;
+gap> quotient := G/Gamma3K;;
+gap> S := SylowSubgroup( quotient, 3);;
+gap> N := NormalClosure( quotient, S);;
+gap> localization := quotient/N;
+Pcp-group with orders [ 2, 2, 2 ]
+gap> PrintPcpPresentation( localization );
+g1^2 = id
+g2^2 = g3
+g3^2 = id
+g2 ^ g1 = g2 * g3
+]]>
+In this case, we see that G_P={\cal D}_4.
+
+The reader can check that these results coincide with those obtained in
+. Note also that we used a somewhat different scheme to compute
+this localization than the one used in . We invite the reader to
+check the same computations, tracing exactly the steps made in .
+
+
diff --git a/doc/intro.tex b/doc/intro.tex
deleted file mode 100644
index 7eadeed..0000000
--- a/doc/intro.tex
+++ /dev/null
@@ -1,100 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%W aclib.tex Karel Dekimpe
-%W Bettina Eick
-%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Chapter{The Almost Crystallographic Groups Package}
-
-A group is called *almost crystallographic* if it is a finitely generated
-nilpotent-by-finite group without non-trivial finite normal subgroups. An
-important special case of almost crystallographic groups are the *almost
-Bieberbach groups*: these are almost crystallographic and torsion free.
-
-By its definition, an almost crystallographic group $G$ has a finitely
-generated nilpotent normal subgroup $N$ of finite index. Clearly, $N$ is
-polycyclic and thus has a polycyclic series. The number of infinite cyclic
-factors in such a series for $N$ is an invariant of $G$: the *Hirsch length*
-of $G$.
-
-For each almost crystallographic group of Hirsch length 3 and 4 there exists
-a representation as a rational matrix group in dimension 4 or 5, respectively.
-These representations can be considered as affine representations of dimension
-3 or 4. Via these representations, the almost crystallographic groups act
-(properly discontinuously) on $\R^3$ or $\R^4$. That is one reason to define
-the *dimension* of an almost crystallographic group as its Hirsch length.
-
-The 3-dimensional and a part of the 4-dimensional almost crystallographic
-groups have been classified by K. Dekimpe in \cite{KD}. This classification
-includes all almost Bieberbach groups in dimension 3 and 4. It is the first
-central aim of this package to give access to the resulting library of groups.
-The groups in this electronic catalog are available in two different
-representations: as rational matrix groups and as polycyclically presented
-groups. While the first representation is the more natural one, the latter
-description facilitates effective computations with the considered groups
-using the methods of the {\sf Polycyclic} package.
-
-The second aim of this package is to introduce a variety of algorithms for
-computations with polycyclically presented almost crystallographic groups.
-These algorithms supplement the methods available in the {\sf Polycyclic}
-package and give access to some methods which are interesting specifically
-for almost crystallographic groups. In particular, we present methods to
-compute Betti numbers and to construct or check the existence of certain
-extensions of almost crystallographic groups. We note that these methods
-have been applied in \cite{DE1} and \cite{DE2} for computations with
-almost crystallographic groups.
-
-Finally, we remark that almost crystallographic groups can be seen as natural
-generalizations of crystallographic groups. A library of crystallographic
-groups and algorithms to compute with crystallographic groups are available
-in the \GAP\ packages `cryst', `carat' and `crystcat'.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\Section{More about almost crystallographic groups}
-
-Almost crystallographic groups were first discussed in the theory of
-actions on Lie groups. We recall the original definition here briefly
-and we refer to \cite{AUS}, \cite{KD} and \cite{LEE} for more details.
-
-Let $L$ be a connected and simply connected nilpotent Lie group. For
-example, the 3-dimensional Heisenberg group, consisting of all upper
-unitriangular $3\times3$--matrices with real entries is of this type.
-Then $L\rtimes {\rm Aut}(L)$ acts affinely (on the left) on $L$ via
-$$ \forall l,l'\in L,\forall \alpha \in {\rm Aut}(L):\;
- ^{(l,\alpha)}l'=l \, \alpha(l'). $$
-
-Let $C$ be a maximal compact subgroup of ${\rm Aut}(L)$. Then a subgroup $G$
-of $L \rtimes C$ is said to be an almost crystallographic group if and only
-if the action of $G$ on $L$, induced by the action of $L\rtimes {\rm Aut}(L)$,
-is properly discontinuous and the quotient space $G \backslash L$ is compact.
-One recovers the situation of the ordinary crystallographic groups by taking
-$L={\Bbb R}^n$, for some $n$, and $C=O(n)$, the orthogonal group.
-
-More generally, we say that an abstract group is an almost crystallographic
-group if it can be realized as a genuine almost crystallographic subgroup
-of some $L \rtimes C$. In the following theorem we outline some algebraic
-characterizations of almost crystallographic groups; see Theorem 3.1.3 of
-\cite{KD}. Recall that the *Fitting subgroup Fitt$(G)$* of a
-polycyclic-by-finite group $G$ is its unique maximal normal nilpotent
-subgroup.
-
-*Theorem.*
-The following are equivalent for a polycyclic-by-finite group $G$:
-\beginlist
-\item{(1)} $G$ is an almost crystallographic group.
-\item{(2)} Fitt$(G)$ is torsion free and of finite index in $G$.
-\item{(3)} $G$ contains a torsion free nilpotent normal subgroup $N$
-of finite index in $G$ with $C_G(N)$ torsion free.
-\item{(4)} $G$ has a nilpotent subgroup of finite index and there
-are no non-trivial finite normal subgroups in $G$.
-\endlist
-
-In particular, if $G$ is almost crystallographic, then $G / Fitt(G)$
-is finite. This factor is called the *holonomy group* of $G$.
-
-The dimension of an almost crystallographic group equals the dimension
-of the Lie group $L$ above which coincides also with the Hirsch length
-of the polycyclic-by-finite group. This library therefore contains
-families of virtually nilpotent groups of Hirsch length 3 and 4.
-
diff --git a/doc/intro.xml b/doc/intro.xml
new file mode 100644
index 0000000..d4e3a30
--- /dev/null
+++ b/doc/intro.xml
@@ -0,0 +1,94 @@
+
+The Almost Crystallographic Groups Package
+A group is called almost crystallographic if it is a finitely generated
+nilpotent-by-finite group without non-trivial finite normal subgroups. An
+important special case of almost crystallographic groups are the almost
+Bieberbach groups: these are almost crystallographic and torsion free.
+
+By its definition, an almost crystallographic group G has a finitely
+generated nilpotent normal subgroup N of finite index. Clearly, N is
+polycyclic and thus has a polycyclic series. The number of infinite cyclic
+factors in such a series for N is an invariant of G: the Hirsch length
+of G.
+
+For each almost crystallographic group of Hirsch length 3 and 4 there exists
+a representation as a rational matrix group in dimension 4 or 5, respectively.
+These representations can be considered as affine representations of dimension
+3 or 4. Via these representations, the almost crystallographic groups act
+(properly discontinuously) on &RR;^3 or &RR;^4. That is one reason to define
+the dimension of an almost crystallographic group as its Hirsch length.
+
+The 3-dimensional and a part of the 4-dimensional almost crystallographic
+groups have been classified by K. Dekimpe in . This classification
+includes all almost Bieberbach groups in dimension 3 and 4. It is the first
+central aim of this package to give access to the resulting library of groups.
+The groups in this electronic catalog are available in two different
+representations: as rational matrix groups and as polycyclically presented
+groups. While the first representation is the more natural one, the latter
+description facilitates effective computations with the considered groups
+using the methods of the &Polycyclic; package.
+
+The second aim of this package is to introduce a variety of algorithms for
+computations with polycyclically presented almost crystallographic groups.
+These algorithms supplement the methods available in the &Polycyclic;
+package and give access to some methods which are interesting specifically
+for almost crystallographic groups. In particular, we present methods to
+compute Betti numbers and to construct or check the existence of certain
+extensions of almost crystallographic groups. We note that these methods
+have been applied in and for computations with
+almost crystallographic groups.
+
+Finally, we remark that almost crystallographic groups can be seen as natural
+generalizations of crystallographic groups. A library of crystallographic
+groups and algorithms to compute with crystallographic groups are available
+in the &GAP; packages &Cryst;, &CaratInterface; and &CrystCat;.
+
+More about almost crystallographic groups
+Almost crystallographic groups were first discussed in the theory of
+actions on Lie groups. We recall the original definition here briefly
+and we refer to , and for more details.
+
+Let L be a connected and simply connected nilpotent Lie group. For
+example, the 3-dimensional Heisenberg group, consisting of all upper
+unitriangular 3\times3-matrices with real entries is of this type.
+Then L\rtimes Aut(L) acts affinely (on the left) on L via
+ \forall l,l'\in L,\forall \alpha \in Aut(L): \;
+ ^{(l,\alpha)}l'=l \alpha(l').
+
+Let C be a maximal compact subgroup of Aut(L). Then a subgroup G
+of L \rtimes C is said to be an almost crystallographic group if and only
+if the action of G on L, induced by the action of L\rtimes Aut(L),
+is properly discontinuous and the quotient space G \setminus L is compact.
+One recovers the situation of the ordinary crystallographic groups by taking
+L=&RR;^n, for some n, and C=O(n), the orthogonal group.
+
+More generally, we say that an abstract group is an almost crystallographic
+group if it can be realized as a genuine almost crystallographic subgroup
+of some L \rtimes C. In the following theorem we outline some algebraic
+characterizations of almost crystallographic groups; see Theorem 3.1.3 of
+. Recall that the Fitting subgroup Fitt(G) of a
+polycyclic-by-finite group G is its unique maximal normal nilpotent
+subgroup.
+
+Theorem.
+The following are equivalent for a polycyclic-by-finite group G:
+
+- G is an almost crystallographic group.
+
+- Fitt(G) is torsion free and of finite index in G.
+
+- G contains a torsion free nilpotent normal subgroup N
+of finite index in G with C_G(N) torsion free.
+
+- G has a nilpotent subgroup of finite index and there
+are no non-trivial finite normal subgroups in G.
+
+In particular, if G is almost crystallographic, then G / Fitt(G)
+is finite. This factor is called the holonomy group of G.
+
+The dimension of an almost crystallographic group equals the dimension
+of the Lie group L above which coincides also with the Hirsch length
+of the polycyclic-by-finite group. This library therefore contains
+families of virtually nilpotent groups of Hirsch length 3 and 4.
+
+
diff --git a/doc/make_doc b/doc/make_doc
deleted file mode 100755
index 6d374af..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 aclib . ../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 2d0bf0c..0000000
--- a/doc/manual.tex
+++ /dev/null
@@ -1,87 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F gapomacro . . . . . . . . . . . . . . . . read the GAP macro package
-%%
-\input ../../../doc/gapmacro
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F BeginningOfBook . . . . . . . . . . . . . . . . . . . start the book
-%%
-\BeginningOfBook{aclib}
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F UseReferences . . . . . . . . . . . . . . . . . . specify references
-%%
-\UseReferences{../../../doc/ref}
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F TitlePage . . . . . . . . . . . . . . . . . . . . . . nice title page
-%%
-\TitlePage{
- \centerline{\titlefont Aclib} \vfill
- \centerline{\titlefont ---}\vfill
- \centerline{\titlefont A GAP4 Package} \vfill
- \centerline{\secfont Computations with} \bigskip
- \centerline{\secfont Almost Crystallographic Groups} \vfill
- \centerline{\secfont by}\vfill
- \centerline{\secfont Karel Dekimpe (KU Leuven Kulak)}\medskip
- \centerline{\secfont and }\medskip
- \centerline{\secfont Bettina Eick (Braunschweig)}
-}
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F TableOfContents . . . . . . . . . . . . generate a table of contents
-%%
-\OneColumnTableOfContents
-%\TableOfContents
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F FrontMatter . . . . . . . . . . . . . . . . . . . . .
-%%
-\FrontMatter
-\immediate\write\citeout{\bs bibdata{aclib}}
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F Chapters
-%%
-\Chapters
-\Input{intro}
-\Input{algos}
-\Input{aclib}
-\Input{examp}
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F Appendices
-%%
-\Appendices
-\Bibliography
-\Index
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%F EndOfBook . . . . . . . . . . . . . . . . . . . . . . . . . that's it
-%%
-\EndOfBook
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%E manual.tex . . . . . . . . . . . . . . . . . . . . . . . . ends here
diff --git a/makedoc.g b/makedoc.g
new file mode 100644
index 0000000..e879ce2
--- /dev/null
+++ b/makedoc.g
@@ -0,0 +1,27 @@
+#############################################################################
+##
+## 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 := rec(scan_dirs := []),
+ gapdoc := rec(main := "main", files := []),
+ extract_examples := true,
+ scaffold := rec(
+ includes := [
+ "intro.xml",
+ "algos.xml",
+ "aclib.xml",
+ "examp.xml"
+ ],
+ bib := "aclib.bib",
+ ),
+));
+
+QuitGap();
diff --git a/tst/manual.example-3.tst b/tst/aclib01.tst
similarity index 78%
rename from tst/manual.example-3.tst
rename to tst/aclib01.tst
index b6f2ff4..21f123a 100644
--- a/tst/manual.example-3.tst
+++ b/tst/aclib01.tst
@@ -1,4 +1,16 @@
-gap> START_TEST("");
+# AClib, chapter 3
+#
+# 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("aclib01.tst");
+
+# doc/aclib.xml:36-61
gap> G := AlmostCrystallographicGroup( 4, 50, [ 1, -4, 1, 2 ] );
gap> DimensionOfMatrixGroup( G );
@@ -23,10 +35,14 @@ gap> ACDim4Types[50];
"076"
gap> ACDim4Param[50];
4
+
+# doc/aclib.xml:103-108
gap> G := AlmostCrystallographicPcpGroup( 4, 50, [ 1, -4, 1, 2 ] );
Pcp-group with orders [ 4, 0, 0, 0, 0 ]
gap> Cgs(G);
[ g1, g2, g3, g4, g5 ]
+
+# doc/aclib.xml:109-122
gap> F := FittingSubgroup( G );
Pcp-group with orders [ 0, 0, 0, 0 ]
gap> Centre(F);
@@ -39,6 +55,8 @@ gap> UpperCentralSeries(F);
Pcp-group with orders [ ] ]
gap> MinimalGeneratingSet(F);
[ g2, g3, g4 ]
+
+# doc/aclib.xml:123-132
gap> H := HolonomyGroup( G );
Pcp-group with orders [ 4 ]
gap> hom := NaturalHomomorphismOnHolonomyGroup( G );
@@ -47,25 +65,16 @@ gap> U := Subgroup( H, [Pcp(H)[1]^2] );
Pcp-group with orders [ 2 ]
gap> PreImage( hom, U );
Pcp-group with orders [ 2, 0, 0, 0, 0 ]
-gap> Reset(GlobalMersenneTwister,1);;
-gap> G := AlmostCrystallographicGroup( 4, 70, false );
-
-gap> IsAlmostCrystallographic(G);
-true
-gap> AlmostCrystallographicInfo(G);
-rec( dim := 4, param := [ -3, 2, -1, -2, -1 ], type := 70 )
-gap> G := AlmostCrystallographicPcpGroup( 4, 70, false );
-Pcp-group with orders [ 6, 0, 0, 0, 0 ]
-gap> IsAlmostCrystallographic(G);
-true
-gap> AlmostCrystallographicInfo(G);
-rec( dim := 4, param := [ -1, 1, -4, 1, 0 ], type := 70 )
+
+# doc/aclib.xml:210-217
gap> ACDim3Funcs[15];
function( k1, k2, k3, k4 ) ... end
gap> ACDim3Funcs[15](1,1,1,1);
gap> ACPcpDim3Funcs[1](1);
Pcp-group with orders [ 0, 0, 0 ]
+
+# doc/aclib.xml:275-284
gap> G:=AlmostCrystallographicDim4("013",[8,0,1,0,1,0]);
gap> G.5;
@@ -76,4 +85,4 @@ gap> G.6;
[ 0, 0, 0, -1, 0 ], [ 0, 0, 0, 0, 1 ] ]
#
-gap> STOP_TEST( "" ,1);
+gap> STOP_TEST("aclib01.tst", 1);
diff --git a/tst/manual.example-4.tst b/tst/aclib02.tst
similarity index 80%
rename from tst/manual.example-4.tst
rename to tst/aclib02.tst
index 1d18073..769dad4 100644
--- a/tst/manual.example-4.tst
+++ b/tst/aclib02.tst
@@ -1,4 +1,16 @@
-gap> START_TEST("");
+# AClib, chapter 4
+#
+# 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("aclib02.tst");
+
+# doc/examp.xml:13-22
gap> G:=AlmostCrystallographicPcpDim4("013",[8,0,1,0,1,0]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
@@ -7,6 +19,8 @@ gap> G:=AlmostCrystallographicPcpDim4("013",[9,0,1,0,1,0]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
false
+
+# doc/examp.xml:37-46
gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,2,0,1,0]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
@@ -15,6 +29,8 @@ gap> G:=AlmostCrystallographicPcpDim4("013",[10,0,3,0,1,9]);
Pcp-group with orders [ 2, 2, 0, 0, 0, 0 ]
gap> IsTorsionFree(G);
true
+
+# doc/examp.xml:66-78
gap> G:=AlmostCrystallographicPcpGroup(4, "085", false);
Pcp-group with orders [ 2, 4, 0, 0, 0, 0 ]
gap> GroupGeneratedByd:=Subgroup(G, [G.6] );
@@ -26,6 +42,8 @@ gap> action:=List( Pcp(Q), x -> [[1]] );
gap> C:=CRRecordByMats( Q, action);;
gap> TwoCohomologyCR( C ).factor.rels;
[ 2, 2, 4, 0 ]
+
+# doc/examp.xml:141-172
gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,0] );
Pcp-group with orders [ 2, 6, 0, 0, 0 ]
gap> projection := NaturalHomomorphismOnHolonomyGroup( G );
@@ -56,6 +74,8 @@ gap> PrintPcpPresentation( localization );
g1^2 = id
g2^2 = id
g3^2 = id
+
+# doc/examp.xml:176-193
gap> G := AlmostCrystallographicPcpGroup(3, 17, [2,0,0,1]);;
gap> projection := NaturalHomomorphismOnHolonomyGroup( G );;
gap> F := HolonomyGroup( G );;
@@ -74,4 +94,4 @@ g3^2 = id
g2 ^ g1 = g2 * g3
#
-gap> STOP_TEST( "" ,1);
+gap> STOP_TEST("aclib02.tst", 1);