The **RCWA** package contains a number of databases of rcwa groups and rcwa mappings. They can be loaded into a **GAP** session by the functions described in this chapter.

`‣ LoadRCWAExamples` ( ) | ( function ) |

Returns: the name of the variable to which the record containing the collection of examples of rcwa groups and -mappings loaded from the file `pkg/rcwa/examples/examples.g`

got bound.

The components of the examples record are records which contain the individual groups and mappings. A detailed description of some of the examples can be found in Chapter 7.

gap> LoadRCWAExamples(); "RCWAExamples" gap> Set(RecNames(RCWAExamples)); [ "AbelianGroupOverPolynomialRing", "Basics", "CT3Z", "CTPZ", "CheckingForSolvability", "ClassSwitches", "ClassTranspositionProducts", "ClassTranspositionsAsCommutators", "CollatzFactorizationOld", "CollatzMapping", "CollatzlikePerms", "CoprimeMultDiv", "F2_PSL2Z", "Farkas", "FiniteQuotients", "FiniteVsDenseCycles", "GF2xFiniteCycles", "GrigorchukQuotients", "Hexagon", "HicksMullenYucasZavislak", "HigmanThompson", "LongCyclesOfPrimeLength", "MatthewsLeigh", "MaybeInfinitelyPresentedGroup", "ModuliOfPowers", "OddNumberOfGens_FiniteOrder", "Semilocals", "SlowlyContractingMappings", "Syl3_S9", "SymmetrizingCollatzTree", "TameGroupByCommsOfWildPerms", "Venturini", "ZxZ" ] gap> AssignGlobals(RCWAExamples.CollatzMapping); The following global variables have been assigned: [ "T", "T5", "T5m", "T5p", "Tm", "Tp" ]

`‣ LoadDatabaseOfGroupsGeneratedBy3ClassTranspositions` ( ) | ( function ) |

Returns: the name of the variable to which the record containing the database of all groups generated by 3 class transpositions which interchange residue classes with moduli ≤ 6 got bound.

The database record has at least the following components (the index `i`

is always an integer in the range `[1..52394]`

, and the term "indices" always refers to list indices in that range):

`cts`

The list of all 69 class transpositions which interchange residue classes with moduli ≤ 6.

`grps`

The list of the 52394 groups -- 21948 finite and 30446 infinite ones.

`sizes`

The list of group orders -- it is

`Size(grps[i]) = sizes[i]`

.`mods`

The list of moduli of the groups -- it is

`Mod(grps[i]) = mods[i]`

.`equalityclasses`

A list of lists of indices

`i`

of groups which are known to be equal, i.e. if`i`

and`j`

lie in the same list, then`grps[i] = grps[j]`

.`samegroups`

A list of lists, where

`samegroups[i]`

is a list of indices of groups which are known to be equal to`grps[i]`

.`conjugacyclasses`

A list of lists of indices of groups which are known to be conjugate in RCWA(ℤ).

`subgroups`

A list of lists, where

`subgroups[i]`

is a list of indices of groups which are known to be proper subgroups of`grps[i]`

.`supergroups`

A list of lists, where

`supergroups[i]`

is a list of indices of groups which are known to be proper supergroups of`grps[i]`

.`chains`

A list of lists, where each list contains the indices of the groups in a descending chain of subgroups.

`respectedpartitions`

The list of shortest respected partitions. If

`grps[i]`

is finite, then`respectedpartitions[i]`

is a list of pairs (residue, modulus) for the residue classes in the shortest respected partition`grps[i]`

. If`grps[i]`

is infinite, then`respectedpartitions[i] = fail`

.`partitionlengths`

The list of lengths of shortest respected partitions. If the group

`grps[i]`

is finite, then`partitionlengths[i]`

is the length of the shortest respected partition of`grps[i]`

. If`grps[i]`

is infinite, then`partitionlengths[i] = 0`

.`degrees`

The list of permutation degrees, i.e. numbers of moved points, in the action of the finite groups on their shortest respected partitions. If there is no respected partition, i.e. if

`grps[i]`

is infinite, then`degrees[i] = 0`

.`orbitlengths`

The list of lists of orbit lengths in the action of the finite groups on their shortest respected partitions. If

`grps[i]`

is infinite, then`orbitlengths[i] = fail`

.`permgroupgens`

