polenta-1.3.11/ 000755 000766 000024 00000000000 14775712162 013542 5 ustar 00mhorn staff 000000 000000 polenta-1.3.11/PackageInfo.g 000644 000766 000024 00000007550 14775712140 016064 0 ustar 00mhorn staff 000000 000000 #############################################################################
##
## PackageInfo.g GAP4 Package `Polenta' Bjoern Assmann
##
SetPackageInfo( rec(
PackageName := "Polenta",
Subtitle := "Polycyclic presentations for matrix groups",
Version := "1.3.11",
Date := "10/04/2025", # dd/mm/yyyy format
License := "GPL-2.0-or-later",
Persons := [
rec(
LastName := "Assmann",
FirstNames := "Björn",
IsAuthor := true,
IsMaintainer := false,
),
rec( LastName := "Horn",
FirstNames := "Max",
IsAuthor := false,
IsMaintainer := true,
Email := "mhorn@rptu.de",
WWWHome := "https://www.quendi.de/math",
PostalAddress := Concatenation(
"Fachbereich Mathematik\n",
"RPTU Kaiserslautern-Landau\n",
"Gottlieb-Daimler-Straße 48\n",
"67663 Kaiserslautern\n",
"Germany" ),
Place := "Kaiserslautern, Germany",
Institution := "RPTU Kaiserslautern-Landau"
),
],
Status := "accepted",
CommunicatedBy := "Charles Wright (Eugene)",
AcceptDate := "08/2005",
PackageWWWHome := "https://gap-packages.github.io/polenta/",
README_URL := Concatenation(~.PackageWWWHome, "README.md"),
PackageInfoURL := Concatenation(~.PackageWWWHome, "PackageInfo.g"),
ArchiveURL := Concatenation("https://github.com/gap-packages/polenta/",
"releases/download/v", ~.Version,
"/polenta-", ~.Version),
ArchiveFormats := ".tar.gz .tar.bz2",
SourceRepository := rec(
Type := "git",
URL := "https://github.com/gap-packages/polenta"
),
IssueTrackerURL := Concatenation( ~.SourceRepository.URL, "/issues" ),
AbstractHTML :=
"The Polenta package provides methods to compute polycyclic presentations of matrix groups (finite or infinite). As a by-product, this package gives some functionality to compute certain module series for modules of solvable groups. For example, if G is a rational polycyclic matrix group, then we can compute the radical series of the natural Q[G]-module Q^d.",
PackageDoc := rec(
BookName := "Polenta",
ArchiveURLSubset := [ "doc" ],
HTMLStart := "doc/chap0_mj.html",
PDFFile := "doc/manual.pdf",
SixFile := "doc/manual.six",
LongTitle := "Polycyclic presentations for matrix groups",
),
Dependencies := rec(
GAP := ">= 4.7",
NeededOtherPackages := [[ "polycyclic", "2.10.1" ],
[ "alnuth" , "2.2.3"],
[ "radiroot", "2.4" ],
],
SuggestedOtherPackages := [ ["aclib", "1.0"]],
),
AvailabilityTest := ReturnTrue,
TestFile := "tst/testall.g",
Keywords := [
"polycyclic presentations",
"matrix groups",
"test solvability",
"triangularizable subgroup",
"unipotent subgroup",
"radical series",
"composition series of triangularizable groups"
],
AutoDoc := rec(
TitlePage := rec(
Copyright := "\
[AE05] Assmann, B. and Eick, B., Computing polycyclic presentations for polycyclic rational matrix groups, J. Symbolic Comput., 40 (6) (2005), 1269--1284.
[Ass03] Assmann, B.,
Polycyclic presentations for matrix groups,
Diplomarbeit,
TU Braunschweig
(2003)
(http://www.icm.tu-bs.de/ag_algebra/software/assmann).
[Eic01] Eick, B., Algorithms for Polycyclic Groups, Habilitationsschrift, Gesamthochschule Kassel (2001).
[EN00] Eick, B. and Nickel, W.,
Polycyclic
(2000)
(GAP package).
[Ost96] Ostheimer, G., Algorithms for Polycyclic-by-finite groups, Ph.D. thesis, Rutgers University (1996).
[Sim94] Sims, C. C., Computation with finitely presented groups, Cambridge University Press (1994).
generated by GAPDoc2HTML
polenta-1.3.11/doc/_entities.xml 000644 000766 000024 00000000057 14775712156 017021 0 ustar 00mhorn staff 000000 000000 Polenta'> polenta-1.3.11/doc/chap0_mj.html 000644 000766 000024 00000021453 14775712162 016663 0 ustar 00mhorn staff 000000 0000001.3.11
10 April 2025
Björn Assmann
© 2003-2007 by Björn Assmann
The Polenta package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
We appreciate very much all past and future comments, suggestions and contributions to this package and its documentation provided by GAP users and developers.
generated by GAPDoc2HTML
polenta-1.3.11/doc/chap2.html 000644 000766 000024 00000046430 14775712162 016201 0 ustar 00mhorn staff 000000 000000Groups defined by polycyclic presentations are called PcpGroups in GAP. We refer to the Polycyclic manual [EN00] for further background.
Suppose that a collection X of matrices of GL(d,R) is given, where the ring R is either ℚ,ℤ or a finite field. Let G= ⟨ X ⟩. If the group G is polycyclic, then the following functions determine a PcpGroup isomorphic to G.
‣ PcpGroupByMatGroup( G ) | ( operation ) |
G is a subgroup of GL(d,R) where R=ℚ,ℤ or F_q. If G is polycyclic, then this function determines a PcpGroup isomorphic to G. If G is not polycyclic, then this function returns fail.
‣ IsomorphismPcpGroup( G ) | ( method ) |
G is a subgroup of GL(d,R) where R=ℚ,ℤ or F_q. If G is polycyclic, then this function determines an isomorphism onto a PcpGroup. If G is not polycyclic, then this function returns fail.
Note that the method IsomorphismPcpGroup, installed in this package, cannot be applied directly to a group given by the function AlmostCrystallographicGroup. Please use POL_AlmostCrystallographicGroup (with the same parameters as AlmostCrystallographicGroup) instead.
‣ ImagesRepresentative( map, elm ) | ( method ) |
‣ ImageElm( map, elm ) | ( method ) |
‣ ImagesSet( map, elms ) | ( method ) |
Here map is an isomorphism from a polycyclic matrix group G onto a PcpGroup H calculated by IsomorphismPcpGroup (2.1-2). These methods can be used to compute with such an isomorphism. If the input elm is an element of G, then the function ImageElm can be used to compute the image of elm under map. If elm is not contained in G then the function ImageElm returns fail. The input pcpelm is an element of H.
‣ IsSolvableGroup( G ) | ( method ) |
G is a subgroup of GL(d,R) where R=ℚ,ℤ or F_q. This function tests if G is solvable and returns true or false.
‣ IsTriangularizableMatGroup( G ) | ( property ) |
G is a subgroup of GL(d,ℚ). This function tests if G is triangularizable (possibly over a finite field extension) and returns true or false.
‣ IsPolycyclicGroup( G ) | ( method ) |
G is a subgroup of GL(d,R) where R=ℚ,ℤ or F_q. This function tests if G is polycyclic and returns true or false.
Let G be a finitely generated solvable subgroup of GL(d,ℚ). The vector space ℚ^d is a module for the algebra ℚ[G]. The following functions provide the possibility to compute certain module series of ℚ^d. Recall that the radical Rad_G(ℚ^d) is defined to be the intersection of maximal ℚ[G]-submodules of ℚ^d. Also recall that the radical series
0=R_n < R_{n-1} < \dots < R_1 < R_0=ℚ^d
is defined by R_i+1:= Rad_G(R_i).
‣ RadicalSeriesSolvableMatGroup( G ) | ( operation ) |
This function returns a radical series for the ℚ[G]-module ℚ^d, where G is a solvable subgroup of GL(d,ℚ).
A radical series of ℚ^d can be refined to a homogeneous series.
‣ HomogeneousSeriesAbelianMatGroup( G ) | ( function ) |
A module is said to be homogeneous if it is the direct sum of pairwise irreducible isomorphic submodules. A homogeneous series of a module is a submodule series such that the factors are homogeneous. This function returns a homogeneous series for the ℚ[G]-module ℚ^d, where G is an abelian subgroup of GL(d,ℚ).
‣ HomogeneousSeriesTriangularizableMatGroup( G ) | ( function ) |
A module is said to be homogeneous if it is the direct sum of pairwise irreducible isomorphic submodules. A homogeneous series of a module is a submodule series such that the factors are homogeneous. This function returns a homogeneous series for the ℚ[G]-module ℚ^d, where G is a triangularizable subgroup of GL(d,ℚ).
A homogeneous series can be refined to a composition series.
‣ CompositionSeriesAbelianMatGroup( G ) | ( function ) |
A composition series of a module is a submodule series such that the factors are irreducible. This function returns a composition series for the ℚ[G]-module ℚ^d, where G is an abelian subgroup of GL(d,ℚ).
‣ CompositionSeriesTriangularizableMatGroup( G ) | ( function ) |
A composition series of a module is a submodule series such that the factors are irreducible. This function returns a composition series for the ℚ[G]-module ℚ^d, where G is a triangularizable subgroup of GL(d,ℚ).
‣ SubgroupsUnipotentByAbelianByFinite( G ) | ( operation ) |
G is a subgroup of GL(d,R) where R=ℚ or ℤ. If G is polycyclic, then this function returns a record containing two normal subgroups T and U of G. The group T is unipotent-by-abelian (and thus triangularizable) and of finite index in G. The group U is unipotent and is such that T/U is abelian. If G is not polycyclic, then the algorithm returns fail.
‣ PolExamples( l ) | ( function ) |
Returns some examples for polycyclic rational matrix groups, where l is an integer between 1 and 24. These can be used to test the functions in this package. Some of the properties of the examples are summarised in the following table.
PolExamples number generators subgroup of Hirsch length
1 3 GL(4,Z) 6
2 2 GL(5,Z) 6
3 2 GL(4,Q) 4
4 2 GL(5,Q) 6
5 9 GL(16,Z) 3
6 6 GL(4,Z) 3
7 6 GL(4,Z) 3
8 7 GL(4,Z) 3
9 5 GL(4,Q) 3
10 4 GL(4,Q) 3
11 5 GL(4,Q) 3
12 5 GL(4,Q) 3
13 5 GL(5,Q) 4
14 6 GL(5,Q) 4
15 6 GL(5,Q) 4
16 5 GL(5,Q) 4
17 5 GL(5,Q) 4
18 5 GL(5,Q) 4
19 5 GL(5,Q) 4
20 7 GL(16,Z) 3
21 5 GL(16,Q) 3
22 4 GL(16,Q) 3
23 5 GL(16,Q) 3
24 5 GL(16,Q) 3
generated by GAPDoc2HTML
polenta-1.3.11/doc/install.xml 000644 000766 000024 00000004411 14775712140 016473 0 ustar 00mhorn staff 000000 000000In this section we outline three example computations with functions from the previous chapter.
gap> mats := [ [ [ 1, 0, -1/2, 0 ], [ 0, 1, 0, 1 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ], [ [ 1, 1/2, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 1 ], [ 0, 0, 0, 1 ] ], [ [ 1, 0, 0, 1 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ], [ [ 1, -1/2, -3, 7/6 ], [ 0, 1, -1, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ] ], [ [ -1, 3, 3, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ] ] ]; gap> G := Group( mats ); <matrix group with 5 generators> # calculate an isomorphism from G to a pcp-group gap> nat := IsomorphismPcpGroup( G );; gap> H := Image( nat ); Pcp-group with orders [ 2, 2, 3, 5, 5, 5, 0, 0, 0 ] gap> h := GeneratorsOfGroup( H ); [ g1, g2, g3, g4, g5, g6, g7, g8, g9] gap> mats2 := List( h, x -> PreImage( nat, x ) );; # take a random element of G gap> exp := [ 1, 1, 1, 1, 0, 0, 0, 0, 1 ];; gap> g := MappedVector( exp, mats2 ); [ [ -1, 17/2, -1, 233/6 ], [ 0, 1, 0, -2 ], [ 0, 1, -1, 2 ], [ 0, 0, 0, 1 ] ] # map g into the image of nat gap> i := ImageElm( nat, g ); g1*g2*g3*g4*g9 # exponent vector gap> Exponents( i ); [ 1, 1, 1, 1, 0, 0, 0, 0, 1 ] # compare the preimage with g gap> PreImagesRepresentative( nat, i ); [ [ -1, 17/2, -1, 233/6 ], [ 0, 1, 0, -2 ], [ 0, 1, -1, 2 ], [ 0, 0, 0, 1 ] ] gap> last = g; true
gap> gens := [ [ [ 1746/1405, 524/7025, 418/1405, -77/2810 ], [ 815/843, 899/843, -1675/843, 415/281 ], [ -3358/4215, -3512/21075, 4631/4215, -629/1405 ], [ 258/1405, 792/7025, 1404/1405, 832/1405 ] ], [ [ -2389/2810, 3664/21075, 8942/4215, -35851/16860 ], [ 395/281, 2498/2529, -5105/5058, 3260/2529 ], [ 3539/2810, -13832/63225, -12001/12645, 87053/50580 ], [ 5359/1405, -3128/21075, -13984/4215, 40561/8430 ] ] ]; gap> H := Group( gens ); <matrix group with 2 generators> gap> RadicalSeriesSolvableMatGroup( H ); [ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ], [ [ 1, 0, 0, 79/138 ], [ 0, 1, 0, -275/828 ], [ 0, 0, 1, -197/414 ] ], [ [ 1, 0, -3, 2 ], [ 0, 1, 55/4, -55/8 ] ], [ [ 1, 4/15, 2/3, 1/6 ] ], [ ] ]
gap> G := PolExamples(3); <matrix group with 2 generators> gap> GeneratorsOfGroup( G ); [ [ [ 73/10, -35/2, 42/5, 63/2 ], [ 27/20, -11/4, 9/5, 27/4 ], [ -3/5, 1, -4/5, -9 ], [ -11/20, 7/4, -2/5, 1/4 ] ], [ [ -42/5, 423/10, 27/5, 479/10 ], [ -23/10, 227/20, 13/10, 231/20 ], [ 14/5, -63/5, -4/5, -79/5 ], [ -1/10, 9/20, 1/10, 37/20 ] ] ] gap> subgroups := SubgroupsUnipotentByAbelianByFinite( G ); rec( T := <matrix group with 2 generators>, U := <matrix group with 4 generators> ) gap> GeneratorsOfGroup( subgroups.T ); [ [ [ 73/10, -35/2, 42/5, 63/2 ], [ 27/20, -11/4, 9/5, 27/4 ], [ -3/5, 1, -4/5, -9 ], [ -11/20, 7/4, -2/5, 1/4 ] ], [ [ -42/5, 423/10, 27/5, 479/10 ], [ -23/10, 227/20, 13/10, 231/20 ], [ 14/5, -63/5, -4/5, -79/5 ], [ -1/10, 9/20, 1/10, 37/20 ] ] ] # so G is triangularizable!
generated by GAPDoc2HTML
polenta-1.3.11/doc/chap1_mj.html 000644 000766 000024 00000013327 14775712162 016665 0 ustar 00mhorn staff 000000 000000This package provides functions for computation with matrix groups. Let \(G\) be a subgroup of \(GL(d,R)\) where the ring \(R\) is either equal to \(ℚ,ℤ\) or a finite field \(\mathbb{F}_q\). Then:
We can test whether \(G\) is solvable.
We can test whether \(G\) is polycyclic.
If \(G\) is polycyclic, then we can determine a polycyclic presentation for \(G\).
A group \(G\) which is given by a polycyclic presentation can be largely investigated by algorithms implemented in the GAP-package Polycyclic [EN00]. For example we can determine if \(G\) is torsion-free and calculate the torsion subgroup. Further we can compute the derived series and the Hirsch length of the group \(G\). Also various methods for computations with subgroups, factor groups and extensions are available.
As a by-product, the Polenta package provides some functionality to compute certain module series for modules of solvable groups. For example, if \(G\) is a rational polycyclic matrix group, then we can compute the radical series of the natural \(ℚ[G]\)-module \(ℚ^d\).
A group \(G\) is called polycyclic if it has a finite subnormal series with cyclic factors. It is a well-known fact that every polycyclic group is finitely presented by a so-called polycyclic presentation (see for example Chapter 9 in [Sim94] or Chapter 2 in [EN00] ). In GAP, groups which are defined by polycyclic presentations are called polycyclically presented groups, abbreviated PcpGroups.
The overall idea of the algorithm implemented in this package was first introduced by Ostheimer in 1996 [Ost96]. In 2001 Eick presented a more detailed version [Eic01]. This package contains an implementation of Eick's algorithm. A description of this implementation together with some refinements and extensions can be found in [AE05] and [Ass03].
generated by GAPDoc2HTML
polenta-1.3.11/doc/title.xml 000644 000766 000024 00000002114 14775712156 016153 0 ustar 00mhorn staff 000000 000000