The list of lists of generators of the isomorphic permutation groups induced by the finite groups on their shortest respected partitions. If

`grps[i]`

is infinite, then`permgroupgens[i] = fail`

.`stabilize_digitsum_base2_mod2`

The list of indices of groups which stabilize the digit sum in base 2 modulo 2.

`stabilize_digitsum_base2_mod3`

The list of indices of groups which stabilize the digit sum in base 2 modulo 3.

`stabilize_digitsum_base3_mod2`

The list of indices of groups which stabilize the digit sum in base 3 modulo 2.

`freeproductcandidates`

A list of indices of groups which may be isomorphic to the free product of 3 copies of the cyclic group of order 2.

`freeproductlikes`

A list of indices of groups which are not isomorphic to the free product of 3 copies of the cyclic group of order 2, but where the shortest relation indicating this is relatively long.

`abc_torsion`

A list of pairs (index, order of product of generators) for all infinite groups for which the product of the generators has finite order.

`cyclist`

A list described in the comments in

`rcwa/data/3ctsgroups6/spheresizecycles.g`

.`finiteorbits`

A record described in the comments in

`rcwa/data/3ctsgroups6/finite-orbits.g`

.`intransitivemodulo`

For every modulus

`m`

from 1 to 60,`intransitivemodulo[m]`

is the list of indices of groups none of whose orbits on ℤ has nontrivial intersection with all residue classes modulo`m`

.`trsstatus`

A list of strings which describe what is known about whether the groups

`grps[i]`

act transitively on the nonnegative integers in their support, or how the computation has failed.`orbitgrowthtype`

A list of integers and lists of integers which encode what has been observed heuristically on the growth of the orbits of the groups

`grps[i]`

on ℤ.

Note that the database contains an entry for every unordered 3-tuple of distinct class transpositions in `cts`

, which means that it contains multiple copies of equal groups -- cf. the components `equalityclasses`

and `samegroups`

described above.

To mention an example, the group `grps[44132]`

might be called the "Collatz group" -- its action on the set of positive integers which are not multiples of 6 is transitive if and only if the Collatz conjecture holds.

gap> LoadDatabaseOfGroupsGeneratedBy3ClassTranspositions(); "3CTsGroups6" gap> AssignGlobals(3CTsGroups6); # for convenience The following global variables have been assigned: [ "3CTsGroupsWithGivenOrbit", "Id3CTsGroup", "ProbablyFixesDigitSumsModulo", "ProbablyStabilizesDigitSumsModulo", "TriangleTypes", "abc_torsion", "chains", "conjugacyclasses", "cts", "cyclist", "degrees", "epifromfpgroupto_ct23z", "epifromfpgrouptocollatzgroup_c", "epifromfpgrouptocollatzgroup_t", "equalityclasses", "finiteorbits", "freeproductcandidates", "freeproductlikes", "groups", "grps", "intransitivemodulo", "minwordlengthcoprimemultdiv", "minwordlengthnonbalanced", "mods", "orbitgrowthtype", "orbitlengths", "partitionlengths", "permgroupgens", "redundant_generator", "refinementseqlngs", "respectedpartitions", "samegroups", "shortresidueclassorbitlengths", "sizes", "sizespos", "sizesset", "spheresizebound_12", "spheresizebound_24", "spheresizebound_4", "spheresizebound_6", "stabilize_digitsum_base2_mod2", "stabilize_digitsum_base2_mod3", "stabilize_digitsum_base3_mod2", "subgroups", "supergroups", "trsstatus", "trsstatuspos", "trsstatusset" ] gap> grps[44132]; # the "3n+1 group" <(2(3),4(6)),(1(3),2(6)),(1(2),4(6))> gap> trsstatus[44132]; # deciding this would solve the 3n+1 problem "exceeded memory bound" gap> Length(Set(sizes)); 1066 gap> Maximum(Filtered(sizes,IsInt)); # order of largest finite group stored 7165033589793852697531456980706732548435609645091822296777976465116824959\ 2135499174617837911754921014138184155204934961004073853323458315539461543\ 4480515260818409913846161473536000000000000000000000000000000000000000000\ 000000 gap> PrintFactorsInt(last); 2^200*3^103*5^48*7^28*11^16*13^13*17^8*19^6*23^6*29 gap> Positions(sizes,last); [ 33814, 36548 ] gap> grps{last}; [ <(1(5),4(5)),(0(3),1(6)),(3(4),0(6))>, <(0(5),3(5)),(2(3),4(6)),(0(4),5(6))> ] gap> samegroups[1]; [ 1, 2, 68 ] gap> grps[1] = grps[68]; true gap> Maximum(mods); 77760 gap> Positions(mods,last); [ 26311, 26313, 26452, 26453, 26455, 26456, 26457, 26459, 26461, 26462, 27781, 27784, 27785, 27786, 27788, 27789, 27790, 27791, 27829, 27832, 30523, 30524, 30525, 30526, 30529, 30530, 30532, 30534, 32924, 32927, 32931, 32933 ] gap> Set(sizes{last}); [ 45509262704640000 ] gap> Collected(mods); [ [ 0, 30446 ], [ 3, 1 ], [ 4, 37 ], [ 5, 120 ], [ 6, 1450 ], [ 8, 18 ], [ 10, 45 ], [ 12, 3143 ], [ 15, 165 ], [ 18, 484 ], [ 20, 528 ], [ 24, 1339 ], [ 30, 2751 ], [ 36, 2064 ], [ 40, 26 ], [ 48, 515 ], [ 60, 2322 ], [ 72, 2054 ], [ 80, 44 ], [ 90, 108 ], [ 96, 108 ], [ 108, 114 ], [ 120, 782 ], [ 144, 310 ], [ 160, 26 ], [ 180, 206 ], [ 192, 6 ], [ 216, 72 ], [ 240, 304 ], [ 270, 228 ], [ 288, 14 ], [ 360, 84 ], [ 432, 36 ], [ 480, 218 ], [ 540, 18 ], [ 720, 120 ], [ 810, 112 ], [ 864, 8 ], [ 960, 94 ], [ 1080, 488 ], [ 1620, 44 ], [ 1920, 38 ], [ 2160, 506 ], [ 3240, 34 ], [ 3840, 12 ], [ 4320, 218 ], [ 4860, 16 ], [ 6480, 282 ], [ 7680, 10 ], [ 8640, 16 ], [ 12960, 120 ], [ 14580, 2 ], [ 25920, 34 ], [ 30720, 2 ], [ 38880, 12 ], [ 51840, 8 ], [ 77760, 32 ] ] gap> Collected(trsstatus); [ [ "> 1 orbit (mod m)", 593 ], [ "Mod(U DecreasingOn) exceeded <maxmod>", 23 ], [ "U DecreasingOn stable and exceeded memory bound", 11 ], [ "U DecreasingOn stable for <maxeq> steps", 5753 ], [ "exceeded memory bound", 497 ], [ "finite", 21948 ], [ "intransitive, but finitely many orbits", 8 ], [ "seemingly only finite orbits (long)", 1227 ], [ "seemingly only finite orbits (medium)", 2501 ], [ "seemingly only finite orbits (short)", 4816 ], [ "seemingly only finite orbits (very long)", 230 ], [ "seemingly only finite orbits (very long, very unclear)", 76 ], [ "seemingly only finite orbits (very short)", 208 ], [ "there are infinite orbits which have exponential sphere size growth" , 2934 ], [ "there are infinite orbits which have linear sphere size growth", 10881 ], [ "there are infinite orbits which have unclear sphere size growth", 86 ], [ "transitive", 562 ], [ "transitive up to one finite orbit", 40 ] ]

`‣ LoadDatabaseOfGroupsGeneratedBy3ClassTranspositions` ( max_m ) | ( function ) |

Returns: the name of the variable to which the record containing the database of all groups generated by 3 class transpositions which interchange residue classes with moduli less than or equal to `max_m` got bound, where `max_m` is either 6 or 9.

If `max_m` is 6, this is equivalent to the call of the function without argument described above. If `max_m` is 9, the function returns a record with at least the following components (in the sequel, the indices `i > j > k`

are always integers in the range `[1..264]`

):

`cts`

The list of all 264 class transpositions which interchange residue classes with moduli ≤ 9.

`mods`

The list of moduli of the groups, i.e.

`Mod(Group(cts{[i,j,k]})) = mods[i][j][k]`

.`partlengths`

The list of lengths of shortest respected partitions of the groups in the database, i.e.

`Length(RespectedPartition(Group(cts{[i,j,k]})))`

`=`

`partlengths[i][j][k]`

.`sizes`

The list of orders of the groups, i.e.

`Size(Group(cts{[i,j,k]}))`

`=`

`sizes[i][j][k]`

.`All3CTs9Indices`

A selector function which takes as argument a function

`func`of three arguments`i`,`j`and`k`. It returns a list of all triples of indices`[`

where 264 ≥ i > j > k ≥ 1 for which`i`,`j`,`k`]`func`returns`true`

.`All3CTs9Groups`

A selector function which takes as argument a function

`func`of three arguments`i`,`j`and`k`. It returns a list of all groups`Group(cts{[`

from the database for which`i`,`j`,`k`]})

returns`func`(`i`,`j`,`k`)`true`

.

gap> LoadDatabaseOfGroupsGeneratedBy3ClassTranspositions(9); "3CTsGroups9" gap> AssignGlobals(3CTsGroups9); The following global variables have been assigned: [ "All3CTs9Groups", "All3CTs9Indices", "cts", "mods", "partlengths", "sizes" ] gap> PrintFactorsInt(Maximum(Filtered(Flat(sizes),n->n<>infinity))); 2^1283*3^673*5^305*7^193*11^98*13^84*17^50*19^41*23^25*29^13*31^4

`‣ LoadDatabaseOfGroupsGeneratedBy4ClassTranspositions` ( ) | ( function ) |

Returns: the name of the variable to which the record containing the database of all groups generated by 4 class transpositions which interchange residue classes with moduli ≤ 6 for which all subgroups generated by 3 out of the 4 generators are finite got bound.

The record has at least the following components (the index `i`

is always an integer in the range `[1..140947]`

, and the term "indices" always refers to list indices in that range):

`cts`

The list of all 69 class transpositions which interchange residue classes with moduli ≤ 6.

`grps4_3finite`

The list of all 140947 groups in the database.

`grps4_3finitepos`

The list obtained from

`grps4_3finite`

by replacing every group by the list of positions of its generators in the list`cts`

.`sizes4`

The list of group orders -- it is

`Size(grps4_3finite[i]) = sizes4[i]`

.`mods4`

The list of moduli of the groups -- it is

`Mod(grps4_3finite[i]) = mods4[i]`

.`conjugacyclasses4cts`

A list of lists of indices of groups which are known to be conjugate in RCWA(ℤ).

`grps4_3finite_reps`

Tentative conjugacy class representatives from the list

`grps4_3finite`

--*tentative*in the sense that likely some of the groups in the list are still conjugate.

Note that the database contains an entry for every suitable unordered 4-tuple of distinct class transpositions in `cts`

, which means that it contains multiple copies of equal groups.

gap> LoadDatabaseOfGroupsGeneratedBy4ClassTranspositions(); "4CTsGroups6" gap> AssignGlobals(4CTsGroups6); The following global variables have been assigned: [ "conjugacyclasses4cts", "cts", "grps4_3finite", "grps4_3finite_reps", "grps4_3finitepos", "mods4", "sizes4", "sizes4pos", "sizes4set" ] gap> Length(grps4_3finite); 140947 gap> Length(sizes4); 140947 gap> Size(grps4_3finite[1]); 518400 gap> sizes4[1]; 518400 gap> Maximum(Filtered(sizes4,IsInt)); <integer 420...000 (3852 digits)> gap> Modulus(grps4_3finite[1]); 12 gap> mods4[1]; 12 gap> Length(Set(sizes4)); 7339 gap> Length(Set(mods4)); 91 gap> conjugacyclasses4cts{[1..4]}; [ [ 1, 23, 563, 867 ], [ 2, 859 ], [ 3, 622 ], [ 4, 16, 868, 873 ] ] gap> grps4_3finite[1] = grps4_3finite[23]; true gap> grps4_3finite[4] = grps4_3finite[16]; false

`‣ LoadDatabaseOfProductsOf2ClassTranspositions` ( ) | ( function ) |

Returns: the name of the variable to which the record containing the database of products of 2 class transpositions got bound.

There are 69 class transpositions which interchange residue classes with moduli ≤ 6, thus there is a total of (69 ⋅ 68)/2 = 2346 unordered pairs of distinct such class transpositions. Looking at intersection- and subset relations between the 4 involved residue classes, we can distinguish 17 different "intersection types" (or 18, together with the trivial case of equal class transpositions). The intersection type does not fully determine the cycle structure of the product. -- In total, we can distinguish 88 different cycle types of products of 2 class transpositions which interchange residue classes with moduli ≤ 6.

The components of the database record are a list `CTPairs`

of all 2346 pairs of distinct class transpositions which interchange residue classes with moduli ≤ 6, functions `CTPairsIntersectionTypes`

, `CTPairIntersectionType`

and `CTPairProductType`

, as well as data lists `OrdersMatrix`

, `CTPairsProductClassification`

, `CTPairsProductType`

, `CTProds12`

and `CTProds32`

. -- For the description of these components, see the file `pkg/rcwa/data/ctproducts/ctprodclass.g`

.

gap> LoadDatabaseOfProductsOf2ClassTranspositions(); "CTProducts" gap> Set(RecNames(CTProducts)); [ "CTPairIntersectionType", "CTPairProductType", "CTPairs", "CTPairsIntersectionTypes", "CTPairsProductClassification", "CTPairsProductType", "CTProds12", "CTProds32", "OrdersMatrix" ] gap> Length(CTProducts.CTPairs); 2346 gap> Collected(List(CTProducts.CTPairsProductType,l->l[2])); # order stats [ [ 2, 165 ], [ 3, 255 ], [ 4, 173 ], [ 6, 693 ], [ 10, 2 ], [ 12, 345 ], [ 15, 4 ], [ 20, 10 ], [ 30, 120 ], [ 60, 44 ], [ infinity, 535 ] ]

`‣ LoadDatabaseOfNonbalancedProductsOfClassTranspositions` ( ) | ( function ) |

Returns: the name of the variable to which the record containing the database of non-balanced products of class transpositions got bound.

This database contains a list of the 24 pairs of class transpositions which interchange residue classes with moduli ≤ 6 and whose product is not balanced, as well as a list of all 36 essentially distinct triples of such class transpositions whose product has coprime multiplier and divisor.

gap> LoadDatabaseOfNonbalancedProductsOfClassTranspositions(); "CTProductsNB" gap> Set(RecNames(CTProductsNB)); [ "PairsOfCTsWhoseProductIsNotBalanced", "TriplesOfCTsWhoseProductHasCoprimeMultiplierAndDivisor" ] gap> CTProductsNB.PairsOfCTsWhoseProductIsNotBalanced; [ [ ( 1(2), 2(4) ), ( 2(4), 3(6) ) ], [ ( 1(2), 2(4) ), ( 2(4), 5(6) ) ], [ ( 1(2), 2(4) ), ( 2(4), 1(6) ) ], [ ( 1(2), 0(4) ), ( 0(4), 1(6) ) ], [ ( 1(2), 0(4) ), ( 0(4), 3(6) ) ], [ ( 1(2), 0(4) ), ( 0(4), 5(6) ) ], [ ( 0(2), 1(4) ), ( 1(4), 2(6) ) ], [ ( 0(2), 1(4) ), ( 1(4), 4(6) ) ], [ ( 0(2), 1(4) ), ( 1(4), 0(6) ) ], [ ( 0(2), 3(4) ), ( 3(4), 4(6) ) ], [ ( 0(2), 3(4) ), ( 3(4), 2(6) ) ], [ ( 0(2), 3(4) ), ( 3(4), 0(6) ) ], [ ( 1(2), 2(6) ), ( 3(4), 2(6) ) ], [ ( 1(2), 2(6) ), ( 1(4), 2(6) ) ], [ ( 1(2), 4(6) ), ( 3(4), 4(6) ) ], [ ( 1(2), 4(6) ), ( 1(4), 4(6) ) ], [ ( 1(2), 0(6) ), ( 1(4), 0(6) ) ], [ ( 1(2), 0(6) ), ( 3(4), 0(6) ) ], [ ( 0(2), 1(6) ), ( 2(4), 1(6) ) ], [ ( 0(2), 1(6) ), ( 0(4), 1(6) ) ], [ ( 0(2), 3(6) ), ( 2(4), 3(6) ) ], [ ( 0(2), 3(6) ), ( 0(4), 3(6) ) ], [ ( 0(2), 5(6) ), ( 2(4), 5(6) ) ], [ ( 0(2), 5(6) ), ( 0(4), 5(6) ) ] ]

generated by GAPDoc2HTML