From 0a50220f785c7b9bb87d410553f81b2730f4396d Mon Sep 17 00:00:00 2001 From: Max Horn Date: Wed, 18 Aug 2021 17:46:15 +0200 Subject: [PATCH] Remove trailing spaces (#382) This reflects the settings in `.editorconfig`: due to those, whenever I open and edit a file in Hecke.jl, as a side effect all trailing spaces are removed, which unnecessarily blows up my commits (or I have to manually remove those changes again). So, let's get rid of them in one swoop now; new ones should hopefully not be added as long as everyone uses an editor which honors `.editorconfig`. --- README.md | 16 +- TODO.md | 6 +- deps/_build.jl | 2 +- deps/hecke/Makefile.in | 4 +- deps/hecke/configure | 6 +- docs/src/FacElem.md | 14 +- docs/src/abelian/elements.md | 2 +- docs/src/abelian/maps.md | 2 +- docs/src/abelian/structural.md | 2 +- docs/src/class_fields/intro.md | 8 +- docs/src/function_fields/elements.md | 2 +- docs/src/function_fields/intro.md | 2 +- docs/src/index.md | 14 +- docs/src/number_fields/conventions.md | 2 +- docs/src/number_fields/fields.md | 2 +- docs/src/number_fields/internal.md | 4 +- docs/src/orders/elements.md | 6 +- docs/src/orders/ideals.md | 4 +- docs/src/orders/introduction.md | 6 +- docs/src/orders/orders.md | 2 +- docs/src/pmat/introduction.md | 4 +- docs/src/quad_forms/basics.md | 2 +- docs/src/quad_forms/introduction.md | 6 +- docs/src/quad_forms/lattices.md | 2 +- docs/src/sparse/intro.md | 4 +- examples/FieldEnumeration/FieldEnumeration.jl | 218 +-- .../FieldEnumeration/abelian_extensions.jl | 4 +- examples/FieldEnumeration/absolute_abelian.jl | 4 +- .../absolute_abelian_with_conductors.jl | 4 +- examples/FieldEnumeration/all_fields.jl | 4 +- .../FieldEnumeration/compute_class_groups.jl | 8 +- examples/FieldEnumeration/cubic.jl | 8 +- examples/FieldEnumeration/smallest_field.jl | 2 +- examples/IsPower.jl | 6 +- examples/MultDep.jl | 10 +- examples/MultiQuad.jl | 30 +- examples/NFDB.jl | 6 +- examples/Petri.jl | 6 +- examples/Plesken.jl | 4 +- examples/PolyRoot.jl | 2 +- examples/RayClass.jl | 106 +- examples/RelNeq.jl | 58 +- examples/Round2.jl | 20 +- examples/Suri.jl | 6 +- examples/pAdicConj.jl | 16 +- examples/polymake.jl | 10 +- src/AlgAss/AlgGrp.jl | 8 +- src/AlgAss/AlgQuat.jl | 10 +- src/AlgAss/Elem.jl | 8 +- src/AlgAss/Types.jl | 4 +- src/AlgAssAbsOrd/Conjugacy/Conjugacy.jl | 4 +- src/AlgAssAbsOrd/Conjugacy/Husert.jl | 8 +- src/AlgAssAbsOrd/Conjugacy/Lifting.jl | 2 +- src/AlgAssAbsOrd/Conjugacy/Random.jl | 2 +- src/AlgAssAbsOrd/Ideal.jl | 2 +- src/AlgAssAbsOrd/LocallyFreeClassGroup.jl | 6 +- src/AlgAssAbsOrd/PIP.jl | 42 +- src/AlgAssAbsOrd/PicardGroup.jl | 2 +- src/Assertions.jl | 26 +- src/Deprecations.jl | 2 +- src/EllCrv/Misc.jl | 4 +- src/EllCrv/QQ.jl | 2 +- src/FieldFactory/ab_exts.jl | 108 +- src/FieldFactory/abelian_layer.jl | 90 +- src/FieldFactory/brauer.jl | 90 +- src/FieldFactory/chain.jl | 2 +- src/FieldFactory/conductors.jl | 14 +- src/FieldFactory/conductors_generic.jl | 114 +- src/FieldFactory/fields.jl | 54 +- .../maximal_abelian_subextension.jl | 20 +- src/FieldFactory/merge.jl | 46 +- src/FieldFactory/non_normal.jl | 4 +- src/FieldFactory/rayclassgrp.jl | 92 +- src/FieldFactory/read_write.jl | 2 +- src/FunField/DegreeLocalization.jl | 12 +- src/Grp/8T.jl | 2 +- src/Grp/SmallGroups.jl | 2 +- src/Grp/small_groups_1_63 | 1616 ++++++++--------- src/GrpAb/ChainComplex.jl | 10 +- src/GrpAb/Dual.jl | 4 +- src/GrpAb/GrpAbFinGen.jl | 22 +- src/GrpAb/Lattice.jl | 14 +- src/GrpAb/Map.jl | 2 +- src/GrpAb/SubgroupEnum.jl | 14 +- src/GrpAb/stable_sub.jl | 8 +- src/Hecke.jl | 6 +- src/LargeField/FB.jl | 26 +- src/LargeField/basis.jl | 14 +- src/LargeField/misc2.jl | 28 +- src/LinearAlgebra/FakeFmpqMat.jl | 8 +- src/LinearAlgebra/Howell.jl | 12 +- src/LinearAlgebra/LatEnum.jl | 30 +- src/LocalField/Completions.jl | 12 +- src/LocalField/Elem.jl | 26 +- src/LocalField/LocalField.jl | 4 +- src/LocalField/Poly.jl | 10 +- src/LocalField/Ring.jl | 16 +- src/LocalField/Types.jl | 12 +- src/LocalField/qAdic.jl | 14 +- src/Map/FiniteField.jl | 4 +- src/Map/GrpAb.jl | 4 +- src/Map/Map.jl | 2 +- src/Map/MapType.jl | 6 +- src/Map/NfOrd.jl | 34 +- src/Map/NumField.jl | 26 +- src/Map/NumberField.jl | 10 +- src/Map/Old.jl | 4 +- src/Map/automorphisms.jl | 18 +- src/Misc/FactoredElem.jl | 4 +- src/Misc/FactoredElemIntegers.jl | 4 +- src/Misc/Fields.jl | 2 +- src/Misc/FiniteField.jl | 14 +- src/Misc/IJulia.jl | 14 +- src/Misc/Integer.jl | 6 +- src/Misc/MPoly.jl | 4 +- src/Misc/MPolyFactor.jl | 12 +- src/Misc/MSet.jl | 8 +- src/Misc/Matrix.jl | 10 +- src/Misc/Plesken.jl | 10 +- src/Misc/Poly.jl | 20 +- src/Misc/Primes.jl | 22 +- src/Misc/PseudoPolynomial.jl | 4 +- src/Misc/RatRecon.jl | 8 +- src/Misc/RelFiniteField.jl | 40 +- src/Misc/ResidueRingPoly.jl | 14 +- src/Misc/Series.jl | 14 +- src/Misc/UnitsModM.jl | 8 +- src/Misc/acb_root_ctx.jl | 16 +- src/Misc/arf.jl | 6 +- src/Misc/fmpr.jl | 4 +- src/Misc/nmod_poly.jl | 16 +- src/Misc/toHecke.jl | 2 +- src/Misc/toMagma.jl | 6 +- src/Misc/toPari.jl | 2 +- src/ModAlgAss/MeatAxe.jl | 30 +- src/ModAlgAss/ModAlgAss.jl | 4 +- src/NumField/Field.jl | 4 +- src/NumField/NfAbs.jl | 12 +- src/NumField/NfAbs/CompactRepresentation.jl | 8 +- src/NumField/NfAbs/ConjugatesNS.jl | 4 +- src/NumField/NfAbs/Elem.jl | 4 +- src/NumField/NfAbs/MPolyAbsFact.jl | 76 +- src/NumField/NfAbs/MPolyGcd.jl | 12 +- src/NumField/NfAbs/NfAbs.jl | 18 +- src/NumField/NfAbs/NonSimple.jl | 2 +- src/NumField/NfAbs/NormRelation/Clgp.jl | 2 +- src/NumField/NfAbs/NormRelation/SUnits.jl | 10 +- src/NumField/NfAbs/NormRelation/Setup.jl | 22 +- src/NumField/NfAbs/PolyFact.jl | 10 +- src/NumField/NfAbs/Simplify.jl | 6 +- src/NumField/NfRel/Conjugates.jl | 6 +- src/NumField/NfRel/NEQ.jl | 2 +- src/NumField/NfRel/NfRel.jl | 2 +- src/NumField/NfRel/NfRelNS.jl | 20 +- src/NumField/NfRel/NfRelNSMor.jl | 4 +- src/NumField/NfRel/Simplify.jl | 2 +- src/NumField/NfRel/absolute_field.jl | 20 +- src/NumField/NfRel/relative_extension.jl | 4 +- src/NumField/NonSimpleNumField/Conjugates.jl | 12 +- src/NumField/NonSimpleNumField/Field.jl | 6 +- src/NumField/QQ.jl | 2 +- src/NumField/SimpleNumField/Subfields.jl | 2 +- src/NumField/Subfields.jl | 6 +- src/NumFieldOrd/NfOrd/Clgp.jl | 10 +- src/NumFieldOrd/NfOrd/Clgp/Ctx.jl | 6 +- src/NumFieldOrd/NfOrd/Clgp/FacBase_Euc.jl | 8 +- src/NumFieldOrd/NfOrd/Clgp/FacBase_Idl.jl | 16 +- src/NumFieldOrd/NfOrd/Clgp/Main_LLL.jl | 12 +- src/NumFieldOrd/NfOrd/Clgp/Main_enum.jl | 32 +- src/NumFieldOrd/NfOrd/Clgp/Map.jl | 8 +- src/NumFieldOrd/NfOrd/Clgp/Proof.jl | 12 +- src/NumFieldOrd/NfOrd/Clgp/Rel_LLL.jl | 2 +- src/NumFieldOrd/NfOrd/Clgp/Rel_Schmettow.jl | 4 +- src/NumFieldOrd/NfOrd/Clgp/Rel_add.jl | 34 +- src/NumFieldOrd/NfOrd/Clgp/Rel_enum.jl | 2 +- src/NumFieldOrd/NfOrd/Clgp/Saturate.jl | 30 +- src/NumFieldOrd/NfOrd/Clgp/Sunits.jl | 14 +- src/NumFieldOrd/NfOrd/Clgp/Types.jl | 2 +- src/NumFieldOrd/NfOrd/Clgp/cm_field.jl | 6 +- src/NumFieldOrd/NfOrd/FacElem.jl | 2 +- src/NumFieldOrd/NfOrd/FactorBaseBound.jl | 20 +- src/NumFieldOrd/NfOrd/Hensel.jl | 28 +- src/NumFieldOrd/NfOrd/Ideal/Arithmetic.jl | 6 +- src/NumFieldOrd/NfOrd/Ideal/Enum.jl | 2 +- src/NumFieldOrd/NfOrd/Ideal/FacElem.jl | 8 +- src/NumFieldOrd/NfOrd/Ideal/Ideal.jl | 14 +- src/NumFieldOrd/NfOrd/Ideal/Prime.jl | 22 +- src/NumFieldOrd/NfOrd/Ideal/Relative.jl | 2 +- src/NumFieldOrd/NfOrd/Ideal/TwoElement.jl | 14 +- src/NumFieldOrd/NfOrd/Ideal/Valuation.jl | 22 +- src/NumFieldOrd/NfOrd/LLL.jl | 40 +- src/NumFieldOrd/NfOrd/LLLctx.jl | 4 +- src/NumFieldOrd/NfOrd/LinearAlgebra.jl | 2 +- .../NfOrd/MaxOrd/DedekindCriterion.jl | 30 +- src/NumFieldOrd/NfOrd/MaxOrd/MaxOrd.jl | 2 +- src/NumFieldOrd/NfOrd/MaxOrd/MaxOrdNS.jl | 4 +- src/NumFieldOrd/NfOrd/MaxOrd/Polygons.jl | 8 +- src/NumFieldOrd/NfOrd/NarrowPicardGroup.jl | 4 +- src/NumFieldOrd/NfOrd/NfOrd.jl | 10 +- src/NumFieldOrd/NfOrd/Overorders.jl | 50 +- src/NumFieldOrd/NfOrd/RayClassGrp.jl | 32 +- src/NumFieldOrd/NfOrd/ResidueRing.jl | 2 +- src/NumFieldOrd/NfOrd/ResidueRingMultGrp.jl | 80 +- src/NumFieldOrd/NfOrd/StrongEchelonForm.jl | 24 +- src/NumFieldOrd/NfOrd/TorsionUnits.jl | 20 +- src/NumFieldOrd/NfOrd/Unit.jl | 2 +- src/NumFieldOrd/NfOrd/Unit/FindUnits.jl | 22 +- src/NumFieldOrd/NfOrd/Unit/IsUnit.jl | 2 +- src/NumFieldOrd/NfOrd/Unit/Map.jl | 2 +- src/NumFieldOrd/NfOrd/Unit/Reduction.jl | 2 +- src/NumFieldOrd/NfOrd/Unit/Relation.jl | 6 +- src/NumFieldOrd/NfOrd/Unit/UnitGrpCtx.jl | 12 +- src/NumFieldOrd/NfOrd/Zeta.jl | 34 +- src/NumFieldOrd/NfOrd/norm_eqn.jl | 12 +- src/NumFieldOrd/NumFieldOrdElem.jl | 6 +- src/NumFieldOrd/NumFieldOrdIdl.jl | 4 +- src/QuadForm/Enumeration.jl | 16 +- src/QuadForm/Herm/Genus.jl | 2 +- src/QuadForm/Herm/GenusRep.jl | 8 +- .../Herm/LocallyIsometricSublattice.jl | 4 +- src/QuadForm/Herm/Mass.jl | 6 +- src/QuadForm/Lattices.jl | 8 +- src/QuadForm/LineOrbits.jl | 16 +- src/QuadForm/Misc.jl | 12 +- src/QuadForm/Morphism.jl | 102 +- src/QuadForm/Quad/Lattices.jl | 4 +- src/QuadForm/Quad/NormalForm.jl | 4 +- src/QuadForm/Quad/Spaces.jl | 2 +- src/QuadForm/QuadBin.jl | 6 +- src/QuadForm/Spaces.jl | 2 +- src/QuadForm/Torsion.jl | 6 +- src/RCF/Types.jl | 2 +- src/RCF/autos.jl | 36 +- src/RCF/class_fields.jl | 6 +- src/RCF/conductor.jl | 30 +- src/RCF/cyclo.jl | 4 +- src/RCF/kummer_extensions.jl | 18 +- src/RCF/rcf.jl | 30 +- src/RCF/rcf_stark.jl | 12 +- src/RCF/rcf_subfield.jl | 22 +- src/Sparse/Matrix.jl | 2 +- src/Sparse/Module.jl | 8 +- src/Sparse/Row.jl | 8 +- src/Sparse/Solve.jl | 4 +- src/analytic.jl | 2 +- src/conjugates.jl | 8 +- src/helper.jl | 2 +- system/Build.jl | 2 +- system/HeckeProfile.jl | 20 +- test/AlgAss/AlgMat.jl | 2 +- test/AlgAssAbsOrd/Conjugacy/Conjugacy.jl | 2 +- test/EllCrv/EllCrv.jl | 2 +- test/Examples/MultiQuad.jl | 2 +- test/FieldFactory/FieldFactory.jl | 26 +- test/FunField/DegreeLocalization.jl | 2 +- test/GrpAb/Elem.jl | 10 +- test/GrpAb/GrpAbFinGen.jl | 6 +- test/GrpAb/Lattice.jl | 2 +- test/GrpAb/Map.jl | 2 +- test/GrpAb/SubgroupEnum.jl | 32 +- test/LocalField/Conjugates.jl | 4 +- test/LocalField/LocalField.jl | 12 +- test/LocalField/Poly.jl | 30 +- test/Map/NumField.jl | 6 +- test/Map/NumberField.jl | 4 +- test/Misc/NumberField.jl | 4 +- test/Misc/Places.jl | 8 +- test/Misc/Poly.jl | 6 +- test/Misc/Primes.jl | 4 +- test/Misc/RelFinField.jl | 8 +- test/Misc/jordan_test.jl | 4 +- test/Misc/meataxe.jl | 28 +- test/Misc/stable_subgroups.jl | 36 +- test/NfAbs/Elem.jl | 10 +- test/NfOrd/Clgp.jl | 22 +- test/NfOrd/Elem.jl | 10 +- test/NfOrd/FracIdl.jl | 2 +- test/NfOrd/Ideal.jl | 6 +- test/NfOrd/Ideal/Prime.jl | 14 +- test/NfOrd/LinearAlgebra.jl | 4 +- test/NfOrd/NfOrd.jl | 8 +- test/NfOrd/RayClassGroup.jl | 24 +- test/NfOrd/ResidueField.jl | 6 +- test/NumField/Elem.jl | 6 +- test/NumField/Hilbert.jl | 2 +- test/NumField/NfAbs/MPolyAbsFact.jl | 2 +- test/QuadForm/Genus.jl | 8 +- test/QuadForm/Lattices.jl | 2 +- test/QuadForm/Quad/GenusRep.jl | 2 +- test/QuadForm/Quad/NormalForm.jl | 14 +- test/QuadForm/Quad/ZGenus.jl | 2 +- test/QuadForm/Torsion.jl | 20 +- test/RCF/conductor_sieve.jl | 4 +- test/RCF/rcf.jl | 8 +- test/Sparse/Matrix.jl | 4 +- 295 files changed, 2814 insertions(+), 2814 deletions(-) diff --git a/README.md b/README.md index a0f9b20773..afd127433d 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Hecke is part of the [OSCAR](https://oscar.computeralgebra.de/) project and the - (Online documentation) So far, Hecke provides the following features: - + - Number fields (absolute, relative, simple and non-simple) - Orders and ideals in number fields - Class and unit group computations of orders @@ -72,16 +72,16 @@ Here is a quick example of using Hecke: julia> using Hecke ... -Welcome to +Welcome to - _ _ _ - | | | | | | - | |__| | ___ ___| | _____ + _ _ _ + | | | | | | + | |__| | ___ ___| | _____ | __ |/ _ \/ __| |/ / _ \ | | | | __/ (__| < __/ |_| |_|\___|\___|_|\_\___| - -Version 0.10.12... + +Version 0.10.12... ... which comes with absolutely no warrant whatsoever (c) 2015-2019 by Claus Fieker, Tommy Hofmann and Carlo Sircana @@ -90,7 +90,7 @@ julia> f = x^3 + 2; julia> K, a = NumberField(f, "a"); julia> O = maximal_order(K); julia> O -Maximal order of Number field over Rational Field with defining polynomial x^3 + 2 +Maximal order of Number field over Rational Field with defining polynomial x^3 + 2 with basis [1,a,a^2] ``` diff --git a/TODO.md b/TODO.md index 6e319b3458..60aef40082 100644 --- a/TODO.md +++ b/TODO.md @@ -10,7 +10,7 @@ * [ ] implement Montes--Nart algorithm * [ ] composite Dedekind criterion * [ ] composite Round Two algorithm - * [ ] implement information about containment (O_1 \sub O_2) + * [ ] implement information about containment (O_1 \sub O_2) * [ ] save prime factors of discriminant * [x] `princ_gen` should be cached * [ ] Clean up uniformizer (p-uniformizer? strong uniformizer?) @@ -37,13 +37,13 @@ * [ ] `coeff(z, i)` and `coefficients(z)` "inconsistencies" ## Renaming - + * [x] `DiagonalGroup` and `AbelianGroup` to `abelian_group`. * [x] `princ_gen` to `principal_generator` * [ ] `nf` to `number_field` * [x] Group algebra renaming * [ ] Make `has*` and `*_known` consistent. - + ## Misc * [ ] `exp_map_unit_grp_mod` * [ ] `charpoly` should have `parent = ` keyword. diff --git a/deps/_build.jl b/deps/_build.jl index 96d35e8680..7950e8abb6 100644 --- a/deps/_build.jl +++ b/deps/_build.jl @@ -3,7 +3,7 @@ using Pkg, Nemo, Libdl oldwdir = pwd() nemo_pkgdir = joinpath(dirname(pathof(Nemo)), "..") -#nemo_pkgdir = Pkg.dir("Nemo") +#nemo_pkgdir = Pkg.dir("Nemo") nemo_wdir = joinpath(nemo_pkgdir, "deps") nemo_vdir = joinpath(nemo_pkgdir, "local") diff --git a/deps/hecke/Makefile.in b/deps/hecke/Makefile.in index df9ff25c6f..16ec309987 100644 --- a/deps/hecke/Makefile.in +++ b/deps/hecke/Makefile.in @@ -14,11 +14,11 @@ AT=@ BUILD_DIRS = antic \ $(EXTRA_BUILD_DIRS) -TEMPLATE_DIRS = +TEMPLATE_DIRS = export -SOURCES = +SOURCES = LIB_SOURCES = $(wildcard $(patsubst %, %/*.c, $(BUILD_DIRS))) $(patsubst %, %/*.c, $(TEMPLATE_DIRS)) HEADERS = $(patsubst %, %.h, $(BUILD_DIRS)) diff --git a/deps/hecke/configure b/deps/hecke/configure index d0be70e8f6..72ab2bbc03 100755 --- a/deps/hecke/configure +++ b/deps/hecke/configure @@ -375,7 +375,7 @@ case "$OS" in ;; *) ;; -esac +esac #test for popcnt flag and set needed CFLAGS @@ -383,12 +383,12 @@ mkdir -p build rm -f build/test-popcnt > /dev/null 2>&1 MSG="Testing __builtin_popcountl..." printf "%s" "$MSG" -echo "int main(int argc, char ** argv) { +echo "int main(int argc, char ** argv) { #if defined(_WIN64) return __builtin_popcountll(argc) == 100; #else return __builtin_popcountl(argc) == 100; -#endif +#endif }" > build/test-popcnt.c $CC build/test-popcnt.c -o ./build/test-popcnt > /dev/null 2>&1 if [ $? -eq 0 ]; then diff --git a/docs/src/FacElem.md b/docs/src/FacElem.md index 98fffcf1d2..daa45ae700 100644 --- a/docs/src/FacElem.md +++ b/docs/src/FacElem.md @@ -15,16 +15,16 @@ products of smaller elements, allowing the computer to handle them. Mathematically, one can think of factored elements to formally live in the ring $Z[K]$ the group ring of the non-zero field elements. Thus elements are of the form $ \prod a_i^{e_i}$ where -$a_i$ are elements in $K$, typically _small_ and the $e_i\in Z$ are frequently -large exponents. We refer to the $a_i$ as the *base* and the $e_i$ as the +$a_i$ are elements in $K$, typically _small_ and the $e_i\in Z$ are frequently +large exponents. We refer to the $a_i$ as the *base* and the $e_i$ as the *exponents* of the factored element. Since $K$ is, in general, no PID, this presentation is non-unique, elements in this form can easily be multiplied, raised to large powers, but in general not compared and not added. -In Hecke, this is caputured more generally by the type `FacElem`, -parametrized by the type of the elements in the base and the type of their +In Hecke, this is caputured more generally by the type `FacElem`, +parametrized by the type of the elements in the base and the type of their parent. Important special cases are @@ -32,12 +32,12 @@ Important special cases are * ```FacElem{nf_elem, AnticNumberField}```, factored algerbaic numbers * ```FacElem{NfAbsOrdIdl, NfAbsOrdIdlSet}```, factored ideals -It should be noted that an object of type ```FacElem{fmpz, FlintIntegerRing}`` +It should be noted that an object of type ```FacElem{fmpz, FlintIntegerRing}`` will, in general, not represent an integer as the exponents can be negative. -## Construction -In general one can define factored elements by giving 2 arrays, the +## Construction +In general one can define factored elements by giving 2 arrays, the base and the exponent, or a dictionary containing the pairs: ```@docs diff --git a/docs/src/abelian/elements.md b/docs/src/abelian/elements.md index 39296b101a..b44750b575 100644 --- a/docs/src/abelian/elements.md +++ b/docs/src/abelian/elements.md @@ -40,5 +40,5 @@ G = abelian_group(fmpz[1 2; 3 4]) for g = G println(g) end -``` +``` diff --git a/docs/src/abelian/maps.md b/docs/src/abelian/maps.md index 396eb2bb77..fc1d54954d 100644 --- a/docs/src/abelian/maps.md +++ b/docs/src/abelian/maps.md @@ -4,7 +4,7 @@ and can be created in a variety of situations. ## Maps Maps between abelian groups can be constructed via - images of the generators - - pairs of elements + - pairs of elements - via composition - and isomorphism/ inclusion testing diff --git a/docs/src/abelian/structural.md b/docs/src/abelian/structural.md index 7e59fa1c0e..461b69af3e 100644 --- a/docs/src/abelian/structural.md +++ b/docs/src/abelian/structural.md @@ -62,7 +62,7 @@ quo(G::GrpAbFinGen, n::fmpz) quo(G::GrpAbFinGen, U::GrpAbFinGen) ``` -For 2 subgroups `U` and `V` of the same group `G`, `U+V` returns +For 2 subgroups `U` and `V` of the same group `G`, `U+V` returns the smallest subgroup of `G` containing both. Similarly, $U\cap V$ computes the intersection and `U \subset V` tests for inclusion. The difference between `issubset =` $\subset$ and diff --git a/docs/src/class_fields/intro.md b/docs/src/class_fields/intro.md index 8684f0571e..878530c981 100644 --- a/docs/src/class_fields/intro.md +++ b/docs/src/class_fields/intro.md @@ -101,10 +101,10 @@ maximal_abelian_subfield(K::NfRel{nf_elem}) ## Invariants ```@docs degree(C::ClassField) -base_ring(A::Hecke.ClassField) -base_field(A::Hecke.ClassField) +base_ring(A::Hecke.ClassField) +base_field(A::Hecke.ClassField) discriminant(C::Hecke.ClassField) -conductor(C::Hecke.ClassField) +conductor(C::Hecke.ClassField) defining_modulus(C::ClassField) iscyclic(C::ClassField) isconductor(C::Hecke.ClassField, m::NfOrdIdl, inf_plc::Vector{InfPlc}) @@ -122,7 +122,7 @@ prime_decomposition_type(C::Hecke.ClassField, p::Hecke.NfAbsOrdIdl) Hecke.issubfield(a::ClassField, b::ClassField) Hecke.islocal_norm(r::Hecke.ClassField, a::Hecke.NfAbsOrdElem) Hecke.islocal_norm(r::Hecke.ClassField, a::Hecke.NfAbsOrdElem, p::Hecke.NfAbsOrdIdl) -Hecke.normal_closure(r::Hecke.ClassField) +Hecke.normal_closure(r::Hecke.ClassField) subfields(r::ClassField) subfields(r::ClassField, d::Int) ``` diff --git a/docs/src/function_fields/elements.md b/docs/src/function_fields/elements.md index 9caa38eac8..6a749a42c7 100644 --- a/docs/src/function_fields/elements.md +++ b/docs/src/function_fields/elements.md @@ -5,5 +5,5 @@ CurrentModule = Hecke ``` For details on element arithmetic in rational function fields and extensions, refer -to the AbstractAlgebra documentation which can be found at +to the AbstractAlgebra documentation which can be found at [https://nemocas.github.io/AbstractAlgebra.jl/latest/function_field/](https://nemocas.github.io/AbstractAlgebra.jl/latest/function_field/). diff --git a/docs/src/function_fields/intro.md b/docs/src/function_fields/intro.md index 94a611c1ea..de150e1496 100644 --- a/docs/src/function_fields/intro.md +++ b/docs/src/function_fields/intro.md @@ -6,7 +6,7 @@ CurrentModule = Hecke ## [Introduction](@id FunctionFieldsLink) -By definition, a (univariate) function field can be written as a finite extension of a rational +By definition, a (univariate) function field can be written as a finite extension of a rational function field $k(x)$ for a field $k$ (commonly $k = \mathbb{Q}$ or $k = \mathbb{F}_p$). In Hecke, a function field $L$ is currently defined as being a (univariate) rational function field $k(x)$ or a finite extension thereof. In other words, the extension diff --git a/docs/src/index.md b/docs/src/index.md index 2f004a58e2..051d74ff4a 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -44,16 +44,16 @@ Here is a quick example of using Hecke: julia> using Hecke ... -Welcome to +Welcome to - _ _ _ - | | | | | | - | |__| | ___ ___| | _____ + _ _ _ + | | | | | | + | |__| | ___ ___| | _____ | __ |/ _ \/ __| |/ / _ \ | | | | __/ (__| < __/ |_| |_|\___|\___|_|\_\___| - -Version 0.9.0 ... + +Version 0.9.0 ... ... which comes with absolutely no warranty whatsoever (c) 2015-2018 by Claus Fieker, Tommy Hofmann and Carlo Sircana @@ -62,7 +62,7 @@ julia> f = x^3 + 2; julia> K, a = NumberField(f, "a"); julia> O = maximal_order(K); julia> O -Maximal order of Number field over Rational Field with defining polynomial x^3 + 2 +Maximal order of Number field over Rational Field with defining polynomial x^3 + 2 with basis [1,a,a^2] ``` diff --git a/docs/src/number_fields/conventions.md b/docs/src/number_fields/conventions.md index ee3dcb006b..f40760c0f8 100644 --- a/docs/src/number_fields/conventions.md +++ b/docs/src/number_fields/conventions.md @@ -44,7 +44,7 @@ determinant $\det(B)^{-1}$ is in fact equal to $[ \mathcal O : \mathbf Z[\alpha] and is called the *index* of $\mathcal O$. The matrix ```math -\begin{pmatrix} +\begin{pmatrix} \sigma_1(\omega_1) & \dotsc & \sigma_r(\omega_1) & \sqrt{2}\operatorname{Re}(\sigma_{r+1}(\omega_1)) & \sqrt{2}\operatorname{Im}(\sigma_{r+1}(\omega_1)) & \dotsc & \sqrt{2}\operatorname{Im}(\sigma_{r+s}(\omega_1)) \\\\ \sigma_1(\omega_2) & \dotsc & \sigma_r(\omega_2) & \sqrt{2}\operatorname{Re}(\sigma_{r+1}(\omega_2)) & \sqrt{2}\operatorname{Im}(\sigma_{r+1}(\omega_2)) & \dotsc & \sqrt{2}\operatorname{Im}(\sigma_{r+s}(\omega_2)) \\\\ \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots\\\\ diff --git a/docs/src/number_fields/fields.md b/docs/src/number_fields/fields.md index 4b51654cd5..588a09e65f 100644 --- a/docs/src/number_fields/fields.md +++ b/docs/src/number_fields/fields.md @@ -138,7 +138,7 @@ inertia_subgroup(::AnticNumberField, ::NfOrdIdl, ::Map) infinite_places(K::NumField) real_places(K::AnticNumberField) complex_places(K::AnticNumberField) -isreal(::Plc) +isreal(::Plc) iscomplex(::Plc) infinite_places_uniformizers(::AnticNumberField) ``` diff --git a/docs/src/number_fields/internal.md b/docs/src/number_fields/internal.md index 0073b7d199..5c7d7c6dbb 100644 --- a/docs/src/number_fields/internal.md +++ b/docs/src/number_fields/internal.md @@ -12,7 +12,7 @@ different types: - `NfAbsNS`: a finite extension of $\mathbf{Q}$ given by several polynomials. We will refer to this as a non-simple field - even though mathematically we can find a primitive elements. - - `NfRel`: a finite simple extension of a number field. This is + - `NfRel`: a finite simple extension of a number field. This is actually parametried by the (element) type of the coefficient field. The complete type of an extension of an absolute field (`AnticNumberField`) is `NfRel{nf_elem}`. The next extension thus will be @@ -28,7 +28,7 @@ called absolute. Internally, simple fields are essentially just (univariate) polynomial quotients in a dense representation, while non-simple fields are multivariate quotient rings, thus have a sparse presentation. -In general, simple fields allow much faster arithmetic, while +In general, simple fields allow much faster arithmetic, while the non-simple fields give easy access to large degree fields. ## Absolute simple fields diff --git a/docs/src/orders/elements.md b/docs/src/orders/elements.md index 12c657f9b9..94b47159c1 100644 --- a/docs/src/orders/elements.md +++ b/docs/src/orders/elements.md @@ -4,18 +4,18 @@ CurrentModule = Hecke ``` -Elements in orders have two representations: they can be viewed as +Elements in orders have two representations: they can be viewed as elements in the $Z^n$ giving the coefficients wrt to the order basis where they are elements in. On the other hand, as every order is in a field, they also have a representation as number field elements. -Since, asymptotically, operations are more efficient in the +Since, asymptotically, operations are more efficient in the field (due to fast polynomial arithmetic) than in the order, the primary representation is that as a field element. ## Creation Elements are constructed either as linear combinations of basis elements -or via explicit coercion. Elements will be of type `NfOrdElem`, +or via explicit coercion. Elements will be of type `NfOrdElem`, the type if actually parametrized by the type of the surrounding field and the type of the field elements. E.g. the type of any element in any order of an absolute simple field will be diff --git a/docs/src/orders/ideals.md b/docs/src/orders/ideals.md index 6f2b45e83d..9dfefd0a04 100644 --- a/docs/src/orders/ideals.md +++ b/docs/src/orders/ideals.md @@ -6,7 +6,7 @@ CurrentModule = Hecke (Integral) ideals in orders are always free $Z$-module of the same rank as the order, hence have a representation via a $Z$-basis. This can be made unique -by normalising the corresponding matrix to be in reduced row echelon form +by normalising the corresponding matrix to be in reduced row echelon form (HNF). For ideals in maximal orders $Z_K$, we also have a second presentation coming @@ -89,7 +89,7 @@ mc \ ans The class group, or more precisely the information used to compute it -also allows for principal ideal testing and related tasks. +also allows for principal ideal testing and related tasks. In general, due to the size of the objetcs, the ```fac_elem``` versions are more effcient. diff --git a/docs/src/orders/introduction.md b/docs/src/orders/introduction.md index 2872b5acb0..4dd6a0ba74 100644 --- a/docs/src/orders/introduction.md +++ b/docs/src/orders/introduction.md @@ -3,7 +3,7 @@ CurrentModule = Hecke ``` -This chapter deals with number fields and orders there of. +This chapter deals with number fields and orders there of. We follow the common terminology and conventions as e.g. used in [Cohen1](@cite), [Cohen2](@cite), [PoZa](@cite) or [Marcus](@cite). @@ -16,7 +16,7 @@ and of relative number fields is the same. ## Orders of absolute number fields -Assume that $K$ is defined as an absolute field. +Assume that $K$ is defined as an absolute field. An order $\mathcal O$ of such a field are constructed (implicitely) by specifying a $\mathbf Z$-basis, which is refered to as the *basis* of $\mathcal O$. If $(\omega_1,\dotsc,\omega_d)$ is the basis of $\mathcal O$ and @@ -40,7 +40,7 @@ finitly generated torsion-free module over the Dedekind domain $\mathcal O_K$. A the order $\mathcal O$ is unitary and has $L$ as a fraction field. Due to $\mathcal O_K$ in general not being a principal ideal domain, the module structure is more complicated -and requires so called pseudo-matrices. See +and requires so called pseudo-matrices. See [here](@ref PMatLink) for details on pseudo-matrices, or [Cohen2](@cite), Chapter 1 for an introduction. diff --git a/docs/src/orders/orders.md b/docs/src/orders/orders.md index c7d9360d77..8eda1f4417 100644 --- a/docs/src/orders/orders.md +++ b/docs/src/orders/orders.md @@ -101,7 +101,7 @@ All of the functions have a very similar interface: they return an abelian group and a map converting elements of the group into the objects required. The maps also allow a point-wise inverse to server as the *discrete logarithm* map. -For more information on abelian group, see [here](@ref AbelianGroupLink), +For more information on abelian group, see [here](@ref AbelianGroupLink), for ideals, [here](@ref NfOrdIdlLink). - [`torsion_unit_group(::NfOrd)`](@ref) diff --git a/docs/src/pmat/introduction.md b/docs/src/pmat/introduction.md index e084dbd609..45dd239dc0 100644 --- a/docs/src/pmat/introduction.md +++ b/docs/src/pmat/introduction.md @@ -13,7 +13,7 @@ Let $R$ be a Dedekind domain, typically, the maximal order of some number field $K$, further fix some finite dimensional $K$-vectorspace $V$ (with some basis), frequently $K^n$ or the $K$-structure of some extension of $K$. Since in general $R$ is not a PID, the $R$-modules -in $V$ are usually not free, but still projective. +in $V$ are usually not free, but still projective. Any finitely generated $R$-module $M\subset V$ can be represented as a pseudo-matrix `PMat` as follows: @@ -26,7 +26,7 @@ Following Cohen we call modules of the form $\mathfrak A\omega$ for some ideal $\mathfrak A$ and $\omega \in V$ a *pseudo element*. A system $(\mathfrak A_i, \omega_i)$ is called a pseudo-generating system for $M$ if $\langle \mathfrak A_i\omega_i|i\langle = M$. -A pseudo-generating system is called a pseudo-basis if the +A pseudo-generating system is called a pseudo-basis if the $\omega_i$ are $K$-linear independent. A *pseudo-matrix* $X$ is a tuple containing a vector of ideals diff --git a/docs/src/quad_forms/basics.md b/docs/src/quad_forms/basics.md index ceb20e7b0b..98efb52939 100644 --- a/docs/src/quad_forms/basics.md +++ b/docs/src/quad_forms/basics.md @@ -1,4 +1,4 @@ -# Basics +# Basics ```@meta CurrentModule = Hecke ``` diff --git a/docs/src/quad_forms/introduction.md b/docs/src/quad_forms/introduction.md index d7190d5bfb..9bb02909f5 100644 --- a/docs/src/quad_forms/introduction.md +++ b/docs/src/quad_forms/introduction.md @@ -4,11 +4,11 @@ CurrentModule = Hecke ``` -This chapter deals with quadratic and Hermitian spaces and lattices there of. +This chapter deals with quadratic and Hermitian spaces and lattices there of. ## Definitions and vocabulary -We begin by collecting the necessary definitions and vocabulary. +We begin by collecting the necessary definitions and vocabulary. The terminology follows mainly [Kir16] ### Quadratic and Hermitian spaces @@ -28,7 +28,7 @@ If $V$ is a Hermitian space, we call the matrix $G = (\Phi(e_i, e_j))_{1 \leq i, the *Gram matrix* of $V$. We call $\overline{\phantom{x}}$ the *involution* of $V$. In both cases we refer to the field $E$ as the *base ring* $V$. In this chapter -we will refer to quadratic and Hermitian spaces also just as *spaces*. +we will refer to quadratic and Hermitian spaces also just as *spaces*. For Hermitian lattices, the field $K$ will be refered to as the *fixed field* of $V$. ### Quadratic and Hermitian lattices diff --git a/docs/src/quad_forms/lattices.md b/docs/src/quad_forms/lattices.md index 7d061fe617..b0fe98f0b1 100644 --- a/docs/src/quad_forms/lattices.md +++ b/docs/src/quad_forms/lattices.md @@ -1,4 +1,4 @@ -# Quadratic and hermitian lattices +# Quadratic and hermitian lattices ```@meta CurrentModule = Hecke ``` diff --git a/docs/src/sparse/intro.md b/docs/src/sparse/intro.md index 3f00b124d7..a401d05f4f 100644 --- a/docs/src/sparse/intro.md +++ b/docs/src/sparse/intro.md @@ -8,7 +8,7 @@ CurrentModule = Hecke This chapter deals with sparse linear algebra over commutative rings and fields. -Sparse linear algebra, that is, linear algebra with sparse matrices, +Sparse linear algebra, that is, linear algebra with sparse matrices, plays an important role in various algorithms in algebraic number theory. For example, it is one of the key ingredients in the computation of class groups and discrete logarithms using index calculus methods. @@ -84,7 +84,7 @@ For example, `SMat{fmpz}` is the type for sparse matrices over the integers. In constrast to sparse rows, sparse matrices have a fixed number of rows and columns, that is, they represent elements of the matrices space $\mathrm{Mat}_{n\times m}(R)$. -Internally, sparse matrices are implemented as an array of sparse rows. +Internally, sparse matrices are implemented as an array of sparse rows. As a consequence, unlike their dense counterparts, sparse matrices have a mutable number of rows and it is very performant to add additional rows. ### Construction diff --git a/examples/FieldEnumeration/FieldEnumeration.jl b/examples/FieldEnumeration/FieldEnumeration.jl index 48a7e7b1a1..2431044739 100644 --- a/examples/FieldEnumeration/FieldEnumeration.jl +++ b/examples/FieldEnumeration/FieldEnumeration.jl @@ -43,139 +43,139 @@ function _read_fields(filename::String) end close(f) return identity.(pols) -end +end -global small_solvable_groups = -[ (1, 1), (2, 1), (3, 1), (4, 1), (4, 2), (5, 1), (6, 1), (6, 2), (7, 1), (8, -1), (8, 2), (8, 3), (8, 4), (8, 5), (9, 1), (9, 2), (10, 1), (10, 2), (11, 1), +global small_solvable_groups = +[ (1, 1), (2, 1), (3, 1), (4, 1), (4, 2), (5, 1), (6, 1), (6, 2), (7, 1), (8, +1), (8, 2), (8, 3), (8, 4), (8, 5), (9, 1), (9, 2), (10, 1), (10, 2), (11, 1), (12, 1), (12, 2), (12, 3), (12, 4), (12, 5), (13, 1), (14, 1), (14, 2), (15, 1), (16, 1), (16, 2), (16, 3), (16, 4), (16, 5), (16, 6), (16, 7), (16, 8), (16, 9), -(16, 10), (16, 11), (16, 12), (16, 13), (16, 14), (17, 1), (18, 1), (18, 2), +(16, 10), (16, 11), (16, 12), (16, 13), (16, 14), (17, 1), (18, 1), (18, 2), (18, 3), (18, 4), (18, 5), (19, 1), (20, 1), (20, 2), (20, 3), (20, 4), (20, 5), (21, 1), (21, 2), (22, 1), (22, 2), (23, 1), (24, 1), (24, 2), (24, 3), (24, 4), -(24, 5), (24, 6), (24, 7), (24, 8), (24, 9), (24, 10), (24, 11), (24, 12), (24, -13), (24, 14), (24, 15), (25, 1), (25, 2), (26, 1), (26, 2), (27, 1), (27, 2), +(24, 5), (24, 6), (24, 7), (24, 8), (24, 9), (24, 10), (24, 11), (24, 12), (24, +13), (24, 14), (24, 15), (25, 1), (25, 2), (26, 1), (26, 2), (27, 1), (27, 2), (27, 3), (27, 4), (27, 5), (28, 1), (28, 2), (28, 3), (28, 4), (29, 1), (30, 1), (30, 2), (30, 3), (30, 4), (31, 1), (32, 1), (32, 2), (32, 3), (32, 4), (32, 5), (32, 6), (32, 7), (32, 8), (32, 9), (32, 10), (32, 11), (32, 12), (32, 13), (32, -14), (32, 15), (32, 16), (32, 17), (32, 18), (32, 19), (32, 20), (32, 21), (32, -22), (32, 23), (32, 24), (32, 25), (32, 26), (32, 27), (32, 28), (32, 29), (32, -30), (32, 31), (32, 32), (32, 33), (32, 34), (32, 35), (32, 36), (32, 37), (32, -38), (32, 39), (32, 40), (32, 41), (32, 42), (32, 43), (32, 44), (32, 45), (32, -46), (32, 47), (32, 48), (32, 49), (32, 50), (32, 51), (33, 1), (34, 1), (34, +14), (32, 15), (32, 16), (32, 17), (32, 18), (32, 19), (32, 20), (32, 21), (32, +22), (32, 23), (32, 24), (32, 25), (32, 26), (32, 27), (32, 28), (32, 29), (32, +30), (32, 31), (32, 32), (32, 33), (32, 34), (32, 35), (32, 36), (32, 37), (32, +38), (32, 39), (32, 40), (32, 41), (32, 42), (32, 43), (32, 44), (32, 45), (32, +46), (32, 47), (32, 48), (32, 49), (32, 50), (32, 51), (33, 1), (34, 1), (34, 2), (35, 1), (36, 1), (36, 2), (36, 3), (36, 4), (36, 5), (36, 6), (36, 7), (36, 8), (36, 9), (36, 10), (36, 11), (36, 12), (36, 13), (36, 14), (37, 1), (38, 1), (38, 2), (39, 1), (39, 2), (40, 1), (40, 2), (40, 3), (40, 4), (40, 5), (40, 6), -(40, 7), (40, 8), (40, 9), (40, 10), (40, 11), (40, 12), (40, 13), (40, 14), +(40, 7), (40, 8), (40, 9), (40, 10), (40, 11), (40, 12), (40, 13), (40, 14), (41, 1), (42, 1), (42, 2), (42, 3), (42, 4), (42, 5), (42, 6), (43, 1), (44, 1), (44, 2), (44, 3), (44, 4), (45, 1), (45, 2), (46, 1), (46, 2), (47, 1), (48, 1), -(48, 2), (48, 3), (48, 4), (48, 5), (48, 6), (48, 7), (48, 8), (48, 9), (48, -10), (48, 11), (48, 12), (48, 13), (48, 14), (48, 15), (48, 16), (48, 17), (48, -18), (48, 19), (48, 20), (48, 21), (48, 22), (48, 23), (48, 24), (48, 25), (48, -26), (48, 27), (48, 28), (48, 29), (48, 30), (48, 31), (48, 32), (48, 33), (48, -34), (48, 35), (48, 36), (48, 37), (48, 38), (48, 39), (48, 40), (48, 41), (48, -42), (48, 43), (48, 44), (48, 45), (48, 46), (48, 47), (48, 48), (48, 49), (48, -50), (48, 51), (48, 52), (49, 1), (49, 2), (50, 1), (50, 2), (50, 3), (50, 4), +(48, 2), (48, 3), (48, 4), (48, 5), (48, 6), (48, 7), (48, 8), (48, 9), (48, +10), (48, 11), (48, 12), (48, 13), (48, 14), (48, 15), (48, 16), (48, 17), (48, +18), (48, 19), (48, 20), (48, 21), (48, 22), (48, 23), (48, 24), (48, 25), (48, +26), (48, 27), (48, 28), (48, 29), (48, 30), (48, 31), (48, 32), (48, 33), (48, +34), (48, 35), (48, 36), (48, 37), (48, 38), (48, 39), (48, 40), (48, 41), (48, +42), (48, 43), (48, 44), (48, 45), (48, 46), (48, 47), (48, 48), (48, 49), (48, +50), (48, 51), (48, 52), (49, 1), (49, 2), (50, 1), (50, 2), (50, 3), (50, 4), (50, 5), (51, 1), (52, 1), (52, 2), (52, 3), (52, 4), (52, 5), (53, 1), (54, 1), -(54, 2), (54, 3), (54, 4), (54, 5), (54, 6), (54, 7), (54, 8), (54, 9), (54, -10), (54, 11), (54, 12), (54, 13), (54, 14), (54, 15), (55, 1), (55, 2), (56, +(54, 2), (54, 3), (54, 4), (54, 5), (54, 6), (54, 7), (54, 8), (54, 9), (54, +10), (54, 11), (54, 12), (54, 13), (54, 14), (54, 15), (55, 1), (55, 2), (56, 1), (56, 2), (56, 3), (56, 4), (56, 5), (56, 6), (56, 7), (56, 8), (56, 9), (56, -10), (56, 11), (56, 12), (56, 13), (57, 1), (57, 2), (58, 1), (58, 2), (59, 1), -(60, 1), (60, 2), (60, 3), (60, 4), (60, 6), (60, 7), (60, 8), (60, 9), (60, -10), (60, 11), (60, 12), (60, 13), (61, 1), (62, 1), (62, 2), (63, 1), (63, 2), +10), (56, 11), (56, 12), (56, 13), (57, 1), (57, 2), (58, 1), (58, 2), (59, 1), +(60, 1), (60, 2), (60, 3), (60, 4), (60, 6), (60, 7), (60, 8), (60, 9), (60, +10), (60, 11), (60, 12), (60, 13), (61, 1), (62, 1), (62, 2), (63, 1), (63, 2), (63, 3), (63, 4), (64, 1), (64, 2), (64, 3), (64, 4), (64, 5), (64, 6), (64, 7), -(64, 8), (64, 9), (64, 10), (64, 11), (64, 12), (64, 13), (64, 14), (64, 15), -(64, 16), (64, 17), (64, 18), (64, 19), (64, 20), (64, 21), (64, 22), (64, 23), -(64, 24), (64, 25), (64, 26), (64, 27), (64, 28), (64, 29), (64, 30), (64, 31), -(64, 32), (64, 33), (64, 34), (64, 35), (64, 36), (64, 37), (64, 38), (64, 39), -(64, 40), (64, 41), (64, 42), (64, 43), (64, 44), (64, 45), (64, 46), (64, 47), -(64, 48), (64, 49), (64, 50), (64, 51), (64, 52), (64, 53), (64, 54), (64, 55), -(64, 56), (64, 57), (64, 58), (64, 59), (64, 60), (64, 61), (64, 62), (64, 63), -(64, 64), (64, 65), (64, 66), (64, 67), (64, 68), (64, 69), (64, 70), (64, 71), -(64, 72), (64, 73), (64, 74), (64, 75), (64, 76), (64, 77), (64, 78), (64, 79), -(64, 80), (64, 81), (64, 82), (64, 83), (64, 84), (64, 85), (64, 86), (64, 87), -(64, 88), (64, 89), (64, 90), (64, 91), (64, 92), (64, 93), (64, 94), (64, 95), -(64, 96), (64, 97), (64, 98), (64, 99), (64, 100), (64, 101), (64, 102), (64, -103), (64, 104), (64, 105), (64, 106), (64, 107), (64, 108), (64, 109), (64, -110), (64, 111), (64, 112), (64, 113), (64, 114), (64, 115), (64, 116), (64, -117), (64, 118), (64, 119), (64, 120), (64, 121), (64, 122), (64, 123), (64, -124), (64, 125), (64, 126), (64, 127), (64, 128), (64, 129), (64, 130), (64, -131), (64, 132), (64, 133), (64, 134), (64, 135), (64, 136), (64, 137), (64, -138), (64, 139), (64, 140), (64, 141), (64, 142), (64, 143), (64, 144), (64, -145), (64, 146), (64, 147), (64, 148), (64, 149), (64, 150), (64, 151), (64, -152), (64, 153), (64, 154), (64, 155), (64, 156), (64, 157), (64, 158), (64, -159), (64, 160), (64, 161), (64, 162), (64, 163), (64, 164), (64, 165), (64, -166), (64, 167), (64, 168), (64, 169), (64, 170), (64, 171), (64, 172), (64, -173), (64, 174), (64, 175), (64, 176), (64, 177), (64, 178), (64, 179), (64, -180), (64, 181), (64, 182), (64, 183), (64, 184), (64, 185), (64, 186), (64, -187), (64, 188), (64, 189), (64, 190), (64, 191), (64, 192), (64, 193), (64, -194), (64, 195), (64, 196), (64, 197), (64, 198), (64, 199), (64, 200), (64, -201), (64, 202), (64, 203), (64, 204), (64, 205), (64, 206), (64, 207), (64, -208), (64, 209), (64, 210), (64, 211), (64, 212), (64, 213), (64, 214), (64, -215), (64, 216), (64, 217), (64, 218), (64, 219), (64, 220), (64, 221), (64, -222), (64, 223), (64, 224), (64, 225), (64, 226), (64, 227), (64, 228), (64, -229), (64, 230), (64, 231), (64, 232), (64, 233), (64, 234), (64, 235), (64, -236), (64, 237), (64, 238), (64, 239), (64, 240), (64, 241), (64, 242), (64, -243), (64, 244), (64, 245), (64, 246), (64, 247), (64, 248), (64, 249), (64, -250), (64, 251), (64, 252), (64, 253), (64, 254), (64, 255), (64, 256), (64, -257), (64, 258), (64, 259), (64, 260), (64, 261), (64, 262), (64, 263), (64, -264), (64, 265), (64, 266), (64, 267), (65, 1), (66, 1), (66, 2), (66, 3), (66, +(64, 8), (64, 9), (64, 10), (64, 11), (64, 12), (64, 13), (64, 14), (64, 15), +(64, 16), (64, 17), (64, 18), (64, 19), (64, 20), (64, 21), (64, 22), (64, 23), +(64, 24), (64, 25), (64, 26), (64, 27), (64, 28), (64, 29), (64, 30), (64, 31), +(64, 32), (64, 33), (64, 34), (64, 35), (64, 36), (64, 37), (64, 38), (64, 39), +(64, 40), (64, 41), (64, 42), (64, 43), (64, 44), (64, 45), (64, 46), (64, 47), +(64, 48), (64, 49), (64, 50), (64, 51), (64, 52), (64, 53), (64, 54), (64, 55), +(64, 56), (64, 57), (64, 58), (64, 59), (64, 60), (64, 61), (64, 62), (64, 63), +(64, 64), (64, 65), (64, 66), (64, 67), (64, 68), (64, 69), (64, 70), (64, 71), +(64, 72), (64, 73), (64, 74), (64, 75), (64, 76), (64, 77), (64, 78), (64, 79), +(64, 80), (64, 81), (64, 82), (64, 83), (64, 84), (64, 85), (64, 86), (64, 87), +(64, 88), (64, 89), (64, 90), (64, 91), (64, 92), (64, 93), (64, 94), (64, 95), +(64, 96), (64, 97), (64, 98), (64, 99), (64, 100), (64, 101), (64, 102), (64, +103), (64, 104), (64, 105), (64, 106), (64, 107), (64, 108), (64, 109), (64, +110), (64, 111), (64, 112), (64, 113), (64, 114), (64, 115), (64, 116), (64, +117), (64, 118), (64, 119), (64, 120), (64, 121), (64, 122), (64, 123), (64, +124), (64, 125), (64, 126), (64, 127), (64, 128), (64, 129), (64, 130), (64, +131), (64, 132), (64, 133), (64, 134), (64, 135), (64, 136), (64, 137), (64, +138), (64, 139), (64, 140), (64, 141), (64, 142), (64, 143), (64, 144), (64, +145), (64, 146), (64, 147), (64, 148), (64, 149), (64, 150), (64, 151), (64, +152), (64, 153), (64, 154), (64, 155), (64, 156), (64, 157), (64, 158), (64, +159), (64, 160), (64, 161), (64, 162), (64, 163), (64, 164), (64, 165), (64, +166), (64, 167), (64, 168), (64, 169), (64, 170), (64, 171), (64, 172), (64, +173), (64, 174), (64, 175), (64, 176), (64, 177), (64, 178), (64, 179), (64, +180), (64, 181), (64, 182), (64, 183), (64, 184), (64, 185), (64, 186), (64, +187), (64, 188), (64, 189), (64, 190), (64, 191), (64, 192), (64, 193), (64, +194), (64, 195), (64, 196), (64, 197), (64, 198), (64, 199), (64, 200), (64, +201), (64, 202), (64, 203), (64, 204), (64, 205), (64, 206), (64, 207), (64, +208), (64, 209), (64, 210), (64, 211), (64, 212), (64, 213), (64, 214), (64, +215), (64, 216), (64, 217), (64, 218), (64, 219), (64, 220), (64, 221), (64, +222), (64, 223), (64, 224), (64, 225), (64, 226), (64, 227), (64, 228), (64, +229), (64, 230), (64, 231), (64, 232), (64, 233), (64, 234), (64, 235), (64, +236), (64, 237), (64, 238), (64, 239), (64, 240), (64, 241), (64, 242), (64, +243), (64, 244), (64, 245), (64, 246), (64, 247), (64, 248), (64, 249), (64, +250), (64, 251), (64, 252), (64, 253), (64, 254), (64, 255), (64, 256), (64, +257), (64, 258), (64, 259), (64, 260), (64, 261), (64, 262), (64, 263), (64, +264), (64, 265), (64, 266), (64, 267), (65, 1), (66, 1), (66, 2), (66, 3), (66, 4), (67, 1), (68, 1), (68, 2), (68, 3), (68, 4), (68, 5), (69, 1), (70, 1), (70, 2), (70, 3), (70, 4), (71, 1), (72, 1), (72, 2), (72, 3), (72, 4), (72, 5), (72, 6), (72, 7), (72, 8), (72, 9), (72, 10), (72, 11), (72, 12), (72, 13), (72, 14), -(72, 15), (72, 16), (72, 17), (72, 18), (72, 19), (72, 20), (72, 21), (72, 22), -(72, 23), (72, 24), (72, 25), (72, 26), (72, 27), (72, 28), (72, 29), (72, 30), -(72, 31), (72, 32), (72, 33), (72, 34), (72, 35), (72, 36), (72, 37), (72, 38), -(72, 39), (72, 40), (72, 41), (72, 42), (72, 43), (72, 44), (72, 45), (72, 46), +(72, 15), (72, 16), (72, 17), (72, 18), (72, 19), (72, 20), (72, 21), (72, 22), +(72, 23), (72, 24), (72, 25), (72, 26), (72, 27), (72, 28), (72, 29), (72, 30), +(72, 31), (72, 32), (72, 33), (72, 34), (72, 35), (72, 36), (72, 37), (72, 38), +(72, 39), (72, 40), (72, 41), (72, 42), (72, 43), (72, 44), (72, 45), (72, 46), (72, 47), (72, 48), (72, 49), (72, 50), (73, 1), (74, 1), (74, 2), (75, 1), (75, 2), (75, 3), (76, 1), (76, 2), (76, 3), (76, 4), (77, 1), (78, 1), (78, 2), (78, 3), (78, 4), (78, 5), (78, 6), (79, 1), (80, 1), (80, 2), (80, 3), (80, 4), (80, -5), (80, 6), (80, 7), (80, 8), (80, 9), (80, 10), (80, 11), (80, 12), (80, 13), -(80, 14), (80, 15), (80, 16), (80, 17), (80, 18), (80, 19), (80, 20), (80, 21), -(80, 22), (80, 23), (80, 24), (80, 25), (80, 26), (80, 27), (80, 28), (80, 29), -(80, 30), (80, 31), (80, 32), (80, 33), (80, 34), (80, 35), (80, 36), (80, 37), -(80, 38), (80, 39), (80, 40), (80, 41), (80, 42), (80, 43), (80, 44), (80, 45), -(80, 46), (80, 47), (80, 48), (80, 49), (80, 50), (80, 51), (80, 52), (81, 1), -(81, 2), (81, 3), (81, 4), (81, 5), (81, 6), (81, 7), (81, 8), (81, 9), (81, -10), (81, 11), (81, 12), (81, 13), (81, 14), (81, 15), (82, 1), (82, 2), (83, +5), (80, 6), (80, 7), (80, 8), (80, 9), (80, 10), (80, 11), (80, 12), (80, 13), +(80, 14), (80, 15), (80, 16), (80, 17), (80, 18), (80, 19), (80, 20), (80, 21), +(80, 22), (80, 23), (80, 24), (80, 25), (80, 26), (80, 27), (80, 28), (80, 29), +(80, 30), (80, 31), (80, 32), (80, 33), (80, 34), (80, 35), (80, 36), (80, 37), +(80, 38), (80, 39), (80, 40), (80, 41), (80, 42), (80, 43), (80, 44), (80, 45), +(80, 46), (80, 47), (80, 48), (80, 49), (80, 50), (80, 51), (80, 52), (81, 1), +(81, 2), (81, 3), (81, 4), (81, 5), (81, 6), (81, 7), (81, 8), (81, 9), (81, +10), (81, 11), (81, 12), (81, 13), (81, 14), (81, 15), (82, 1), (82, 2), (83, 1), (84, 1), (84, 2), (84, 3), (84, 4), (84, 5), (84, 6), (84, 7), (84, 8), (84, -9), (84, 10), (84, 11), (84, 12), (84, 13), (84, 14), (84, 15), (85, 1), (86, +9), (84, 10), (84, 11), (84, 12), (84, 13), (84, 14), (84, 15), (85, 1), (86, 1), (86, 2), (87, 1), (88, 1), (88, 2), (88, 3), (88, 4), (88, 5), (88, 6), (88, -7), (88, 8), (88, 9), (88, 10), (88, 11), (88, 12), (89, 1), (90, 1), (90, 2), -(90, 3), (90, 4), (90, 5), (90, 6), (90, 7), (90, 8), (90, 9), (90, 10), (91, +7), (88, 8), (88, 9), (88, 10), (88, 11), (88, 12), (89, 1), (90, 1), (90, 2), +(90, 3), (90, 4), (90, 5), (90, 6), (90, 7), (90, 8), (90, 9), (90, 10), (91, 1), (92, 1), (92, 2), (92, 3), (92, 4), (93, 1), (93, 2), (94, 1), (94, 2), (95, 1), (96, 1), (96, 2), (96, 3), (96, 4), (96, 5), (96, 6), (96, 7), (96, 8), (96, -9), (96, 10), (96, 11), (96, 12), (96, 13), (96, 14), (96, 15), (96, 16), (96, -17), (96, 18), (96, 19), (96, 20), (96, 21), (96, 22), (96, 23), (96, 24), (96, -25), (96, 26), (96, 27), (96, 28), (96, 29), (96, 30), (96, 31), (96, 32), (96, -33), (96, 34), (96, 35), (96, 36), (96, 37), (96, 38), (96, 39), (96, 40), (96, -41), (96, 42), (96, 43), (96, 44), (96, 45), (96, 46), (96, 47), (96, 48), (96, -49), (96, 50), (96, 51), (96, 52), (96, 53), (96, 54), (96, 55), (96, 56), (96, -57), (96, 58), (96, 59), (96, 60), (96, 61), (96, 62), (96, 63), (96, 64), (96, -65), (96, 66), (96, 67), (96, 68), (96, 69), (96, 70), (96, 71), (96, 72), (96, -73), (96, 74), (96, 75), (96, 76), (96, 77), (96, 78), (96, 79), (96, 80), (96, -81), (96, 82), (96, 83), (96, 84), (96, 85), (96, 86), (96, 87), (96, 88), (96, -89), (96, 90), (96, 91), (96, 92), (96, 93), (96, 94), (96, 95), (96, 96), (96, -97), (96, 98), (96, 99), (96, 100), (96, 101), (96, 102), (96, 103), (96, 104), -(96, 105), (96, 106), (96, 107), (96, 108), (96, 109), (96, 110), (96, 111), -(96, 112), (96, 113), (96, 114), (96, 115), (96, 116), (96, 117), (96, 118), -(96, 119), (96, 120), (96, 121), (96, 122), (96, 123), (96, 124), (96, 125), -(96, 126), (96, 127), (96, 128), (96, 129), (96, 130), (96, 131), (96, 132), -(96, 133), (96, 134), (96, 135), (96, 136), (96, 137), (96, 138), (96, 139), -(96, 140), (96, 141), (96, 142), (96, 143), (96, 144), (96, 145), (96, 146), -(96, 147), (96, 148), (96, 149), (96, 150), (96, 151), (96, 152), (96, 153), -(96, 154), (96, 155), (96, 156), (96, 157), (96, 158), (96, 159), (96, 160), -(96, 161), (96, 162), (96, 163), (96, 164), (96, 165), (96, 166), (96, 167), -(96, 168), (96, 169), (96, 170), (96, 171), (96, 172), (96, 173), (96, 174), -(96, 175), (96, 176), (96, 177), (96, 178), (96, 179), (96, 180), (96, 181), -(96, 182), (96, 183), (96, 184), (96, 185), (96, 186), (96, 187), (96, 188), -(96, 189), (96, 190), (96, 191), (96, 192), (96, 193), (96, 194), (96, 195), -(96, 196), (96, 197), (96, 198), (96, 199), (96, 200), (96, 201), (96, 202), -(96, 203), (96, 204), (96, 205), (96, 206), (96, 207), (96, 208), (96, 209), -(96, 210), (96, 211), (96, 212), (96, 213), (96, 214), (96, 215), (96, 216), -(96, 217), (96, 218), (96, 219), (96, 220), (96, 221), (96, 222), (96, 223), -(96, 224), (96, 225), (96, 226), (96, 227), (96, 228), (96, 229), (96, 230), -(96, 231), (97, 1), (98, 1), (98, 2), (98, 3), (98, 4), (98, 5), (99, 1), (99, -2), (100, 1), (100, 2), (100, 3), (100, 4), (100, 5), (100, 6), (100, 7), (100, -8), (100, 9), (100, 10), (100, 11), (100, 12), (100, 13), (100, 14), (100, 15), +9), (96, 10), (96, 11), (96, 12), (96, 13), (96, 14), (96, 15), (96, 16), (96, +17), (96, 18), (96, 19), (96, 20), (96, 21), (96, 22), (96, 23), (96, 24), (96, +25), (96, 26), (96, 27), (96, 28), (96, 29), (96, 30), (96, 31), (96, 32), (96, +33), (96, 34), (96, 35), (96, 36), (96, 37), (96, 38), (96, 39), (96, 40), (96, +41), (96, 42), (96, 43), (96, 44), (96, 45), (96, 46), (96, 47), (96, 48), (96, +49), (96, 50), (96, 51), (96, 52), (96, 53), (96, 54), (96, 55), (96, 56), (96, +57), (96, 58), (96, 59), (96, 60), (96, 61), (96, 62), (96, 63), (96, 64), (96, +65), (96, 66), (96, 67), (96, 68), (96, 69), (96, 70), (96, 71), (96, 72), (96, +73), (96, 74), (96, 75), (96, 76), (96, 77), (96, 78), (96, 79), (96, 80), (96, +81), (96, 82), (96, 83), (96, 84), (96, 85), (96, 86), (96, 87), (96, 88), (96, +89), (96, 90), (96, 91), (96, 92), (96, 93), (96, 94), (96, 95), (96, 96), (96, +97), (96, 98), (96, 99), (96, 100), (96, 101), (96, 102), (96, 103), (96, 104), +(96, 105), (96, 106), (96, 107), (96, 108), (96, 109), (96, 110), (96, 111), +(96, 112), (96, 113), (96, 114), (96, 115), (96, 116), (96, 117), (96, 118), +(96, 119), (96, 120), (96, 121), (96, 122), (96, 123), (96, 124), (96, 125), +(96, 126), (96, 127), (96, 128), (96, 129), (96, 130), (96, 131), (96, 132), +(96, 133), (96, 134), (96, 135), (96, 136), (96, 137), (96, 138), (96, 139), +(96, 140), (96, 141), (96, 142), (96, 143), (96, 144), (96, 145), (96, 146), +(96, 147), (96, 148), (96, 149), (96, 150), (96, 151), (96, 152), (96, 153), +(96, 154), (96, 155), (96, 156), (96, 157), (96, 158), (96, 159), (96, 160), +(96, 161), (96, 162), (96, 163), (96, 164), (96, 165), (96, 166), (96, 167), +(96, 168), (96, 169), (96, 170), (96, 171), (96, 172), (96, 173), (96, 174), +(96, 175), (96, 176), (96, 177), (96, 178), (96, 179), (96, 180), (96, 181), +(96, 182), (96, 183), (96, 184), (96, 185), (96, 186), (96, 187), (96, 188), +(96, 189), (96, 190), (96, 191), (96, 192), (96, 193), (96, 194), (96, 195), +(96, 196), (96, 197), (96, 198), (96, 199), (96, 200), (96, 201), (96, 202), +(96, 203), (96, 204), (96, 205), (96, 206), (96, 207), (96, 208), (96, 209), +(96, 210), (96, 211), (96, 212), (96, 213), (96, 214), (96, 215), (96, 216), +(96, 217), (96, 218), (96, 219), (96, 220), (96, 221), (96, 222), (96, 223), +(96, 224), (96, 225), (96, 226), (96, 227), (96, 228), (96, 229), (96, 230), +(96, 231), (97, 1), (98, 1), (98, 2), (98, 3), (98, 4), (98, 5), (99, 1), (99, +2), (100, 1), (100, 2), (100, 3), (100, 4), (100, 5), (100, 6), (100, 7), (100, +8), (100, 9), (100, 10), (100, 11), (100, 12), (100, 13), (100, 14), (100, 15), (100, 16) ] diff --git a/examples/FieldEnumeration/abelian_extensions.jl b/examples/FieldEnumeration/abelian_extensions.jl index c188dac12d..463aa88f61 100644 --- a/examples/FieldEnumeration/abelian_extensions.jl +++ b/examples/FieldEnumeration/abelian_extensions.jl @@ -121,7 +121,7 @@ function main() @info "Only real fields: $only_real" @info "Only complex fields: $only_complex" @info "Input from: $input" - + if old_output == "" @info "Output to: $output (default)" else @@ -157,7 +157,7 @@ function main() ending = String(split(basename(input), ".")[2]) - relative_deg = prod(type) + relative_deg = prod(type) if ending == "nfdb" DBin = Base.read(input, Hecke.NFDB) diff --git a/examples/FieldEnumeration/absolute_abelian.jl b/examples/FieldEnumeration/absolute_abelian.jl index 3c81a6b2f2..1798be1df6 100644 --- a/examples/FieldEnumeration/absolute_abelian.jl +++ b/examples/FieldEnumeration/absolute_abelian.jl @@ -2,7 +2,7 @@ using Hecke Base.:*(x::Hecke.NfRelNSElem{Nemo.nf_elem}) = x -function _get_simple_extension_and_maximal_order(K) +function _get_simple_extension_and_maximal_order(K) @assert degree(base_ring(K)) == 1 pol = K.pol k = length(pol) @@ -114,7 +114,7 @@ for (i, k) in enumerate(l_conductors) L=number_field(C) LL = _get_simple_extension_and_maximal_order(L) LLdisc = discriminant(maximal_order(LL)) - + if LLdisc != prod( p^e for (p, e) in C.absolute_discriminant) println("Ups") @show LLdisc diff --git a/examples/FieldEnumeration/absolute_abelian_with_conductors.jl b/examples/FieldEnumeration/absolute_abelian_with_conductors.jl index a4268a3194..2f8d4b7cbb 100644 --- a/examples/FieldEnumeration/absolute_abelian_with_conductors.jl +++ b/examples/FieldEnumeration/absolute_abelian_with_conductors.jl @@ -113,7 +113,7 @@ function main() ls = subgroups(r, quotype = gtype, fun = (x, y) -> quo(x, y, false)[2]) for s in ls C = ray_class_field(mr, s)::Hecke.ClassField{Hecke.MapRayClassGrp, GrpAbFinGenMap} - if Hecke._is_conductor_minQQ(C, n) + if Hecke._is_conductor_minQQ(C, n) push!(class_fields, C) end end @@ -149,7 +149,7 @@ function main() f = Qx(fmpq[coeff(coeff(fK, j), 0) for j = 0:degree(fK)]) polys[t] = f end - NS, gNS = number_field(polys, check = false, cached = false) + NS, gNS = number_field(polys, check = false, cached = false) push!(fields, (NS, Hecke.discriminantQQ(O, C, Int(minimum(defining_modulus(C)[1]))))) end end diff --git a/examples/FieldEnumeration/all_fields.jl b/examples/FieldEnumeration/all_fields.jl index 3e7540b6e3..ed82054653 100644 --- a/examples/FieldEnumeration/all_fields.jl +++ b/examples/FieldEnumeration/all_fields.jl @@ -56,7 +56,7 @@ function parse_commandline() help = "Only CM fields" action = :store_true "--max-ab-subfields" - help = "File containing maximal abelian subextensions" + help = "File containing maximal abelian subextensions" "--simplify" help = "Simplify the field" action = :store_true @@ -233,7 +233,7 @@ function main() DBout = Hecke.NFDB(res) t = "fields($n, $i, $dbound, only_real = $only_real, simplify = $simplify)" - if rdbound !== nothing + if rdbound !== nothing t = t * " (rd bound $rdbound)" end if maxabsubfields isa String diff --git a/examples/FieldEnumeration/compute_class_groups.jl b/examples/FieldEnumeration/compute_class_groups.jl index 2c2ba89128..e8e6a3c29f 100644 --- a/examples/FieldEnumeration/compute_class_groups.jl +++ b/examples/FieldEnumeration/compute_class_groups.jl @@ -78,7 +78,7 @@ function has_obviously_not_relative_class_number_one(K::AnticNumberField) for (k,_) in subs if degree(k) == degree(K) continue - end + end fl, tau = Hecke.iscm_field(k) if !fl continue @@ -90,8 +90,8 @@ function has_obviously_not_relative_class_number_one(K::AnticNumberField) hminus = divexact(h, hplus) if hminus > 4 || hminus == 3 return true - end - end + end + end return false end @@ -178,7 +178,7 @@ function main() r = Hecke._create_record(K) if _relative_class_number - if hrelative == 0 + if hrelative == 0 hK = _fancy_class_number(OK) fl, tau = Hecke.iscm_field(K) k, = fixed_field(K, tau, simplify = true) diff --git a/examples/FieldEnumeration/cubic.jl b/examples/FieldEnumeration/cubic.jl index c3f89e955e..842eb5c150 100644 --- a/examples/FieldEnumeration/cubic.jl +++ b/examples/FieldEnumeration/cubic.jl @@ -38,7 +38,7 @@ end #Note: this is not optimised, but hopefully correct. #if you need more, analyse Hasse... -function induce_action(phi::Hecke.NfToNfMor, mR::T) where T <: Map{GrpAbFinGen, +function induce_action(phi::Hecke.NfToNfMor, mR::T) where T <: Map{GrpAbFinGen, Hecke.FacElemMon{Hecke.NfOrdIdlSet}} #function induce_action(phi::Hecke.NfToNfMor, mR::Hecke.MapRayClassGrpFacElem{Hecke.GrpAbFinGen}) lp, x = Hecke.find_gens( @@ -116,7 +116,7 @@ function s3_with_discriminant(I::NfOrdIdl) println("need to try $D and $F as conductors") #all quadratics with conductor D: r, mr = ray_class_group(D, n_quo = 2) - + for s in index_p_subgroups(r, fmpz(2), (A,x) -> quo(A, x)[2]) a = ray_class_field(mr*pseudo_inv(s)) # println(a, " with cond ", conductor(a)) @@ -134,7 +134,7 @@ function s3_with_discriminant(I::NfOrdIdl) k = base_ring(Kr) Ka, m1 = absolute_simple_field(Kr) m2 = restrict(inv(m1), k) - sigma = hom(Ka, Ka, m1\(conj(m1(gen(Ka))))) + sigma = hom(Ka, Ka, m1\(conj(m1(gen(Ka))))) #m1: Kr -> Ka, m2: base_ring(Kr) -> Ka M = lll(maximal_order(Ka)) FF = ideal(M, F.gen_one, M(m2(k(F.gen_two)))) @@ -146,7 +146,7 @@ function s3_with_discriminant(I::NfOrdIdl) sigma_R = induce_action(sigma, mR) # println(sigma_R) - + for S = Hecke.stable_subgroups(R, [3], [sigma_R], op=quo) @assert order(S[1]) == 3 s, ms = snf(S[1]) diff --git a/examples/FieldEnumeration/smallest_field.jl b/examples/FieldEnumeration/smallest_field.jl index 562d32ab9f..8bb20e068a 100644 --- a/examples/FieldEnumeration/smallest_field.jl +++ b/examples/FieldEnumeration/smallest_field.jl @@ -27,7 +27,7 @@ function _read_fields(filename::String) end close(f) return pols -end +end function parse_commandline() s = ArgParseSettings() diff --git a/examples/IsPower.jl b/examples/IsPower.jl index 7522bdf46c..4aa8805831 100644 --- a/examples/IsPower.jl +++ b/examples/IsPower.jl @@ -129,7 +129,7 @@ function ispower_mod_p(a::nf_elem, i::Int) the "correct" one will have no_fac ones in the front rear (a+b) < bd => (a+b)/c < bd/c round((a+b)/c) - round(a/c) - round(b/c) - =# + =# no_rt, trafo = lll_with_removal(trafo, fmpz(p)^2*fmpz(2*no_fac)) #THINK trafo = sub(trafo, 1:no_rt, 1:ncols(trafo)) d = Dict{fmpz_mat, Vector{Int}}() @@ -175,7 +175,7 @@ function ispower_mod_p(a::nf_elem, i::Int) end if j > 40 error("") end end -end +end function Hecke.crt(A::Vector{<:NfAbsOrdElem}, I::Vector{<:NfAbsOrdIdl}) while length(I) > 1 @@ -251,7 +251,7 @@ function Hecke.roots(a::qadic, i::Int) end local zeta - j = gcd(size(k)-1, i) + j = gcd(size(k)-1, i) if j != 1 while true zeta = rand(k)^(divexact(size(k)-1, j)) diff --git a/examples/MultDep.jl b/examples/MultDep.jl index 0862317657..f894668bfe 100644 --- a/examples/MultDep.jl +++ b/examples/MultDep.jl @@ -128,7 +128,7 @@ mutable struct GeIdeal end end -import Hecke.gcd, Hecke.isone, Hecke.*, Hecke.gcd_into!, Hecke.copy, Hecke.divexact, +import Hecke.gcd, Hecke.isone, Hecke.*, Hecke.gcd_into!, Hecke.copy, Hecke.divexact, Hecke.isunit, Hecke.coprime_base, Hecke.valuation function make_compatible!(a::GeIdeal, b::GeIdeal) @@ -257,7 +257,7 @@ function mult_syzygies_units(A::Vector{FacElem{nf_elem, AnticNumberField}}) continue end d = reduce(lcm, map(denominator, s)) - gamma = fmpz[FlintZZ(x*d)::fmpz for x = s] + gamma = fmpz[FlintZZ(x*d)::fmpz for x = s] @assert reduce(gcd, gamma) == 1 # should be a primitive relation @time if !verify_gamma(push!(copy(u), a), gamma, fmpz(p)^prec) prec *= 2 @@ -274,7 +274,7 @@ function mult_syzygies_units(A::Vector{FacElem{nf_elem, AnticNumberField}}) end #= let u_1, .., u_n be units and - has rank s and + has rank s and r_i in Z^n be such that prod u_i^r_i = 1 (OK, sum of the logs is zero) rank = s as well @@ -288,7 +288,7 @@ function mult_syzygies_units(A::Vector{FacElem{nf_elem, AnticNumberField}}) [H | 0] [v_i | i] = 0 so, since H is triangular(!!) v_1, ... v_n-s = 0 and = - + for the case of n=s+1 this is mostly the "normal" construction. Note: as a side, the relations do not have to be primitive. If they are, (and n=s+1), then H = 1 @@ -352,7 +352,7 @@ function lift_reco(::FlintRationalField, a::padic; reco::Bool = false) R = parent(a) fl, c, d = rational_reconstruction(u, prime(R, N-v)) !fl && return nothing - + x = FlintQQ(c, d) if v < 0 return x//prime(R, -v) diff --git a/examples/MultiQuad.jl b/examples/MultiQuad.jl index fccfc5021f..d8315e3891 100644 --- a/examples/MultiQuad.jl +++ b/examples/MultiQuad.jl @@ -111,7 +111,7 @@ function multi_quad(d::Vector{fmpz}, B::Int) lp = prime_ideals_up_to(zk, Int(B), complete = false, degree_limit = 1) #only need split primes ... lp = [ x for x = lp if minimum(x) in cp] - @assert all(x->minimum(x) == norm(x), lp) + @assert all(x->minimum(x) == norm(x), lp) if length(lp) > 0 S, mS = Hecke.sunit_group_fac_elem(lp) else @@ -140,7 +140,7 @@ function multi_quad(d::Vector{fmpz}, B::Int) return c end -function dlog(dl::Dict, x, p::Int) +function dlog(dl::Dict, x, p::Int) if iszero(x) throw(Hecke.BadPrime(1)) end @@ -215,7 +215,7 @@ function _nullspace(A::nmod_mat) end else A = sub(A, i:r, c+1:ncols(A)) - end + end A = A' @assert iszero(A_orig * A) for i = keys(factor(p).fac) @@ -336,12 +336,12 @@ function saturate_exp(c::Hecke.ClassGrpCtx, p::Int, stable = 1.5) AA = sub(AA, 1:i, 1:ncols(AA))' else @assert rank(AA') == ncols(AA) - end + end # @show cAA, pp, q, size(AA) - if cAA == ncols(AA) + if cAA == ncols(AA) break #the other ideals are going to give the same info #for multi-quad as the field is normal - end + end catch e @show "BadPrime" if !isa(e, Hecke.BadPrime) @@ -349,7 +349,7 @@ function saturate_exp(c::Hecke.ClassGrpCtx, p::Int, stable = 1.5) end end end - if cAA == ncols(AA) + if cAA == ncols(AA) #println("good $i") i += 1 else @@ -428,7 +428,7 @@ function saturate(c::Hecke.ClassGrpCtx, n::Int, stable = 3.5) g = content(r) g = gcd(g, n) divexact!(r, r, g) -# g == 1 || println("non triv. content $g in ", e[:, i]) +# g == 1 || println("non triv. content $g in ", e[:, i]) a = fe(c.R_gen[1])^r[1, 1] fac_a = r[1, 1] * c.M.bas_gens[1] for j = 2:length(c.R_gen) @@ -443,7 +443,7 @@ function saturate(c::Hecke.ClassGrpCtx, n::Int, stable = 3.5) @assert length(c.R_gen) + length(c.R_rel) + 1 == nrows(e) a *= fe(zeta)^r[nrows(e), 1] end - + decom = Dict((c.FB.ideals[k], v) for (k,v) = fac_a) if n == g fl = true @@ -465,7 +465,7 @@ function saturate(c::Hecke.ClassGrpCtx, n::Int, stable = 3.5) error("not a power") end end - + #= Idea - before I forget: we have generators g_1, ..., g_n on input and enlarge by h_1, ..., h_r @@ -496,7 +496,7 @@ function saturate(c::Hecke.ClassGrpCtx, n::Int, stable = 3.5) push!(R, zeta) end R = vcat(R, n_gen) - @assert ncols(Ti) == length(R) + @assert ncols(Ti) == length(R) d = Hecke.class_group_init(c.FB, SMat{fmpz}, add_rels = false) @@ -508,7 +508,7 @@ function saturate(c::Hecke.ClassGrpCtx, n::Int, stable = 3.5) #TODO remove zeta from relations!! Hecke.class_group_add_relation(d, a) end - + return d end @@ -550,7 +550,7 @@ function simplify(c::Hecke.ClassGrpCtx) Hecke._add_unit(U, c.R_rel[i]) end end - for i=1:length(U.units) + for i=1:length(U.units) Hecke.class_group_add_relation(d, U.units[i], SRow(FlintZZ)) end return d @@ -589,12 +589,12 @@ end # units: we have new^n = prod old. use this to obtain new basis # # track the torsion as well -# if n is divisible by 8, then, generically, the saturation needs to +# if n is divisible by 8, then, generically, the saturation needs to # be followed by a second saturation at 2: # Elements look like (locally) an 8-th power but are only a 4-th # so I can only extract a 4-th. # However, it might be an 8-th (or the product of 2 might be an 8-th) # Darn. Math is unfair. -# +# # extend to gen. mult group... end diff --git a/examples/NFDB.jl b/examples/NFDB.jl index b5c14173fc..8a10800051 100644 --- a/examples/NFDB.jl +++ b/examples/NFDB.jl @@ -3,7 +3,7 @@ function _class_group(c::Vector{BigInt}) f = Qx(c) K, a = number_field(f, cached = false) OK = lll(maximal_order(K)) - C, mC = class_group(OK) + C, mC = class_group(OK) return BigInt(order(C)) end @@ -32,7 +32,7 @@ end # mmap::Vector{UInt} # hash::UInt # field_names::Vector{Symbol} -# +# # function NFDB(path::String) # metadata = Dict() # f = open(path) @@ -191,7 +191,7 @@ const properties_comp = Dict(:id => (Int, x -> UInt(hash(x))), :isabelian => (Bool, x -> isabelian(automorphism_group(x)[1])), :non_simple => (Vector{fmpq_poly}, x -> non_simple_extension(x)), :galois_group => (Tuple{Int, Int}, x -> error())) - + for (k, v) in properties_comp @eval ($k)(D::NFDBRecord) = D[Symbol($k)]::($(v[1])) diff --git a/examples/Petri.jl b/examples/Petri.jl index 8468e7b9ca..94d7443385 100644 --- a/examples/Petri.jl +++ b/examples/Petri.jl @@ -139,7 +139,7 @@ function fire(P::Petri) end # println(stderr, p) # println(stderr, P.d) -end +end function fire() global pe, M, c, pe @@ -272,7 +272,7 @@ function petri(P::Petri) end # push!(n[2], callback("PetriNet.trigger", "(:"*n[2].s[:id]*", 1)")) push!(c, g) - return c + return c end node_index(s::Symbol) = findfirst(x -> x.s[:id] == String(s), n) @@ -310,7 +310,7 @@ function trigger(t::Tuple) j = node_index(i) n[j].s[:title] = string(Char(Int(n[j].s[:title][1])+1)) end - + display(Francy.FrancyMimeString, c) end diff --git a/examples/Plesken.jl b/examples/Plesken.jl index 5c2bad0935..5e974cc8b8 100644 --- a/examples/Plesken.jl +++ b/examples/Plesken.jl @@ -15,7 +15,7 @@ # residueRing creation: rename generator to prefix with r or so # # Padic -> pAdic -# gen for ResidueRing(Poly) +# gen for ResidueRing(Poly) ################################################# @@ -259,7 +259,7 @@ function plesken_kummer(p::fmpz, r::Int, s::Int) if descent b = f_tr(a, f, ord) #println("$i: trace of $a is $b") -# pol = minpoly_aut(b, x->x^(p^(r^(i-1)))) +# pol = minpoly_aut(b, x->x^(p^(r^(i-1)))) pol = minpoly_pow(b, r) ## does not work: expo too large #println(pol) arr = Array{typeof(zero(T))}(degree(pol)+1) diff --git a/examples/PolyRoot.jl b/examples/PolyRoot.jl index 68e7193ce2..bd561ad87a 100644 --- a/examples/PolyRoot.jl +++ b/examples/PolyRoot.jl @@ -24,7 +24,7 @@ function ispower(f::PolyElem{T}, n::Int) where {T <: FieldElem} p *= 2 end r = (f*r) % gen(parent(f))^d - #this is the ONLY possible candidate + #this is the ONLY possible candidate #(think about n-th roots of 1 - maybe only other roots lift?) #NO: this is a purely transcendental extension, roots of unity are in #base_ring or don't come in. diff --git a/examples/RayClass.jl b/examples/RayClass.jl index ed8c05d1a2..2585ec5f7e 100644 --- a/examples/RayClass.jl +++ b/examples/RayClass.jl @@ -4,7 +4,7 @@ mutable struct MapRayClassGrpNew{T} #<: Hecke.Map{T, Hecke.NfOrdIdlSet} header::Hecke.MapHeader modulus_fin::Hecke.NfOrdIdl modulus_inf::Vector{Hecke.InfPlc} - + function MapRayClassGrpNew{T}() where {T} return new{T}() end @@ -13,10 +13,10 @@ end # # Modify the map of the class group so that the chosen representatives are coprime to m -# +# function _coprime_ideal(C::GrpAbFinGen, mC::Map, m::NfOrdIdl) - + O=parent(m).order K=nf(O) L=NfOrdIdl[] @@ -24,14 +24,14 @@ function _coprime_ideal(C::GrpAbFinGen, mC::Map, m::NfOrdIdl) a=mC(C[i]) if iscoprime(a,m) push!(L,a) - else + else J=inv(a) s=K(rand(J.num,5))//J.den # Is the bound acceptable? I=s*a simplify(I) I = numerator(I) while !iscoprime(I,m) - s=K(rand(J.num,5))//J.den + s=K(rand(J.num,5))//J.den I=s*a simplify(I) I = numerator(I) @@ -39,7 +39,7 @@ function _coprime_ideal(C::GrpAbFinGen, mC::Map, m::NfOrdIdl) push!(L,I) end end - + function exp(a::GrpAbFinGenElem) I=ideal(O,1) for i=1:ngens(C) @@ -49,13 +49,13 @@ function _coprime_ideal(C::GrpAbFinGen, mC::Map, m::NfOrdIdl) end return I end - + mp=Hecke.MapClassGrp{typeof(C)}() mp.header=Hecke.MapHeader(C,Hecke.NfOrdIdlSet(O),exp, mC.header.preimage) - + return mp - -end + +end @doc Markdown.doc""" @@ -63,7 +63,7 @@ end ray_class_group(m::NfOrdIdl, A::Vector{InfPlc}=[]) -> FinGenGrpAb, Map > Compute the ray class group of the maximal order $L$ with respect to the modulus given by $m$ (the finite part) and the infinite primes of $A$ -> and return an abstract group isomorphic to the ray class group with a map +> and return an abstract group isomorphic to the ray class group with a map > from the group to the ideals of $L$ """ @@ -72,17 +72,17 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) # # We compute the group using the sequence U -> (O/m)^* _> Cl^m -> Cl -> 1 # First of all, we compute all these groups with their own maps -# +# O=parent(m).order K=nf(O) - + C, mC = class_group(O) mC=_coprime_ideal(C,mC,m) U, mU = unit_group(O) M, pi= quo(O,m) G, mG=unit_group(M) - + p = [ x for x in primes if isreal(x) ] if !isempty(p) H,lH,eH=_infinite_primes(O,p,m) @@ -99,7 +99,7 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) A=vcat(RC, MatrixSpace(FlintZZ, ngens(G)+ngens(U), ncols(RC))()) B=vcat(MatrixSpace(FlintZZ, ngens(C), ncols(RG))(), RG) B=vcat(B, MatrixSpace(FlintZZ, ngens(U) , ncols(RG))()) - + # # We compute the relation matrix given by the image of the map U -> (O/m)^* # @@ -108,11 +108,11 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) a=(mG\(pi(u))).coeff if !isempty(primes) a=hcat(a, (lH(K(u))).coeff) - end + end for j=1:ngens(G) B[i+nrows(RC)+nrows(RG),j]=a[1,j] end - end + end # # We compute the relation between generators of Cl and (O/m)^* in Cl^m @@ -124,10 +124,10 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) b=(mG\(pi(y))).coeff if primes != [] b=hcat(b, (lH(K(y))).coeff) - end + end for j=1: ngens(G) B[i,j]=-b[1,j] - end + end end end @@ -153,10 +153,10 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) if primes!=[] z=lH(K(gamma)) y=hcat(y, z.coeff) - end + end return X(hcat(L.coeff,y)) end - end + end # # Exp map @@ -168,7 +168,7 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) if isempty(primes) c=G([a.coeff[1,i] for i=ngens(C)+1:ngens(X)]) return mC(b)*(pi\(mG(c))) - else + else c=T([a.coeff[1,i] for i=ngens(C)+1:ngens(T)+ngens(C)]) d=H([a.coeff[1,i] for i=ngens(T)+ngens(C)+1: ngens(X)]) el=pi\(mG(c)) @@ -176,7 +176,7 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) vect=(lH(K(el))).coeff if vect==d.coeff return el*mC(b) - else + else correction=O(1) for i=1:ngens(H) if d.coeff[1,i]==1 @@ -188,17 +188,17 @@ function ray_class_group_std(m::NfOrdIdl, primes::Vector{InfPlc}=InfPlc[]) vect=(lH(K(el))).coeff end return el*mC(b) - end + end end - end + end mp=MapRayClassGrpNew{typeof(X)}() mp.header = Hecke.MapHeader(X, Hecke.NfOrdIdlSet(O), expo, disclog) mp.modulus_fin=m mp.modulus_inf=p - + return X, mp - + end @@ -215,8 +215,8 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} G, mG, lp = Hecke._mult_grp(Q,p) C, mC = class_group(O) Hecke._assure_princ_gen(mC) - - if p==2 + + if p==2 pr = [ x for x in inf_plc if isreal(x) ] if !isempty(pr) H,eH,lH=Hecke._infinite_primes(O,pr,m) @@ -224,34 +224,34 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} G =Hecke.direct_product(G,H) end end - + valclassp=Int(p^(valuation(order(C[ngens(C)]),p))) nonppartclass=div(order(C[ngens(C)]),valclassp) - + if valclassp==1 && order(G)==1 return Hecke.empty_ray_class(m) end - + C, mC, vect = Hecke._class_group_mod_n(C,mC,valclassp) U, mU = unit_group_fac_elem(O) exp_class, Kel = Hecke._elements_to_coprime_ideal(C,mC,m) - + if order(G)==1 - return Hecke.class_as_ray_class(C,mC,exp_class,m) + return Hecke.class_as_ray_class(C,mC,exp_class,m) end n=ideal(O,1) for (q,vq) in lp n*=q^vq end - + # # We start to construct the relation matrix # expo=exponent(G) inverse_d=gcdx(nonppartclass,expo)[2] - + R=zero_matrix(FlintZZ, ngens(C)+ngens(U)+ngens(G), ngens(C)+ngens(G)) for i=1:ngens(C) R[i,i]=C.snf[i] @@ -265,7 +265,7 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} R[i+ngens(C),i+ngens(C)]=G.rels[i,i] end end - + # # We compute the relation matrix given by the image of the map U -> (O/m)^* # @@ -280,21 +280,21 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} else push!(tobeeval, mU(U[1])) end - else + else push!(evals, Q(1)) end append!(tobeeval,[mU(U[i]) for i=2:ngens(U)]) - + @vprint :RayFacElem 1 "then principal ideal generators \n" for i=1:ngens(C) @vtime :RayFacElem 1 push!(tobeeval, mC.princ_gens[i][2]*Kel[i]) end - + @vprint :RayFacElem 1 "Time for elements evaluation: " ev,quots,idemps= Hecke.fac_elems_eval(O,Q,tobeeval,lp,expo) @vtime :RayFacElem 1 append!(evals, ev) @vprint :RayFacElem 1 "\n" - + for i=1:ngens(U) @vprint :RayFacElem 1 "Disclog of unit $i \n" a=(mG\(evals[i])).coeff @@ -309,7 +309,7 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} for j=1:ngens(G) R[i+ngens(G)+ngens(C),ngens(C)+j]=a[1,j] end - end + end # # We compute the relation between generators of Cl and (O/m)^* in Cl^m @@ -325,12 +325,12 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} end for j=1: ngens(G) R[i,ngens(C)+j]=-a[1,j] - end + end end - + X=abelian_group(R) - - + + # # Discrete logarithm # @@ -342,7 +342,7 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} end return a end - + function disclog(J::NfOrdIdl) if isone(J) return X([0 for i=1:ngens(X)]) @@ -360,7 +360,7 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} end return X(hcat(L.coeff,y)) end - end + end # # Exp map @@ -371,7 +371,7 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} if p!=2 || isempty(pr) c=G([a.coeff[1,i] for i=ngens(C)+1:ngens(X)]) return exp_class(b)*ideal(O,pi\(mG(c))) - else + else c=T([a.coeff[1,i] for i=ngens(C)+1:ngens(T)+ngens(C)]) d=H([a.coeff[1,i] for i=ngens(T)+ngens(C)+1: ngens(X)]) el=pi\(mG(c)) @@ -379,16 +379,16 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} vect=(lH(K(el))).coeff if vect==d.coeff return exp_class(b)*ideal(O,el) - else + else correction=eH(d) while vect!=d.coeff el=el+correction vect=(lH(K(el))).coeff end return exp_class(b)*ideal(O,el) - end + end end - end + end mp=Hecke.MapRayClassGrpNew{typeof(X)}() mp.header = Hecke.MapHeader(X, FacElemMon(parent(m)) , expon, disclog) @@ -400,5 +400,5 @@ function ray_class_group_p_part(p::Integer, m::NfOrdIdl, inf_plc::Vector{InfPlc} mp.defining_modulus = (m, inf_plc) return X,mp -end +end diff --git a/examples/RelNeq.jl b/examples/RelNeq.jl index 32ef8c7516..23eee2b251 100644 --- a/examples/RelNeq.jl +++ b/examples/RelNeq.jl @@ -21,7 +21,7 @@ struct RelNeq Qt = parent(K.pol) h = gcd(gen(k) - evaluate(Qt(mp(gen(k))), t), evaluate(K.pol, t)) Kk, _ = number_field(h) - return new(k, K, Kk, mp, mp) + return new(k, K, Kk, mp, mp) end function RelNeq(m::Map) @@ -48,8 +48,8 @@ end Next Q: Let N^1 be the subgroup of Cl_M defined above. Then - X_M the ray class field mod M = Z_K m - | + X_M the ray class field mod M = Z_K m + | | X the class field for N^1, thus the norm group is Cl_M/N^1 Y | the norm group of Y is the norm of X_M over k. @@ -70,17 +70,17 @@ end Alternatively: use Jan Albert's thesis to get bound on the generation... For K/k normal this should reduce(?) to Scholz' paper (or Jehne's version) on Zahlknoten/ number knots - In this case N(I) = 1 iff I = prod A^(1-sigma a) thus it can be computed from the Galois action on + In this case N(I) = 1 iff I = prod A^(1-sigma a) thus it can be computed from the Galois action on ideal (classes), then Cl/N^1 is fixed pointwise by Gal(K/k) (trivial action) (in fact this should be the largest/ smallest such quotient) hence the group extension (exact sequence) - - 1 -> Cl/N^1 -> Gal(X/k) -> Gal(K/k) -> 1 + + 1 -> Cl/N^1 -> Gal(X/k) -> Gal(K/k) -> 1 is split(?) direct(?) (nice?) (special?) My memory of Scholz is that there is a second field lurking around... -=# +=# function norm_1_subgroup(A::RelNeq) k = A.k K = A.K @@ -111,7 +111,7 @@ function norm_1_subgroup(A::RelNeq) lp = prime_decomposition(maximal_order(k), p) for P = lp - if d % p == 0 + if d % p == 0 @show "expensive", p lP = collect(factor(IdealSet(ZK)(A.m_k_K, P[1]))) else @@ -146,41 +146,41 @@ function norm_1_subgroup(A::RelNeq) end #= The idea - we have - 1 - - | + we have + 1 + + | V - + U_K {N(a) in U_k} {N(I) = 1} 1 -> ---------- -> ------------- -> ---------- -> Cl {N(u) = 1} {N(a) = 1} {N(a) = 1} | N V - + U_k - - So what we want is a group extension of a sub-group of a quotient of U_k + + So what we want is a group extension of a sub-group of a quotient of U_k by a subgroup of Cl: - 1 - - | + 1 + + | V - + {N(a) in U_k} {N(I) = 1} 1 -> ---------------- -> ---------- -> Cl N(U_K){N(a) = 1} {N(a) = 1} | N V - + U_k ----- N(U_K) - + =# mutable struct Norm1Group @@ -206,7 +206,7 @@ mutable struct Norm1Group r.U = q, pseudo_inv(mq)*mu r.sU = sub(u, elem_type(u)[]) r.gC = [(ideal(maximal_order(A.K), 1)//1, 0*c[1])] - r.gU = [(FacElem(A.k(1)), 0*q[1])] + r.gU = [(FacElem(A.k(1)), 0*q[1])] r.gens = [] return r end @@ -265,7 +265,7 @@ function Base.push!(N::Norm1Group, I::Hecke.NfOrdFracIdl) @assert fl ng = norm(A.m_k_K, g) @assert isunit(maximal_order(N.A.k)(evaluate(ng))) - r = mu\ng + r = mu\ng fl, _ = haspreimage(N.sU[2], r) if fl return false # nothing new @@ -298,7 +298,7 @@ function Hecke.evaluate(N::Norm1Group) s2, ms2 = snf(N.sU[1]) R = [rels(s2) zero_matrix(FlintZZ, ngens(s2), ngens(s1)); zero_matrix(FlintZZ, ngens(s1), ngens(s2)) rels(s1)] - + for i = 1:ngens(s1) x = ms1(s1[i]) I = FacElem(Dict((N.gC[j][1], x[j]) for j=1:ngens(N.sC[1]))) @@ -307,7 +307,7 @@ function Hecke.evaluate(N::Norm1Group) @assert fl ng = norm(N.A.m_k_K, g) @assert isunit(maximal_order(N.A.k)(evaluate(ng))) - r = N.U[2]\ng + r = N.U[2]\ng fl, x = haspreimage(N.sU[2], r) for j=1:ngens(s2) R[ngens(s2) + i, j] = -x[j] @@ -336,7 +336,7 @@ function Hecke.evaluate(N::Norm1Group) @assert fl ng = norm(N.A.m_k_K, g) @assert isunit(maximal_order(N.A.k)(evaluate(ng))) - r = N.U[2]\ng + r = N.U[2]\ng fl, r = haspreimage(N.sU[2], r) @assert fl return A(hcat((ms2\r).coeff, (ms1\s).coeff)) @@ -358,7 +358,7 @@ function n1group(A::RelNeq, B::Int) function single_prime(P::NfAbsOrdIdl) p = minimum(P) - if numerator(discriminant(K)) % p == 0 || + if numerator(discriminant(K)) % p == 0 || numerator(discriminant(k)) % p == 0 @show "expensive", p lq = collect(factor(IdealSet(ZK)(A.m_k_K, P))) @@ -437,7 +437,7 @@ function doit(n::String) if i % 10 == 0 flush(fo) end - end + end end diff --git a/examples/Round2.jl b/examples/Round2.jl index e0ad686830..05ac32207e 100644 --- a/examples/Round2.jl +++ b/examples/Round2.jl @@ -13,7 +13,7 @@ Support for generic maximal orders over any PID given a in Frac(R), decompose into num, den (all Localisations of Z have QQ as quotient field, Q[x], Z[x] and Localisation(Q(x), degree) use Q(t)) - - isdomain_type + - isdomain_type Seems to work for - R = ZZ, F = AnticNumberField @@ -288,7 +288,7 @@ function radical_basis_power(O::Order, p::RingElem) while q < degree(O) q *= characteristic(F) end - + b = basis(O) m = zero_matrix(F, degree(O), degree(O)) for i=1:degree(O) @@ -315,7 +315,7 @@ function radical_basis_trace(O::Order, p::RingElem) R = t mR = MapFromFunc(x->R(x), y->lift(y), parent(p), R) end - + TT = map_entries(mR, T) k, B = kernel(TT) M2 = map_entries(x->preimage(mR, x), B[:, 1:k])' @@ -338,7 +338,7 @@ function radical_basis_power_non_perfect(O::Order, p::RingElem) while q < degree(O) q *= characteristic(F) end - + q = Int(q) b = basis(O) m = zero_matrix(F, q*degree(O), degree(O)) @@ -477,7 +477,7 @@ function Hecke.maximal_order(O::Order) end T = integral_split(OO.trans, S) isone(T[2]) && continue - if first + if first Op = T first = false else @@ -570,7 +570,7 @@ function Hecke.integral_split(a::fmpq, R::Loc{fmpz}) return R(numerator(a)//q), R(w) else return R(numerator(a)//w), R(q) - end + end end Hecke.denominator(a::fmpq, R::Loc{fmpz}) = integral_split(a, R)[2] Hecke.numerator(a::fmpq, R::Loc{fmpz}) = integral_split(a, R)[1] @@ -883,11 +883,11 @@ function divrem(a::HessQRElem, b::HessQRElem) g(cx?+1) = cg x^? + g and cont(cg mod d = 1)... - af/g -d/(cx^?+1) now has a denominator with cont( mod d) = 1 - af/g - (af - du)/(g - dv) = - (af(g-dv) -g(af-du))/(g(g-dv)) = d*..., so once cont(g %d) =1, + (af(g-dv) -g(af-du))/(g(g-dv)) = d*..., so once cont(g %d) =1, we can replace f and g mod d (and figure out the quotient afterwards) - - for d = p a prime, the rep is unqiue, thus F_p(t) - =# + - for d = p a prime, the rep is unqiue, thus F_p(t) + =# r = rem(a,b) return divexact(a-r, b), r @@ -959,7 +959,7 @@ function Nemo.ResidueField(a::HessQR, b::HessQRElem) F = GF(b.c) Ft, t = RationalFunctionField(F, String(var(a.R)), cached = false) R = parent(numerator(t)) - return Ft, MapFromFunc(x->F(x.c)*Ft(map_coefficients(F, x.f, parent = R))//Ft(map_coefficients(F, x.g, parent = R)), + return Ft, MapFromFunc(x->F(x.c)*Ft(map_coefficients(F, x.f, parent = R))//Ft(map_coefficients(F, x.g, parent = R)), y->HessQRElem(a, fmpz(1), map_coefficients(lift, numerator(y)), map_coefficients(lift, denominator(y))), a, Ft) end diff --git a/examples/Suri.jl b/examples/Suri.jl index 86696c40be..082d3a22d9 100644 --- a/examples/Suri.jl +++ b/examples/Suri.jl @@ -9,7 +9,7 @@ import Base: +, -, *, ^ assume, at least for now, the alpha_i are independent. assume sum gamma_i alpha_i + gamma alpha = 0 (gamma are the dependency) - Now P := + Now P := (inv(A_i) gamma_i) ( inv(A) gamma ) is a (n+1) x 1 pseudo matrix. Using the (pseudo) HNF we find a matrix @@ -67,7 +67,7 @@ end function extend(M::Hecke.PMat, b::Generic.MatSpaceElem{nf_elem}, gamma::Generic.MatSpaceElem{nf_elem}) - @assert iszero(hcat(M.matrix', b)*gamma) + @assert iszero(hcat(M.matrix', b)*gamma) zk = base_ring(M) nc = ncols(gamma) n = nrows(gamma) - 1 @@ -353,7 +353,7 @@ Hecke.fmpz(a::RRSelem) = Hecke.crt(a.x, a.R.ce) # a random invertable matrix with coeffs in R -#start with identity, do i rounds of random elementary row and column +#start with identity, do i rounds of random elementary row and column #operations function rand_gl(R::Hecke.Ring, n::Int, u, i::Int) A = identity_matrix(R, n) diff --git a/examples/pAdicConj.jl b/examples/pAdicConj.jl index 7b27fef85f..d1595500ea 100644 --- a/examples/pAdicConj.jl +++ b/examples/pAdicConj.jl @@ -15,7 +15,7 @@ function mult_syzygies_units(a::Vector{FacElem{nf_elem, AnticNumberField}}) u = FacElem{nf_elem, AnticNumberField}[] la = [conjugates_pAdic_log(e, p, 300) for e = a] #can loose precision # needs to be traced - # precision needs to be updated. + # precision needs to be updated. n = ncols(la[1]) Qp = base_ring(la[1]) lu = matrix(Qp, 0, n, []) @@ -51,17 +51,17 @@ function mult_syzygies_units(a::Vector{FacElem{nf_elem, AnticNumberField}}) As an example, det U det U = : and using universal lower bounds on the size of units (Dobrowski) - and the successive minimal, we can get a lower bound on the + and the successive minimal, we can get a lower bound on the regulator of . Hadramat gives an upper bound on reg() (regulator in the sence of lattice disciminant) Think: can we use the p-adic regulator to help??? possibly increase precision until we either have - indepence or a relation + indepence or a relation ignore bounds? - =# + =# d = reduce(lcm, map(denominator, r)) - gamma = [FlintZZ(x*d) for x = r] + gamma = [FlintZZ(x*d) for x = r] #technically, this relations needs to be verified. #= we have a relation mod p^k, which means @@ -82,10 +82,10 @@ function mult_syzygies_units(a::Vector{FacElem{nf_elem, AnticNumberField}}) Dobrowski. Hence this can be evaluated with low precision. Not done. - =# + =# @assert reduce(gcd, gamma) == 1 # should be a primitive relation _, U = hnf_with_trafo(matrix(FlintZZ, length(r), 1, gamma)) - U = inv(U) + U = inv(U) U = sub(U, 1:nrows(U), 2:ncols(U)) #new basis is the cols of U push!(u, a[i]) @@ -145,7 +145,7 @@ function regulator_lower_bound(R::NfOrd, B::Int = 2*degree(R)) Ms, _ = unit_lower_bound(R, B) r1, r2 = signature(R) r = r1+r2-1 - n = degree(R) + n = degree(R) return Ms^r * 2^r2 /n / Hecke.hermite_constant(r) end diff --git a/examples/polymake.jl b/examples/polymake.jl index 817f3b5e8a..7f28dec459 100644 --- a/examples/polymake.jl +++ b/examples/polymake.jl @@ -142,7 +142,7 @@ function norm_equation2_fac_elem(R::NfAbsOrd, k::fmpz; abs::Bool = false) lp = factor(k*R) s, ms = Hecke.sunit_mod_units_group_fac_elem(collect(keys(lp))) C = vcat([matrix(FlintZZ, 1, ngens(s), [valuation(ms(s[i]), p) for i=1:ngens(s)]) for p = keys(lp)]) - + lp = factor(k) A = vcat([matrix(FlintZZ, 1, ngens(s), [valuation(Hecke.factored_norm(ms(s[i])), p) for i=1:ngens(s)]) for p = keys(lp.fac)]) b = matrix(FlintZZ, length(lp.fac), 1, [valuation(k, p) for p = keys(lp.fac)]) @@ -197,7 +197,7 @@ function norm_equation_fac_elem(R::NfAbsOrd, k::fmpz; abs::Bool = false) return sol end -norm_equation_fac_elem(R::NfAbsOrd, k::Integer; abs::Bool = false) = +norm_equation_fac_elem(R::NfAbsOrd, k::Integer; abs::Bool = false) = norm_equation_fac_elem(R, fmpz(k), abs = abs) function norm_equation(R::NfAbsOrd, k::fmpz; abs::Bool = false) @@ -226,7 +226,7 @@ function norm_equation_fac_elem(R::Hecke.NfRelOrd{nf_elem,Hecke.NfOrdFracIdl}, a mq = mq*inv(mms) C = vcat([matrix(FlintZZ, 1, ngens(q), [valuation(mS(preimage(mq, q[i])), p) for i=1:ngens(q)]) for p = keys(lp)]) - + A = vcat([matrix(FlintZZ, 1, ngens(q), [valuation(norm(mkK, mS(preimage(mq, g))), p) for g in gens(q)]) for p = keys(la)]) b = matrix(FlintZZ, length(la), 1, [valuation(a, p) for p = keys(la)]) @@ -296,8 +296,8 @@ function irreducibles(S::Vector{NfAbsOrdIdl{AnticNumberField,nf_elem}}) end @assert all(isprime, S) #TODO: try to get a better bound - in general if S is too large - # it cannot work - + # it cannot work + O = order(S[1]) @assert all(x-> order(x) == O, S) diff --git a/src/AlgAss/AlgGrp.jl b/src/AlgAss/AlgGrp.jl index f83fae1232..327f689fdf 100644 --- a/src/AlgAss/AlgGrp.jl +++ b/src/AlgAss/AlgGrp.jl @@ -719,7 +719,7 @@ function decompose(A::AlgGrp) return res end G = group(A) - res = __decompose(A) + res = __decompose(A) #if !isdefined(res[1][1], :isomorphic_full_matrix_algebra) # if order(G) == 24 && find_small_group(G)[1] == (24, 12) && @@ -727,7 +727,7 @@ function decompose(A::AlgGrp) # @assert G.isfromdb # _compute_matrix_algebras_from_reps(A, res, _reps[1]) # end - # + # # if order(G) == 48 && find_small_group(G)[1] == (48, 48) && # base_ring(A) isa FlintRationalField # @assert G.isfromdb @@ -897,7 +897,7 @@ function _absolute_basis(A) v[i] = zero(K) end v[j] = bK[j] - push!(B, A(v)) + push!(B, A(v)) end end return B @@ -1024,7 +1024,7 @@ function isfree_a5_fabi(K::AnticNumberField) println("fabi 2") return false end - + if !(istamely_ramified(K, fmpz(5)) || !isalmost_maximally_ramified(K, fmpz(5))) println("fabi 3") return false diff --git a/src/AlgAss/AlgQuat.jl b/src/AlgAss/AlgQuat.jl index e0e7325a82..3b067d1c43 100644 --- a/src/AlgAss/AlgQuat.jl +++ b/src/AlgAss/AlgQuat.jl @@ -281,7 +281,7 @@ function Base.enumerate(O::Union{AlgAssRelOrd, AlgAssAbsOrd}, b::Int, equal::Boo # TODO: Replace this by short_vectors_gram(M, nrr) once it works @assert !iszero(det(G)) - V = _short_vectors_gram(G, fmpz(b), hard = true) + V = _short_vectors_gram(G, fmpz(b), hard = true) res = elem_type(O)[] for i in 1:length(V) y = sum(V[i][1][j] * B[j] for j in 1:d) @@ -296,7 +296,7 @@ function Base.enumerate(O::Union{AlgAssRelOrd, AlgAssAbsOrd}, b::Int, equal::Boo end return res -end +end # Thanks Aurel! # https://mathoverflow.net/questions/250753/finite-group-of-units-in-quaternion-orders @@ -334,7 +334,7 @@ function unit_group_modulo_scalars(O::AlgAssRelOrd) push!(norms, n) end end - + @assert all(isunit(u) for u in gens) return gens @@ -465,7 +465,7 @@ function _is_principal_maximal_quaternion_generic_proper(a, M, side = :right) alpha = inv(Nnu) _d = denominator(alpha, maximal_order(K)) - alpha = _d * alpha + alpha = _d * alpha #@show isintegral(alpha) @@ -484,7 +484,7 @@ function _is_principal_maximal_quaternion_generic_proper(a, M, side = :right) #@show denominator(G) #_d = degree(base_ring(A)) - + #@show B v = _short_vectors_gram_integral(G, FlintZZ(B), hard = true) diff --git a/src/AlgAss/Elem.jl b/src/AlgAss/Elem.jl index f6141c4fa3..80e4aa6637 100644 --- a/src/AlgAss/Elem.jl +++ b/src/AlgAss/Elem.jl @@ -16,7 +16,7 @@ function (K::AnticNumberField)(a::AbsAlgAssElem{nf_elem}) @assert K == base_ring(parent(a)) @assert has_one(parent(a)) o = one(parent(a)) - + if iszero(a) return zero(K) end @@ -24,7 +24,7 @@ function (K::AnticNumberField)(a::AbsAlgAssElem{nf_elem}) i = findfirst(!iszero, o.coeffs) fl, c = divides(a.coeffs[i], o.coeffs[i]) - + if fl if c * o == a return c @@ -38,7 +38,7 @@ function (K::FlintRationalField)(a::AbsAlgAssElem{fmpq}) @assert K == base_ring(parent(a)) @assert has_one(parent(a)) o = one(parent(a)) - + if iszero(a) return zero(K) end @@ -46,7 +46,7 @@ function (K::FlintRationalField)(a::AbsAlgAssElem{fmpq}) i = findfirst(!iszero, o.coeffs) fl, c = divides(a.coeffs[i], o.coeffs[i]) - + if fl if c * o == a return c diff --git a/src/AlgAss/Types.jl b/src/AlgAss/Types.jl index 0b62d5cf48..05c15f715c 100644 --- a/src/AlgAss/Types.jl +++ b/src/AlgAss/Types.jl @@ -70,8 +70,8 @@ mutable struct AlgQuat{T} <: AbsAlgAss{T} trace_basis_elem::Vector{T} maximal_order std_inv# standard involution - - function AlgQuat{T}() where {T} + + function AlgQuat{T}() where {T} z = new{T}() z.issimple = 1 return z diff --git a/src/AlgAssAbsOrd/Conjugacy/Conjugacy.jl b/src/AlgAssAbsOrd/Conjugacy/Conjugacy.jl index 83d8470b87..3e0f6f0e2c 100644 --- a/src/AlgAssAbsOrd/Conjugacy/Conjugacy.jl +++ b/src/AlgAssAbsOrd/Conjugacy/Conjugacy.jl @@ -589,7 +589,7 @@ function isGLZ_conjugate(A::Vector{fmpq_mat}, B::Vector{fmpq_mat}) d = lcm(d1, d2) return _isGLZ_conjugate(d .* A, d .* B) end - + function _isGLZ_conjugate(A::Vector{fmpq_mat}, B::Vector{fmpq_mat}) if A == B @@ -647,7 +647,7 @@ function _isGLZ_conjugate(A::Vector{fmpq_mat}, B::Vector{fmpq_mat}) S, AtoS = quo(AA, J) @info "Semisimple quotient has dimension $(dim(S))" !iscommutative(S) && error("Semisimple quotient must be commutative") - IS = ideal_from_lattice_gens(S, [AtoS(b) for b in basis(OI)]) + IS = ideal_from_lattice_gens(S, [AtoS(b) for b in basis(OI)]) OS = Order(S, [AtoS(elem_in_algebra(b)) for b in basis(OO)]) @info "Algebra is commutative" IS.order = OS diff --git a/src/AlgAssAbsOrd/Conjugacy/Husert.jl b/src/AlgAssAbsOrd/Conjugacy/Husert.jl index eff700a637..21d8c91928 100644 --- a/src/AlgAssAbsOrd/Conjugacy/Husert.jl +++ b/src/AlgAssAbsOrd/Conjugacy/Husert.jl @@ -11,7 +11,7 @@ function _issimilar_husert(A::fmpz_mat, B::fmpz_mat) return fl, change_base_ring(FlintZZ, QC) end -# If successful, returns X such that X * A * X^-1 == B +# If successful, returns X such that X * A * X^-1 == B function _issimilar_husert_generic(A, B) @assert issquarefree(minpoly(A)) m = nrows(A) @@ -65,7 +65,7 @@ function _issimilar_husert_generic(A, B) end # Now construct the colon ideal - # First the Q-basis of \prod Mat(n_i, K_i) + # First the Q-basis of \prod Mat(n_i, K_i) actions = Vector{fmpq_mat}() another_basis_of_actions = Vector{Vector{dense_matrix_type(nf_elem)}}() @@ -112,9 +112,9 @@ function _issimilar_husert_generic(A, B) # So D is a Q-basis of Mat_n(K) # Now determine the colon ideal - + la = length(actions) - + M = zero_matrix(FlintQQ, la, 0) for a in absolute_basis_vec_A diff --git a/src/AlgAssAbsOrd/Conjugacy/Lifting.jl b/src/AlgAssAbsOrd/Conjugacy/Lifting.jl index a059cb122d..1c089d981f 100644 --- a/src/AlgAssAbsOrd/Conjugacy/Lifting.jl +++ b/src/AlgAssAbsOrd/Conjugacy/Lifting.jl @@ -85,7 +85,7 @@ function _lift2(MM) k += 1 #@show M else # no unit there # I could do this in one go by putting a unit in the first position - _, l = findmin(abs.(v)) + _, l = findmin(abs.(v)) l = l + (k - 1) #@show l #@show euclid(M[l, k]) diff --git a/src/AlgAssAbsOrd/Conjugacy/Random.jl b/src/AlgAssAbsOrd/Conjugacy/Random.jl index 57fd4581a6..c9ce734d7b 100644 --- a/src/AlgAssAbsOrd/Conjugacy/Random.jl +++ b/src/AlgAssAbsOrd/Conjugacy/Random.jl @@ -108,7 +108,7 @@ end function _similarity_test_setup(R, n; max_block = 4, same = false) block_shape = Tuple{Int, Int, Int}[] nn = n - + if same AA = _random_matrix_special(R, div(n, 3), rand(1:max_block)) nn = n - nrows(AA) diff --git a/src/AlgAssAbsOrd/Ideal.jl b/src/AlgAssAbsOrd/Ideal.jl index 034a159f31..a01e1ef0f1 100644 --- a/src/AlgAssAbsOrd/Ideal.jl +++ b/src/AlgAssAbsOrd/Ideal.jl @@ -56,7 +56,7 @@ Returns the ideal in $A$ with basis matrix $M$. If `M_in_hnf == true`, it is assumed that $M$ is already in lower left HNF. """ function ideal(A::AbsAlgAss{fmpq}, M::FakeFmpqMat, M_in_hnf::Bool = false) - if !M_in_hnf + if !M_in_hnf if false #issquare(M) && (dim(A) > 50 || sum(nbits, numerator(M)) > 1000) M = hnf(M, :lowerleft, compute_det = true) else diff --git a/src/AlgAssAbsOrd/LocallyFreeClassGroup.jl b/src/AlgAssAbsOrd/LocallyFreeClassGroup.jl index fad1c332eb..0a044722e9 100644 --- a/src/AlgAssAbsOrd/LocallyFreeClassGroup.jl +++ b/src/AlgAssAbsOrd/LocallyFreeClassGroup.jl @@ -376,7 +376,7 @@ mutable struct DiscLogLocallyFreeClassGroup{S, T} <: Map{S, T, HeckeMap, DiscLog end end m.primes_in_fields = primes_in_fields - + _image = x -> x m.header = MapHeader{S, T}(IdlSet, C, _image) @@ -390,8 +390,8 @@ function image(m::DiscLogLocallyFreeClassGroup, I::AlgAssAbsOrdIdl) A = algebra(O) RtoC = m.RtoC - mR = m.mR - FinZ = m.FinZ + mR = m.mR + FinZ = m.FinZ fields_and_maps = m.fields_and_maps::Vector{Tuple{AnticNumberField, AbsAlgAssToNfAbsMor{AlgAss{fmpq}, elem_type(AlgAss{fmpq}), AnticNumberField, fmpq_mat}}} ZtoA = m.ZtoA::morphism_type(AlgAss{fmpq}, typeof(A)) _T = _ext_type(elem_type(base_ring(A))) diff --git a/src/AlgAssAbsOrd/PIP.jl b/src/AlgAssAbsOrd/PIP.jl index eeb5b303c2..ec722285db 100644 --- a/src/AlgAssAbsOrd/PIP.jl +++ b/src/AlgAssAbsOrd/PIP.jl @@ -35,7 +35,7 @@ function _isprincipal_maximal(a::AlgAssAbsOrdIdl, M, side = :right) res = decompose(A) abas = basis(a) Mbas = basis(M) - + @hassert :PIP 1 all(b in M for b in abas) gens = elem_type(A)[] #@show A @@ -111,7 +111,7 @@ function _is_principal_maximal_quaternion_generic(a, M, side = :right) #@show u #@show istotally_positive(u * c) - + Babs = absolute_basis(b)::Vector{elem_type(B)} d = length(Babs) G = zero_matrix(FlintQQ, d, d) @@ -512,9 +512,9 @@ function _isprincipal(a::AlgAssAbsOrdIdl, O, side = :right) UU = _solve_norm_equation_over_center(OA, ZtoA(elem_in_algebra(_u::elem_type(OZ)))) fll, uu = haspreimage(mSS, mQuni\(mQ(OZ(normred_over_center(elem_in_algebra(UU), ZtoA)))) - ttt) - + @assert fll - + elemA = one(A) for i in 1:length(uu.coeff) if !iszero(uu.coeff[1, i]) @@ -593,7 +593,7 @@ function _solve_norm_equation_over_center_quaternion(M, x) end end #@show nrm - V = _short_vectors_gram(G, nrm) + V = _short_vectors_gram(G, nrm) for i in 1:length(V) if V[i][2] == nrm y = sum(V[i][1][j] * B[j] for j in 1:4) @@ -726,7 +726,7 @@ function _lift_norm_one_unit_quaternion(x, F) #@show normred(elem_in_algebra(x)) # TODO: Replace this by short_vectors_gram(M, nrr) once it works - V = _short_vectors_gram(G, fmpz(1)) + V = _short_vectors_gram(G, fmpz(1)) for i in 1:length(V) y = sum(V[i][1][j] * B[j] for j in 1:4) @assert normred(y) == 1 @@ -776,7 +776,7 @@ function _lift_norm_one_unit_full_matrix_algebra_nice(x, F) el, id = pseudo_basis(FinZA)[1] fl, el2 = isprincipal(id) if false fl - @assert fl + @assert fl n = el.coeffs[1] * el2 OK = base_ring(M) @assert basis_pmatrix(M).matrix == identity_matrix(base_ring(A), dim(A)) @@ -825,7 +825,7 @@ function _lift_norm_one_unit_full_matrix_algebra_nice(x, F) @assert li - x in id * M #@show (li - x) in id * M - + return elem_in_algebra(li) end end @@ -848,7 +848,7 @@ function _lift_norm_one_unit_full_rational_matrix_algebra(x, F) xwrtR = c * elem_in_algebra(x) * inv(c) # Now x is in M_n(Z) and I want to lift from M_n(Z/nn) - + @assert mod(FlintZZ(det(matrix((xwrtR)))), nn) == 1 R = ResidueRing(FlintZZ, nn, cached = false) @@ -996,7 +996,7 @@ function _normalize_column(N, i) if isunit(N[i, i]) ainv = inv(N[i, i]) for j in n:-1:(i + 1) - E = elementary_matrix(R, n, j, i, -ainv * N[j, i]) + E = elementary_matrix(R, n, j, i, -ainv * N[j, i]) #@show N N = mul!(N, E, N) #@show N @@ -1178,12 +1178,12 @@ function _lift_unimodular_matrix(N, n, R) Mwithout1stcolumn = sub(M, 1:nrows(M), 2:ncols(M)) for i in 2:r I[1, i] = (-1)^(i + 1) * det(remove_row(Mwithout1stcolumn, i)) - end + end #@show "asdsd", I M = I * M @assert det(M) == 1 push!(left_elementary, I) - + I = identity_matrix(R, r) for i in 2:r I[i, 1] = -M[i, 1] @@ -1321,7 +1321,7 @@ function lift_two_by_two_matrix(M) end #@show left_elementary - + a1 = inv(B[1,1]) D1 = identity_matrix(A, 2) D1[1, 2] += a1 @@ -1380,7 +1380,7 @@ function lift_two_by_two_elementary_matrix(E) #@show E, z @assert matrix(base_ring(E), 2, 2, [z[1, 1], z[1, 2], z[2, 1], z[2, 2]]) == E return z -end +end function _gcdx(a::NfOrdElem, b::NfOrdElem) OK = parent(a) @@ -1553,7 +1553,7 @@ function _SLn_generators(OK, n) # This is the case n >= 3 # Follows from Bass, "K-Theory and stable algebra", Corollary 1.5 d = degree(K) - # + # # We find a small generating set of OK as Z-algebra found = false for i in 1:d @@ -1614,7 +1614,7 @@ function _GLn_generators(OK, n) s1[i, i - 1] = 1 end s1[1, n] = 1 - + s3 = identity_matrix(K, n) s3[1, 2] = 1 @@ -1712,7 +1712,7 @@ function _isfree_Q32(K::AnticNumberField) # N = _colon_raw(OKasideal, ideal(QG, ZG, FakeFmpqMat(representation_matrix(theta, :left))), :left) # #N = _colon_raw(OKasideal, ideal(QG, ZG, FakeFmpqMat(identity_matrix(FlintQQ, n))), :left) # # Johannes convention is the other way around - # + # # Atheta = ideal(QG, ZG, N) # @assert all(theta * lambda in OKasideal for lambda in basis(Atheta)) @@ -1745,7 +1745,7 @@ function _isfree_Q32(K::AnticNumberField) # X = order(G) * Athetaprime - + res = __decompose(QG) #Z, mZ = subgroups(G, order = 2)[1] #k, mk = fixed_field(K, [mG(mZ(z)) for z in Z]) @@ -1803,7 +1803,7 @@ function _isfree_Q32(K::AnticNumberField) #allunitsLambda = map(x -> BtoA(CtoB(QtoC(elem_in_algebra(x)))), (closure(Lambda_star, *))) # I want to make sure that Lambda_star = eZG^times - + QoverQQ, QtoQoverQQ, theother = restrict_scalars(Q, FlintQQ) #@show Q @@ -1855,7 +1855,7 @@ function _isfree_Q32(K::AnticNumberField) #@assert sum(eZG(QtoC\(BtoC(BtoA\(d * e * b)))) * eZG for b in basis(OKasideal)) == (d * x) * eZG # Now move Lambda_star (which is in fact (eZG)^\times back to ZG) - + #Lambda_star_in_QGalmost = [BtoA(CtoB(QtoC(elem_in_algebra(u)))) for u in Lambda_star] Lambda_star_in_QGalmost = [BtoA(CtoB(QtoC(u))) for u in eZGstar] @@ -2007,7 +2007,7 @@ function _is_D16_subfield_free(K, KtoQG, QG::AlgGrp) #@show [isdefined(B, :isomorphic_full_matrix_algebra) for (B, mB) in res] fl, x = _isprincipal(Ok, ZD16, :right) - if !fl return + if !fl return false end diff --git a/src/AlgAssAbsOrd/PicardGroup.jl b/src/AlgAssAbsOrd/PicardGroup.jl index f35c67a1a8..892872259d 100644 --- a/src/AlgAssAbsOrd/PicardGroup.jl +++ b/src/AlgAssAbsOrd/PicardGroup.jl @@ -983,7 +983,7 @@ function _coprime_integral_ideal_class_deterministic(a::AlgAssAbsOrdIdl, b::AlgA #@show res_ideal + b #@show one(A) * O - + @assert res_elem * aorig == res_ideal @assert res_ideal + b == one(A) * O return res_ideal, res_elem diff --git a/src/Assertions.jl b/src/Assertions.jl index 9961ae91db..2442011e74 100644 --- a/src/Assertions.jl +++ b/src/Assertions.jl @@ -33,7 +33,7 @@ export @vprint, @hassert, @vtime, add_verbose_scope, get_verbose_level, set_verbose_level, add_assert_scope, get_assert_level, set_assert_level - + ################################################################################ # # Verbose @@ -42,17 +42,17 @@ export @vprint, @hassert, @vtime, add_verbose_scope, get_verbose_level, # Example: # julia> add_verbose_scope(:Test) -# +# # julia> function f() # @vprint :Test 1 "test" # end # f (generic function with 1 method) -# +# # julia> f() -# +# # julia> set_verbose_level(:Test, 1) # 1 -# +# # julia> f() # test @@ -143,34 +143,34 @@ end # Example: # julia> add_assert_scope(:Test) -# +# # julia> function f() # @hassert :Test true == false # the default level is 1 # end # f (generic function with 1 method) -# +# # julia> f() -# +# # julia> set_assert_level(:Test, 1) # 1 -# +# # julia> f() # ERROR: AssertionError: $(Expr(:escape, :(true == false))) # Stacktrace: # [1] macro expansion at /home/thofmann/.julia/dev/Hecke/src/Hecke.jl:482 [inlined] # [2] f() at ./REPL[6]:2 # [3] top-level scope at REPL[11]:1 -# +# # julia> function f() # @hassert :Test 2 true == false # end # f (generic function with 1 method) -# +# # julia> f() -# +# # julia> set_assert_level(:Test, 3) # 3 -# +# # julia> f() # ERROR: AssertionError: $(Expr(:escape, :(true == false))) # Stacktrace: diff --git a/src/Deprecations.jl b/src/Deprecations.jl index 21deb9f4cd..f4014d9382 100644 --- a/src/Deprecations.jl +++ b/src/Deprecations.jl @@ -30,7 +30,7 @@ else @doc Markdown.doc""" simplest_between(l::fmpq, r::fmpq) - + > Return the simplest fraction in the closed interval `[l, r]`. A canonical > > fraction `a_1/b_1` is defined to be simpler than `a_2/b_2` iff `b_1 < b_2` or > `b_1 = b_2` and `a_1 < a_2`. diff --git a/src/EllCrv/Misc.jl b/src/EllCrv/Misc.jl index ed4deaf1c2..07297fa9f7 100644 --- a/src/EllCrv/Misc.jl +++ b/src/EllCrv/Misc.jl @@ -151,7 +151,7 @@ end # @doc Markdown.doc""" # quadroots(a::fmpz, b::fmpz, c::fmpz, p::fmpz) -> Bool -# +# # Returns true if the quadratic congruence of the quadratic polynomial # $ax^2 + bx + c = 0$ has a root modulo $p$. # """ @@ -231,7 +231,7 @@ end @doc Markdown.doc""" characteristic(R::ResRing{fmpz}) -> Nemo.fmpz - + Returns the characteristic of $R$ """ function characteristic(R::ResRing{fmpz}) diff --git a/src/EllCrv/QQ.jl b/src/EllCrv/QQ.jl index 8fb20fae90..1aa31e7161 100644 --- a/src/EllCrv/QQ.jl +++ b/src/EllCrv/QQ.jl @@ -966,7 +966,7 @@ end @doc Markdown.doc""" get_b_c_integral(E::EllCrv{fmpz}) -> Nemo.fmpz - + Computes the invariants $b2$, $b4$, $b6$, $b8$, $c4$, $c6$ of an elliptic curve $E$ with integer coefficients. """ function get_b_c_integral(E) diff --git a/src/FieldFactory/ab_exts.jl b/src/FieldFactory/ab_exts.jl index 0ac70c4e51..637a8aefad 100644 --- a/src/FieldFactory/ab_exts.jl +++ b/src/FieldFactory/ab_exts.jl @@ -58,14 +58,14 @@ function abelian_fields(gtype::Vector{Int}, conds::Vector{Int}, absolute_discrim end function abelian_fields(O::NfOrd, gtype::Vector{Int}, absolute_discriminant_bound::fmpz; only_real::Bool = false, only_complex::Bool = false, tame::Bool = false) - K = nf(O) + K = nf(O) @assert degree(K)==1 gtype = map(Int, snf(abelian_group(gtype))[1].snf) n = prod(gtype) real = only_real - + expo = lcm(gtype) - + #Getting conductors l_conductors = conductorsQQ(O, gtype, absolute_discriminant_bound, tame) @vprint :AbExt 1 "Number of conductors: $(length(l_conductors)) \n" @@ -99,17 +99,17 @@ end function abelian_normal_extensions(K::AnticNumberField, gtype::Vector{Int}, absolute_discriminant_bound::fmpz; only_real::Bool = false, only_complex::Bool = false, tame::Bool = false, absolute_galois_group::Tuple{Int, Int} = (0, 0)) - + @assert !(only_real && only_complex) O = maximal_order(K) d = degree(K) if d == 1 - return abelian_fields(O, gtype, absolute_discriminant_bound, only_real = only_real, tame = tame) + return abelian_fields(O, gtype, absolute_discriminant_bound, only_real = only_real, tame = tame) end gtype = map(Int, snf(abelian_group(gtype))[1].snf) n = prod(gtype) inf_plc = InfPlc[] - + fields = ClassField{MapRayClassGrp, GrpAbFinGenMap}[] bound = div(absolute_discriminant_bound, abs(discriminant(O))^n) @@ -120,7 +120,7 @@ function abelian_normal_extensions(K::AnticNumberField, gtype::Vector{Int}, abso if iseven(n) && !only_real inf_plc = real_places(K) end - + Aut = automorphisms(K) @assert length(Aut) == d #The field is normal over Q gs = Hecke.small_generating_set(Aut) @@ -133,7 +133,7 @@ function abelian_normal_extensions(K::AnticNumberField, gtype::Vector{Int}, abso #Getting conductors l_conductors = conductors(O, gtype, bound, tame) @vprint :AbExt 1 "Number of conductors: $(length(l_conductors)) \n" - + ctx = rayclassgrp_ctx(O, expo) #Now, the big loop for (i, k) in enumerate(l_conductors) @@ -186,7 +186,7 @@ function abelian_extensions(K::AnticNumberField, gtype::Vector{Int}, absolute_di gtype = map(Int, snf(abelian_group(gtype))[1].snf) n = prod(gtype) inf_plc = InfPlc[] - + fields = ClassField{MapRayClassGrp, GrpAbFinGenMap}[] bound = div(absolute_discriminant_bound, abs(discriminant(OK))^n) if iszero(bound) @@ -213,7 +213,7 @@ function abelian_extensions(K::AnticNumberField, gtype::Vector{Int}, absolute_di l_conductors = _sieve_conjugates(auts, l_conductors) end @vprint :AbExt 1 "Number of conductors: $(length(l_conductors)) \n" - + ctx = rayclassgrp_ctx(OK, expo) fsub = (x, y) -> quo(x, y, false)[2] fsub_distinct = (x, y) -> (quo(x, y, false)[2], sub(x, y, false)[2]) @@ -380,8 +380,8 @@ function valuation_bound_discriminant(n::Int, p::Union{Integer, fmpz}) end return b -end - +end + ########################################################################### # # Some useful functions @@ -393,7 +393,7 @@ end # In output, we get the quotient group as a ZpnGModule function _action_on_quo(mq::GrpAbFinGenMap, act::Vector{GrpAbFinGenMap}) - + q=mq.header.codomain S,mS=snf(q) n=Int(S.snf[end]) @@ -443,7 +443,7 @@ function quadratic_fields(bound::Int; tame::Bool=false, real::Bool=false, comple end function _quad_ext(bound::Int, only_real::Bool = false; unramified_outside::Vector{fmpz} = fmpz[]) - + Qx, x = PolynomialRing(FlintQQ, "x", cached = false) K = NumberField(x-1, cached = false, check = false)[1] sqf = squarefree_up_to(bound, prime_base = unramified_outside) @@ -501,8 +501,8 @@ end ############################################################################### function C22_extensions(bound::Int) - - + + Qx, x=PolynomialRing(FlintZZ, "x") K, _=NumberField(x-1, cached = false) Kx,x=PolynomialRing(K,"x", cached=false) @@ -510,11 +510,11 @@ function C22_extensions(bound::Int) n=2*b1+1 pairs = _find_pairs(bound) return (_ext(Kx,x,i,j) for (i, j) in pairs) - + end function _ext(Ox,x,i,j) - + y=mod(i,4) pol1 = x^2 if y != 1 @@ -607,12 +607,12 @@ function _C22_with_max_ord(l) O = NfAbsOrd(S, FakeFmpqMat(M.num, M.den)) O.disc = d1^2*d2^2 d3 = numerator(discriminant(S)) - if d3 < 0 + if d3 < 0 O.disc = -O.disc end O.index = divexact(d3, O.disc) O.ismaximal = 1 - Hecke._set_maximal_order_of_nf(S, O) + Hecke._set_maximal_order_of_nf(S, O) else maximal_order(S) end @@ -733,14 +733,14 @@ function _find_pairs(bound::Int, only_real::Bool = false; unramified_outside::Ve for I in it res[ind] = (ls1[I[1]], ls[I[2]]) ind += 1 - end + end return vcat(res, real_exts) end function _from_relative_to_abs(L::NfRelNS{T}, auts::Vector{<: NumFieldMor{NfRelNS{T}, NfRelNS{T}}}) where T - + @vtime :AbExt 2 Ks, mKs = simplified_absolute_field(L, cached = false) #Now, we have to construct the maximal order of this field. #I am computing the preimages of mKs by hand, by inverting the matrix. @@ -754,7 +754,7 @@ function _from_relative_to_abs(L::NfRelNS{T}, auts::Vector{<: NumFieldMor{NfRelN _set_automorphisms_nf(Ks, closure(autos, degree(Ks))) @vprint :AbExt 2 "Finished\n" return Ks, autos -end +end ####################################################################################### @@ -768,8 +768,8 @@ function discriminant_conductor(C::ClassField{MapClassGrp, GrpAbFinGenMap}, boun end function discriminant_conductor(C::ClassField, bound::fmpz; lwp::Dict{Tuple{Int, Int}, Vector{GrpAbFinGenElem}} = Dict{Tuple{Int, Int}, Vector{GrpAbFinGenElem}}()) - - mr = C.rayclassgroupmap + + mr = C.rayclassgroupmap O = base_ring(C) n = degree(C) e = Int(exponent(C)) @@ -801,17 +801,17 @@ function discriminant_conductor(C::ClassField, bound::fmpz; lwp::Dict{Tuple{Int, else if haskey(abs_disc, p.minimum) abs_disc[p.minimum] += qw - else + else abs_disc[p.minimum] = qw end end end return true end - + powers = mr.powers groups_and_maps = mr.groups_and_maps - + for i = 1:length(powers) p, q = powers[i] if p.minimum in primes_done @@ -832,7 +832,7 @@ function discriminant_conductor(C::ClassField, bound::fmpz; lwp::Dict{Tuple{Int, else if haskey(abs_disc, p.minimum) abs_disc[p.minimum] += qw - else + else abs_disc[p.minimum] = qw end end @@ -843,7 +843,7 @@ function discriminant_conductor(C::ClassField, bound::fmpz; lwp::Dict{Tuple{Int, s = lp[p] @hassert :AbExt 1 s>=2 els=GrpAbFinGenElem[] - for k=2:lp[p] + for k=2:lp[p] s = s-1 pk = p^s pv = pk*p @@ -883,7 +883,7 @@ function discriminant_conductor(C::ClassField, bound::fmpz; lwp::Dict{Tuple{Int, else if haskey(abs_disc, p.minimum) abs_disc[p.minimum] += ap*divexact(d, p.splitting_type[1]) - else + else abs_disc[p.minimum] = ap*divexact(d, p.splitting_type[1]) end end @@ -896,20 +896,20 @@ end #same function but for ray class groups over QQ function discriminant_conductorQQ(O::NfOrd, C::ClassField, m::Int, bound::fmpz) - + n = degree(C) discr=fmpz(1) mp = pseudo_inv(C.quotientmap) * C.rayclassgroupmap G=domain(mp) - + cyc_prime= isprime(n)==true - + lp=factor(m).fac abs_disc=Dict{fmpz,Int}() R=ResidueRing(FlintZZ, m, cached=false) - for (p,v) in lp + for (p,v) in lp if v==1 ap=n if cyc_prime @@ -939,14 +939,14 @@ function discriminant_conductorQQ(O::NfOrd, C::ClassField, m::Int, bound::fmpz) else if isodd(p) s=divexact(m,pow) - d,a,b=gcdx(pow,s) + d,a,b=gcdx(pow,s) s1=R(1+p)^(p-1) el=G[1] if v==2 el=mp\ideal(O,Int((b*s*R(s1)+a*pow).data)) ap-=order(quo(G,GrpAbFinGenElem[el], false)[1]) else - for k=0:v-2 + for k=0:v-2 el=mp\ideal(O,Int((b*s*R(s1)^(p^k)+a*pow).data)) ap-=order(quo(G, GrpAbFinGenElem[el], false)[1]) @hassert :AbExt 1 ap>0 @@ -961,7 +961,7 @@ function discriminant_conductorQQ(O::NfOrd, C::ClassField, m::Int, bound::fmpz) end else s=divexact(m,2^v) - d,a,b=gcdx(2^v,s) + d,a,b=gcdx(2^v,s) el=0*G[1] for k=v-3:-1:0 el=mp\ideal(O,Int((R(5)^(2^k)*b*s+a*2^v).data)) @@ -985,20 +985,20 @@ function discriminant_conductorQQ(O::NfOrd, C::ClassField, m::Int, bound::fmpz) end function discriminantQQ(O::NfOrd, C::ClassField, m::Int) - + discr=fmpz(1) n = degree(C) mp = pseudo_inv(C.quotientmap) * C.rayclassgroupmap G = domain(mp) - + cyc_prime= isprime(n)==true - + lp=factor(m).fac abs_disc=Dict{fmpz,Int}() R=ResidueRing(FlintZZ, m, cached=false) - for (p,v) in lp + for (p,v) in lp if v==1 ap=n if cyc_prime @@ -1023,14 +1023,14 @@ function discriminantQQ(O::NfOrd, C::ClassField, m::Int) else if isodd(p) s=divexact(m,pow) - d,a,b=gcdx(pow,s) + d,a,b=gcdx(pow,s) s1=R(1+p)^(p-1) el=G[1] if v==2 el=mp\ideal(O,Int((b*s*R(s1)+a*pow).data)) ap-=order(quo(G,GrpAbFinGenElem[el], false)[1]) else - for k=0:v-2 + for k=0:v-2 el=mp\ideal(O,Int((b*s*R(s1)^(p^k)+a*pow).data)) ap-=order(quo(G, GrpAbFinGenElem[el], false)[1]) @hassert :AbExt 1 ap>0 @@ -1045,7 +1045,7 @@ function discriminantQQ(O::NfOrd, C::ClassField, m::Int) end else s=divexact(m,2^v) - d,a,b=gcdx(2^v,s) + d,a,b=gcdx(2^v,s) el=0*G[1] for k=v-3:-1:0 el=mp\ideal(O,Int((R(5)^(2^k)*b*s+a*2^v).data)) @@ -1082,9 +1082,9 @@ function _is_conductor_min_normal(C::Hecke.ClassField; lwp::Dict{Int, Vector{Grp if isempty(lp) return true end - + a = minimum(defining_modulus(mr)[1]) - mp = pseudo_inv(C.quotientmap) * mr + mp = pseudo_inv(C.quotientmap) * mr R = domain(mp) e = Int(exponent(C)) O = base_ring(C) @@ -1096,7 +1096,7 @@ function _is_conductor_min_normal(C::Hecke.ClassField; lwp::Dict{Int, Vector{Grp primes_done = fmpz[] for i = 1:length(powers) p, q = powers[i] - if p.minimum in primes_done + if p.minimum in primes_done continue end push!(primes_done, p.minimum) @@ -1134,7 +1134,7 @@ function _is_conductor_min_normal(C::Hecke.ClassField; lwp::Dict{Int, Vector{Grp end end return true -end +end # # Same function as above, but in the assumption that the map comes from a ray class group over QQ @@ -1147,10 +1147,10 @@ function _is_conductor_minQQ(C::Hecke.ClassField, n::Int) m = defining_modulus(mr)[1] mm = Int(minimum(m)) lp = factor(mm) - + O=order(m) K=nf(O) - + R=ResidueRing(FlintZZ, mm, cached=false) for (p,v) in lp.fac if isodd(p) @@ -1158,11 +1158,11 @@ function _is_conductor_minQQ(C::Hecke.ClassField, n::Int) x=_unit_grp_residue_field_mod_n(Int(p), n)[1] s=divexact(mm,Int(p)) d,a,b=gcdx(s,Int(p)) - l=a*s*R(x)+p*b + l=a*s*R(x)+p*b if iszero(mp\(ideal(O,Int(l.data)))) return false end - else + else s=divexact(mm,p^v) d,a,b=gcdx(s,p^v) x=a*s*R(1+p)^((p-1)*p^(v-2))+p^v*b @@ -1193,7 +1193,7 @@ function _is_conductor_minQQ(C::Hecke.ClassField, n::Int) end return true -end +end #Returns the cyclic extension of prime degree i with minimal discriminant diff --git a/src/FieldFactory/abelian_layer.jl b/src/FieldFactory/abelian_layer.jl index 98e6dccfe9..3eb3eba794 100644 --- a/src/FieldFactory/abelian_layer.jl +++ b/src/FieldFactory/abelian_layer.jl @@ -11,10 +11,10 @@ function _real_level(L::GAP.GapObj) G = L[1] ElemsG = GAP.Globals.Elements(G) for i = 1:length(ElemsG) - g = ElemsG[i] + g = ElemsG[i] if GAP.Globals.Order(g) == 2 push!(lElem, g) - end + end end S = GAP.Globals.Subgroup(G, GAP.julia_to_gap(lElem)) #Now, I check containment. @@ -36,7 +36,7 @@ end ############################################################################### function abelian_extensionsQQ(gtype::Vector{Int}, bound::fmpz, only_real::Bool = false; unramified_outside::Vector{fmpz} = fmpz[]) - + gtype = map(Int, snf(abelian_group(gtype))[1].snf) #Easy case: quadratic and biquadratic extensions if gtype == [2] @@ -94,31 +94,31 @@ function abelian_extensionsQQ(gtype::Vector{Int}, bound::fmpz, only_real::Bool = end @vprint :Fields 1 "\e[1F$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())" return list1 - + end function _abelian_extensionsQQ(gtype::Vector{Int}, absolute_discriminant_bound::fmpz, only_real::Bool = false; unramified_outside::Vector{fmpz} = fmpz[]) - + Qx, x = PolynomialRing(FlintQQ, "x", cached = false) K, _ = NumberField(x-1, "a", cached = false) O = maximal_order(K) n = prod(gtype) expo = lcm(gtype) - + #Getting conductors l_conductors = Hecke.conductorsQQ(O, gtype, absolute_discriminant_bound; unramified_outside = unramified_outside) sort!(l_conductors, rev = true) len = length(l_conductors) @vprint :Fields 1 "Number of conductors: $(len) \n\n" @vprint :FieldsNonFancy 1 "Number of conductors: $(len) \n" - - + + complex = iseven(expo) && !only_real - + #Now, the big loop class_fields = Vector{Hecke.ClassField{MapRayClassGrp, GrpAbFinGenMap}}() for (i, k) in enumerate(l_conductors) - if iszero(mod(i, 1000)) + if iszero(mod(i, 1000)) pt = len - i @vprint :Fields 1 "\e[1F$(Hecke.set_cursor_col())$(Hecke.clear_to_eol()) Conductors to test: $(pt)\n" end @@ -158,9 +158,9 @@ function check_extension(C::Hecke.ClassField, bound::fmpz, Dcond::Dict, Ddisc::D if !fl2 return false end - @vtime :Fields 3 fl3 = Hecke.discriminant_conductor(C, bound, lwp = Ddisc) + @vtime :Fields 3 fl3 = Hecke.discriminant_conductor(C, bound, lwp = Ddisc) return fl3 - + end function _construct_grp(IdH::GAP.GapObj, uncom::Int) @@ -173,7 +173,7 @@ function _construct_grp(IdH::GAP.GapObj, uncom::Int) for i = 1:length(gens) o = GAP.Globals.Order(gens[i]) ex = ppio(o, uncom)[1] - push!(new_gens, gens[i]^ex) + push!(new_gens, gens[i]^ex) end S = GAP.Globals.Subgroup(G, GAP.julia_to_gap(new_gens)) Q = GAP.Globals.FactorGroup(G, S) @@ -186,14 +186,14 @@ function max_ramified_prime(O::NfOrd, gtype::Vector{Int}, bound::fmpz) fac = factor(n) m = Int(minimum(keys(fac.fac))) k = divexact(n, m) - b1 = Int(root(bound, degree(O)*(m-1)*k)) + b1 = Int(root(bound, degree(O)*(m-1)*k)) return b1 end function _abelian_normal_extensions(F::FieldsTower, gtype::Vector{Int}, absbound::fmpz, IdCheck::GAP.GapObj, only_real::Bool, IdG::GAP.GapObj; unramified_outside::Vector{fmpz} = fmpz[]) K = F.field - O = maximal_order(K) + O = maximal_order(K) n = prod(gtype) inf_plc = Vector{InfPlc}() if abs(discriminant(O))^n > absbound @@ -270,7 +270,7 @@ function _abelian_normal_extensions(F::FieldsTower, gtype::Vector{Int}, absbound end end @vprint :Fields 3 "\n\n" - end + end if isempty(class_fields_with_act) return Vector{Hecke.ClassField{Hecke.MapRayClassGrp, GrpAbFinGenMap}}[] end @@ -289,10 +289,10 @@ end ################################################################################ function from_class_fields_to_fields(class_fields::Vector{ClassField{MapRayClassGrp, GrpAbFinGenMap}}, autos::Vector{NfToNfMor}, grp_to_be_checked::Dict{Int, GAP.GapObj}, target_group::GAP.GapObj) - + if isempty(class_fields) @vprint :Fields 1 "\e[1F$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())" - return Tuple{Hecke.NfRelNS{nf_elem}, Vector{Hecke.NfRelNSToNfRelNSMor_nf_elem}}[] + return Tuple{Hecke.NfRelNS{nf_elem}, Vector{Hecke.NfRelNSToNfRelNSMor_nf_elem}}[] end K = base_ring(class_fields[1]) divisors_of_n = collect(keys(grp_to_be_checked)) @@ -311,7 +311,7 @@ function from_class_fields_to_fields(class_fields::Vector{ClassField{MapRayClass end idE = grp_to_be_checked[p] if iszero(mod(order(torsion_unit_group(maximal_order(K))[1]), p^(valuation(exponent(class_fields[1]), p)))) - #In this case, since we already know the class group of K and the RCF requires K(zeta_p^v) = K, + #In this case, since we already know the class group of K and the RCF requires K(zeta_p^v) = K, #we compute the class field directly over K compute_fields(cfieldsp, autos, idE, right_grp) pclassfields[ind] = cfieldsp @@ -321,7 +321,7 @@ function from_class_fields_to_fields(class_fields::Vector{ClassField{MapRayClass #Now, we check whether the abelian extensions can be realized over a subfield from a group theoretical point of view. E = GAP.Globals.SmallGroup(idE) S, H, ab_inv = max_ab_norm_sub_containing(E) - if S == H + if S == H #No, it can't. compute_fields(cfieldsp, autos, idE, right_grp) pclassfields[ind] = cfieldsp @@ -370,11 +370,11 @@ function from_class_fields_to_fields(class_fields::Vector{ClassField{MapRayClass end end return fields - + end function compute_fields(class_fields::Vector{Hecke.ClassField{Hecke.MapRayClassGrp, GrpAbFinGenMap}}, autos::Vector{NfToNfMor}, grp_to_be_checked::GAP.GapObj, right_grp) - + use_brauer = true it = findall(right_grp) K = base_field(class_fields[it[1]]) @@ -385,7 +385,7 @@ function compute_fields(class_fields::Vector{Hecke.ClassField{Hecke.MapRayClassG fields = Tuple{Hecke.NfRelNS{nf_elem}, Vector{Hecke.NfRelNSToNfRelNSMor_nf_elem}}[] expo = Int(exponent(codomain(class_fields[it[1]].quotientmap))) - + if !use_brauer set_up_cycl_ext(K, expo, autos) end @@ -394,7 +394,7 @@ function compute_fields(class_fields::Vector{Hecke.ClassField{Hecke.MapRayClassG C = class_fields[i] L = number_field(C, using_norm_relation = use_brauer) autL = Hecke.absolute_automorphism_group(C, autos) - if !isone(gcd(degree(K), expo)) + if !isone(gcd(degree(K), expo)) Cpperm = permutation_group(autL) if GAP.Globals.IdGroup(Cpperm) != grp_to_be_checked right_grp[i] = false @@ -427,7 +427,7 @@ function _ext_and_autos(resul::Vector{Hecke.ClassField{S, T}}, autos::Vector{NfT w = 1 while mod(degree(pols[w]), p) != 0 w += 1 - end + end auts = Cp.AbsAutGrpA for phi in auts if (isdefined(phi.image_data.base_field_map_data, :prim_image) ? phi.image_data.base_field_map_data.prim_image : codomain(phi)(gen(base_field(codomain(phi))))) == codomain(phi)(gen(K)) @@ -478,7 +478,7 @@ function set_up_cycl_ext(K::AnticNumberField, n::Int, autK::Vector{NfToNfMor}) end function _action(t::Hecke.GrpAbFinGenMap, act::Vector{Hecke.GrpAbFinGenMap}) - + T = codomain(t) S, mS = snf(T) new_act = Vector{Hecke.GrpAbFinGenMap}(undef, length(act)) @@ -487,7 +487,7 @@ function _action(t::Hecke.GrpAbFinGenMap, act::Vector{Hecke.GrpAbFinGenMap}) new_act[i] = Hecke.GrpAbFinGenMap(S, S, res) end return new_act - + end ################################################################################ @@ -497,7 +497,7 @@ end ################################################################################ function max_ab_norm_sub_containing(G::GAP.GapObj) - + D = GAP.Globals.DerivedSeries(G) H = D[end-1] G1 = GAP.Globals.Centralizer(G, H) @@ -602,7 +602,7 @@ function computing_over_subfields(class_fields, subfields, idE, autos, right_grp fields[ind] = (C.A, C.AbsAutGrpA) ind += 1 end - return fields + return fields end @@ -640,7 +640,7 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx for (p, v) in fM0 p1 = Hecke.intersect_prime(mL, p) if !haskey(fm0, p1) - if iscoprime(minimum(p1, copy = false), n) + if iscoprime(minimum(p1, copy = false), n) fm0[p1] = 1 else fm0[p1] = v @@ -652,14 +652,14 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx #Now, I have problems, so I need to add the ramification of the other extension. for (p, v) in f if !haskey(fm0, p) - if isone(gcd(minimum(p), n)) + if isone(gcd(minimum(p), n)) fm0[p] = 1 else fm0[p] = v end else - if !isone(gcd(minimum(p), n)) - fm0[p] = max(v, fm0[p]) + if !isone(gcd(minimum(p), n)) + fm0[p] = max(v, fm0[p]) end end lPP = prime_decomposition(mL, p) @@ -672,7 +672,7 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx end end infplc = InfPlc[] - if iszero(mod(n, 2)) + if iszero(mod(n, 2)) infplc = real_places(L) end @vprint :Fields 3 "Checking if I can compute $(indclf) over a subfield\n\n " @@ -680,10 +680,10 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx if exponent(r) < n || order(r) < degree(C) push!(to_be_done, indclf) continue - end + end #Now, the norm group of K over L @vtime :Fields 3 ngL, mngL = Hecke.norm_group(mL, mr, prod(ab_invariants_mod)) - @hassert :Fields 1 divisible(divexact(fmpz(degree(codomain(mL))), degree(domain(mL))), divexact(order(r), order(ngL))) + @hassert :Fields 1 divisible(divexact(fmpz(degree(codomain(mL))), degree(domain(mL))), divexact(order(r), order(ngL))) if !divisible(order(ngL), degree(C)) || !divisible(exponent(C), n) push!(to_be_done, indclf) continue @@ -698,7 +698,7 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx fM0[p] = max(v, fM0[p]) else fM0[p] = v - end + end end end inf_plc2 = InfPlc[] @@ -727,7 +727,7 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx @hassert :Fields 1 isisomorphic(cokernel(mk, false)[1], codomain(C.quotientmap)) mp = mk*proj ck, mck = cokernel(mp, false) - #If everything could work, then ck should be the direct product of the abelian extension I am searching for and + #If everything could work, then ck should be the direct product of the abelian extension I am searching for and #the maximal abelian subextension of K/L G1 = snf(cokernel(mngL, false)[1])[1] G2 = snf(codomain(C.quotientmap))[1] @@ -740,7 +740,7 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx fl, ms1 = has_complement(ms) @assert fl mq1 = cokernel(ms1, false)[2] - mqq = mck * mq1 + mqq = mck * mq1 @hassert :Fields 1 domain(mqq) == r C1 = ray_class_field(mr, mqq) number_field(C1) @@ -749,7 +749,7 @@ function translate_extensions(mL::NfToNfMor, class_fields, new_class_fields, ctx end @vprint :Fields 1 "$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())" return to_be_done - + end function create_sub(ss, iso, PermGAP, auts, K) @@ -765,7 +765,7 @@ function create_sub(ss, iso, PermGAP, auts, K) end function compute_subfields(K::AnticNumberField, E, H, S) - + proj = GAP.Globals.NaturalHomomorphismByNormalSubgroup(E, H) Hn = GAP.Globals.ImagesSource(proj) imgsS = GAP.Globals.Image(proj, S) @@ -776,7 +776,7 @@ function compute_subfields(K::AnticNumberField, E, H, S) Sn = GAP.Globals.Image(varphi, imgsS) if !(Sn in orbitS) push!(orbitS, Sn) - end + end end auts = automorphisms(K, copy = false) Hperm = _from_autos_to_perm(auts) @@ -801,7 +801,7 @@ function translate_class_field_down(subfields, class_fields, it, ab_invariants) for mL in subfields push!(created_subfields, mL) to_be_done_new = translate_extensions(mL, class_fields, new_class_fields, ctxK, it, ab_invariants) - if length(to_be_done_new) == 0 + if length(to_be_done_new) == 0 return new_class_fields, created_subfields, to_be_done_new end to_be_done = to_be_done_new @@ -836,7 +836,7 @@ function translate_fields_up(class_fields, new_class_fields, subfields, it) mul!(img, img, gen(CEK.Kr)) end end - mrel = hom(CEL.Kr, CEK.Kr, mL, img) + mrel = hom(CEL.Kr, CEK.Kr, mL, img) #@hassert :Fields 1 isconsistent(mrel) g = mrel(CEL.mp[1](gen(CEL.Ka))) mp = hom(CEL.Ka, CEK.Ka, CEK.mp[1]\(g), check = false) @@ -871,7 +871,7 @@ function translate_fields_up(class_fields, new_class_fields, subfields, it) mrel2 = hom(Ccyc.K, Cpp.K, D[d], gen(Cpp.K)) #@hassert :Fields 1 isconsistent(mrel2) @hassert :Fields 1 parent(Ccyc.pe) == domain(mrel2) - Cpp.pe = mrel2(Ccyc.pe) + Cpp.pe = mrel2(Ccyc.pe) CEKK = cyclotomic_extension(K, d) @hassert :Fields 1 iszero(map_coefficients(CEKK.mp[2], fdef, cached = false)(Cpp.pe)) Cpp.o = d1 diff --git a/src/FieldFactory/brauer.jl b/src/FieldFactory/brauer.jl index 9d02c6f2eb..5844c1d765 100644 --- a/src/FieldFactory/brauer.jl +++ b/src/FieldFactory/brauer.jl @@ -4,12 +4,12 @@ add_verbose_scope(:BrauerObst) ################################################################################ # # Obstruction Interface -# +# ################################################################################ function check_obstruction(list::Vector{FieldsTower}, L::GAP.GapObj, i::Int, invariants::Vector{Int}) - + d = degree(list[1]) common_degree = ppio(invariants[end], d)[1] @vprint :BrauerObst 1 "Computing cocycles\n" @@ -56,12 +56,12 @@ function check_obstruction(list::Vector{FieldsTower}, L::GAP.GapObj, end for (p, v) in fac @vprint :BrauerObst 1 "Checking obstructions at $p \n" - cocycles_p_start = cocycle_ctx[_to_prime_power_kernel(x, Int(p)) for x in cocycles] + cocycles_p_start = cocycle_ctx[_to_prime_power_kernel(x, Int(p)) for x in cocycles] indices_non_split = Int[] for i = 1:length(cocycles_p_start) @vprint :BrauerObst 1 "Checking if cocycle $i splits \n" if !iszero(cocycles_p_start[i]) - push!(indices_non_split, i) + push!(indices_non_split, i) end end if isempty(indices_non_split) @@ -72,7 +72,7 @@ function check_obstruction(list::Vector{FieldsTower}, L::GAP.GapObj, for i = 1:length(list) @vprint :Fields 1 "$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())Fields to test: $(length(list)-i+1)" if !all(obstructions[i]) - obstructions_i = check_obstruction(list[i], cocycles_p, Int(p), obstructions[i]) + obstructions_i = check_obstruction(list[i], cocycles_p, Int(p), obstructions[i]) for j = 1:length(obstructions_i) obstructions[i][indices_non_split[j]] = obstructions_i[j] end @@ -87,7 +87,7 @@ function check_obstruction(list::Vector{FieldsTower}, L::GAP.GapObj, for i = 1:length(list) @vprint :Fields 1 "$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())Fields to test: $(length(list)-i+1)" if !all(obstructions[i]) - obstructions_i = check_obstruction_non_cyclic(list[i], all_cocycles, Int(p), obstructions[i]) + obstructions_i = check_obstruction_non_cyclic(list[i], all_cocycles, Int(p), obstructions[i]) for j = 1:length(obstructions_i) obstructions[i][indices_non_split[j]] = obstructions_i[j] end @@ -111,10 +111,10 @@ function check_obstruction(list::Vector{FieldsTower}, L::GAP.GapObj, end -function check_obstruction(F::FieldsTower, cocycles::Vector{cocycle_ctx}, +function check_obstruction(F::FieldsTower, cocycles::Vector{cocycle_ctx}, p::Int, obstruction_at::Vector{Bool}) #I assume that the kernel of the embedding problem is a p-group - @assert isprime(p) + @assert isprime(p) indices = [i for i = 1:length(obstruction_at) if !obstruction_at[i]] cocycles_to_test = cocycles[indices] for i = 1:length(cocycles) @@ -193,9 +193,9 @@ end # ################################################################################ -function check_obstruction_non_cyclic(F::FieldsTower, cocycles::Vector{Vector{cocycle_ctx}}, +function check_obstruction_non_cyclic(F::FieldsTower, cocycles::Vector{Vector{cocycle_ctx}}, p::Int, obstruction_at::Vector{Bool}) - + indices = Int[i for i = 1:length(obstruction_at) if !obstruction_at[i]] new_cocycles = cocycles[indices] for j = 1:length(new_cocycles) @@ -275,7 +275,7 @@ function _cocycles_with_cyclic_kernel(old_cocycle::cocycle_ctx, p::Int) np = remove(order, p)[2] if isone(np) && GAP.Globals.IsCyclic(fg) push!(normal_cyclic_and_contained, prmg) - end + end end #Almost done. I only want the minimal ones, so I need to sieve. res = GAP.GapObj[] @@ -319,7 +319,7 @@ function _to_subgroup_of_kernel(cocycle::cocycle_ctx, S) for i = 1:length(gensA_new) el_A = GAP.Globals.PreImagesRepresentative(pr, gensA_new[i]) el_E = GAP.Globals.Image(cocycle.inclusion, el_A) - push!(images_inclusion, GAP.Globals.Image(pr1, el_E)) + push!(images_inclusion, GAP.Globals.Image(pr1, el_E)) end inclusion = GAP.Globals.GroupHomomorphismByImages(A_new, E_new, gensA_new, GAP.julia_to_gap(images_inclusion)) gensE_new = GAP.Globals.GeneratorsOfGroup(E_new) @@ -330,7 +330,7 @@ function _to_subgroup_of_kernel(cocycle::cocycle_ctx, S) end projection = GAP.Globals.GroupHomomorphismByImages(E_new, G, gensE_new, GAP.julia_to_gap(images_proj)) local new_coc - let cocycle = cocycle, pr = pr + let cocycle = cocycle, pr = pr function new_coc(x::GAP.GapObj, y::GAP.GapObj) return GAP.Globals.Image(pr, cocycle.cocycle(x, y)) end @@ -370,7 +370,7 @@ function _to_prime_power_kernel(cocycle::cocycle_ctx, p::Int) for i = 1:length(gensA_new) el_A = GAP.Globals.PreImagesRepresentative(pr, gensA_new[i]) el_E = GAP.Globals.Image(cocycle.inclusion, el_A) - push!(images_inclusion, GAP.Globals.Image(pr1, el_E)) + push!(images_inclusion, GAP.Globals.Image(pr1, el_E)) end inclusion = GAP.Globals.GroupHomomorphismByImages(A_new, E_new, gensA_new, GAP.julia_to_gap(images_inclusion)) gensE_new = GAP.Globals.GeneratorsOfGroup(E_new) @@ -381,7 +381,7 @@ function _to_prime_power_kernel(cocycle::cocycle_ctx, p::Int) end projection = GAP.Globals.GroupHomomorphismByImages(E_new, G, gensE_new, GAP.julia_to_gap(images_proj)) local new_coc - let cocycle = cocycle, pr = pr + let cocycle = cocycle, pr = pr function new_coc(x::GAP.GapObj, y::GAP.GapObj) return GAP.Globals.Image(pr, cocycle.cocycle(x, y)) end @@ -499,7 +499,7 @@ function cocycles_computation(GG, HH, KK) mH1 = GAP.Globals.NaturalHomomorphismByNormalSubgroup(target_grp, GAP.Globals.Image(proj, KK)) H1 = GAP.Globals.ImagesSource(mH1) K = GAP.Globals.Kernel(mH1) - + Elems = GAP.Globals.Elements(H1) MatCoc = Matrix{GAP.GapObj}(undef, length(Elems), length(Elems)) Preimags = Vector{GAP.GapObj}(undef, length(Elems)) @@ -519,7 +519,7 @@ function cocycles_computation(GG, HH, KK) MatCoc[i, j] = x1*y1*GAP.Globals.Inverse(xy1) end end - + @vprint :BrauerObst 1 "Listing automorphisms \n" autos = _autos_to_check(H1, K, target_grp, mH1) cocycles = Vector{cocycle_ctx}(undef, length(autos)) @@ -527,7 +527,7 @@ function cocycles_computation(GG, HH, KK) aut1, aut2 = autos[i] local cocycle let Elems = Elems, MatCoc = MatCoc, aut1 = aut1, aut2 = aut2, Elems = Elems - function cocycle(x::GAP.GapObj, y::GAP.GapObj) + function cocycle(x::GAP.GapObj, y::GAP.GapObj) new_x = GAP.Globals.PreImagesRepresentative(aut1, x) new_y = GAP.Globals.PreImagesRepresentative(aut1, y) ind1 = 1 @@ -544,7 +544,7 @@ function cocycles_computation(GG, HH, KK) #I change aut2 so that its codomain is really target_grp new_aut2 = aut2*GAP.Globals.GroupHomomorphismByImages(K, target_grp, GAP.Globals.GeneratorsOfGroup(K), GAP.Globals.GeneratorsOfGroup(K)) cocycles[i] = cocycle_ctx(mH1*aut1, new_aut2, cocycle) - end + end return cocycles end @@ -575,7 +575,7 @@ function _find_exp(x::GAP.GapObj, y::GAP.GapObj) while z != y z = z*x i += 1 - end + end #@assert x^i == y return i end @@ -604,7 +604,7 @@ function pSylow(Gperm::GAP.GapObj, permGAP::Vector{GAP.GapObj}, G::Vector{NfToNf j += 1 end end - return Gp + return Gp end function pSylow(G::Vector{NfToNfMor}, p::Int) @@ -612,7 +612,7 @@ function pSylow(G::Vector{NfToNfMor}, p::Int) if uncom == 1 return G end - permGC = _from_autos_to_perm(G) + permGC = _from_autos_to_perm(G) Gperm = _perm_to_gap_grp(permGC) PermGAP = Vector{GAP.GapObj}(undef, length(permGC)) for w = 1:length(permGC) @@ -692,8 +692,8 @@ function _obstruction_prime_no_extend(x::FieldsTower, cocycles, p::Int) pol = Rx(image_primitive_element(g)) el = D[g] D1[pol] = el - end - obstruction = falses(length(cocycles)) + end + obstruction = falses(length(cocycles)) for i = 1:length(obstruction) if isdefined(cocycles[i], :inclusion_of_pSylow) #I need to assert that I took the right pSylow. @@ -738,7 +738,7 @@ function _obstruction_prime(x::FieldsTower, cocycles::Vector{cocycle_ctx}, p) autsK1 = automorphisms(K1, copy = false) restr = restriction(autsK1, autsK, Kc.mp[2]) #I construct the group and the isomorphisms between the automorphisms and the gap group. - permGC = _from_autos_to_perm(autsK) + permGC = _from_autos_to_perm(autsK) Gperm = _perm_to_gap_grp(permGC) Pcomp = 2 R = GF(Pcomp, cached = false) @@ -756,7 +756,7 @@ function _obstruction_prime(x::FieldsTower, cocycles::Vector{cocycle_ctx}, p) dautsK1 = Dict{gfp_poly, Int}() for w = 1:length(autsK1) dautsK1[Rx(image_primitive_element(autsK1[w]))] = w - end + end #Restrict to the p-Sylow #Unfortunately, I need to compute the group structure. Gp = pSylow(autsK1, p) @@ -783,7 +783,7 @@ function _obstruction_prime(x::FieldsTower, cocycles::Vector{cocycle_ctx}, p) return mod(rescoc, p)::Int end end - + if !issplit_cpa(x, Gp, cocycle, p, 1, Rx) obstruction[i] = true end @@ -888,7 +888,7 @@ function check_obstruction_pp(F::FieldsTower, cocycles::Vector{cocycle_ctx}, n:: #= lp = ramified_primes(F) assure_automorphisms(F) - + v, p = ispower(n) if all(x -> (isone(mod(x, n)) || x == p), lp) return _obstruction_pp_no_extend(F, cocycles, n) @@ -914,7 +914,7 @@ function _obstruction_pp(F::FieldsTower, cocycles::Vector{cocycle_ctx}, pv::Int) autsK1 = automorphisms(K1, copy = false) restr = restriction(autsK1, autsK, Kc.mp[2]) #I construct the group and the isomorphisms between the automorphisms and the gap group. - permGC = _from_autos_to_perm(autsK) + permGC = _from_autos_to_perm(autsK) Gperm = _perm_to_gap_grp(permGC) Pcomp = 7 R = GF(Pcomp, cached = false) @@ -931,7 +931,7 @@ function _obstruction_pp(F::FieldsTower, cocycles::Vector{cocycle_ctx}, pv::Int) dautsK1 = Dict{gfp_poly, Int}() for w = 1:length(autsK1) dautsK1[Rx(image_primitive_element(autsK1[w]))] = w - end + end #Restrict to the p-Sylow #Unfortunately, I need to compute the group structure. Gp = pSylow(autsK1, p) @@ -970,7 +970,7 @@ function _obstruction_pp(F::FieldsTower, cocycles::Vector{cocycle_ctx}, pv::Int) return mod(rescoc, pv)::Int end end - #I have to find the subgroup of Gp such that the action of Gp on the roots of unity + #I have to find the subgroup of Gp such that the action of Gp on the roots of unity #coincides with the action on the kernel Stab = NfToNfMor[] inclusion = cocycles[i].inclusion @@ -996,7 +996,7 @@ function _obstruction_pp(F::FieldsTower, cocycles::Vector{cocycle_ctx}, pv::Int) if !fl obstruction[i] = true end - + end return obstruction end @@ -1006,7 +1006,7 @@ function _obstruction_pp_no_extend(F::FieldsTower, cocycles::Vector{cocycle_ctx} K = F.field autsK = automorphisms(K, copy = false) #I construct the group and the isomorphisms between the automorphisms and the gap group. - permGC = _from_autos_to_perm(autsK) + permGC = _from_autos_to_perm(autsK) Gperm = _perm_to_gap_grp(permGC) Pcomp = 7 R = GF(Pcomp, cached = false) @@ -1021,7 +1021,7 @@ function _obstruction_pp_no_extend(F::FieldsTower, cocycles::Vector{cocycle_ctx} dautsK = Dict{gfp_poly, Int}() for w = 1:length(autsK) dautsK[Rx(image_primitive_element(autsK[w]))] = w - end + end H = GAP.Globals.ImagesSource(cocycles[1].projection) iso = GAP.Globals.IsomorphismGroups(Gperm, H) ElemGAP = Vector{GAP.GapObj}(undef, length(permGC)) @@ -1042,7 +1042,7 @@ function _obstruction_pp_no_extend(F::FieldsTower, cocycles::Vector{cocycle_ctx} return mod(rescoc, pv)::Int end end - #I have to find the subgroup of Gp such that the action of Gp on the roots of unity + #I have to find the subgroup of Gp such that the action of Gp on the roots of unity #coincides with the action on the kernel Stab = NfToNfMor[] inclusion = cocycles[i].inclusion @@ -1064,10 +1064,10 @@ function _obstruction_pp_no_extend(F::FieldsTower, cocycles::Vector{cocycle_ctx} if !issplit_cpa(F, Stab, cocycle, p, v, Rx) obstruction[i] = true end - + end - return obstruction + return obstruction end ################################################################################ @@ -1079,7 +1079,7 @@ end function issplit_cpa(F::FieldsTower, G::Vector{NfToNfMor}, Coc::Function, p::Int, v::Int, Rx::GFPPolyRing) K = F.field @vtime :BrauerObst 1 if p == 2 && istotally_complex(K) && !is_split_at_infinity(K, G, Coc, Rx) - return false + return false end # Now, the finite primes. # The crossed product algebra is ramified at the ramified primes of the field (and at the primes dividing the values @@ -1090,7 +1090,7 @@ function issplit_cpa(F::FieldsTower, G::Vector{NfToNfMor}, Coc::Function, p::Int lp = ramified_primes(F) if p in lp || !(F.isabelian || (length(G) == degree(K))) for q in lp - if q != p + if q != p @vtime :BrauerObst 1 fl = issplit_at_p(F, G, Coc, Int(q), p^v, Rx) if !fl return false @@ -1106,7 +1106,7 @@ function issplit_cpa(F::FieldsTower, G::Vector{NfToNfMor}, Coc::Function, p::Int end end end - return true + return true end function is_split_at_infinity(K::AnticNumberField, G::Vector{NfToNfMor}, Coc::Function, Rx::GFPPolyRing) @@ -1167,7 +1167,7 @@ function _find_theta(G::Vector{NfToNfMor}, F::FqNmodFiniteField, mF::Hecke.NfOrd #img = compose_mod(theta_q, igFq, fmod) #res = O(lift(K, img), false) #I make sure that the element is a generator of the inertia subgroup - if mF(res) == gF + if mF(res) == gF theta_q = Rt(image_primitive_element(theta)) pp = theta_q for i = 2:t @@ -1213,7 +1213,7 @@ function _find_frob(G::Vector{NfToNfMor}, F::FqNmodFiniteField, mF::Hecke.NfOrdT end frob_q = Rt(image_primitive_element(frob)) #Now, I check the relation - #gc = frob * theta + #gc = frob * theta gc = compose_mod(frob_q, theta_q, fmod) #gq = (theta^expo) * frob #TODO: Binary powering @@ -1268,7 +1268,7 @@ function issplit_at_P(O::NfOrd, G::Vector{NfToNfMor}, Coc::Function, P::NfOrdIdl if f == 1 && iszero(mod(c, n)) return true end - end + end @vtime :BrauerObst 1 Gp = decomposition_group(P, G = G, orderG = e*f) InGrp = inertia_subgroup(P, G = Gp) e = length(InGrp) @@ -1280,7 +1280,7 @@ function issplit_at_P(O::NfOrd, G::Vector{NfToNfMor}, Coc::Function, P::NfOrdIdl c = divexact(norm(P)-1, e) if f == 1 && iszero(mod(c, n)) return true - end + end p = Int(minimum(P)) @assert mod(degree(P), f) == 0 f1 = divexact(degree(P), f) @@ -1304,7 +1304,7 @@ function issplit_at_P(O::NfOrd, G::Vector{NfToNfMor}, Coc::Function, P::NfOrdIdl return false end end - + if f == 1 return true end diff --git a/src/FieldFactory/chain.jl b/src/FieldFactory/chain.jl index d597334576..9aea2cd0a9 100644 --- a/src/FieldFactory/chain.jl +++ b/src/FieldFactory/chain.jl @@ -73,7 +73,7 @@ function get_chain(G::GAP.GapObj, H::GAP.GapObj) res = possible_subs[i] break elseif occ < best_occ - res = possible_subs[i] + res = possible_subs[i] end end end diff --git a/src/FieldFactory/conductors.jl b/src/FieldFactory/conductors.jl index 72befd1a2e..fd1820c1e5 100644 --- a/src/FieldFactory/conductors.jl +++ b/src/FieldFactory/conductors.jl @@ -41,7 +41,7 @@ function must_be_ramified(L::GAP.GapObj, i::Int) S = GAP.Globals.Representative(lS[i]) if !GAP.Globals.IsCyclic(S) || isone(GAP.Globals.Size(S)) continue - end + end g = GAP.Globals.MinimalGeneratingSet(S)[1] n = GAP.Globals.Order(g) preimgs = GAP.Globals.List(GAP.Globals.PreImages(mH1, g)) @@ -61,7 +61,7 @@ function must_be_ramified(L::GAP.GapObj, i::Int) break end end - return found_all, found_one + return found_all, found_one end ################################################################################ @@ -116,7 +116,7 @@ function _conductors_using_cocycles(F::FieldsTower, st::Vector{Int}, l_cond::Vec push!(ramify_here, p) elseif maximum(sizes_preimages) == ord && !divides(fmpz(n), p)[1] push!(not_ramify_here, p) - end + end end if isempty(ramify_here) && isempty(not_ramify_here) return l_cond @@ -212,12 +212,12 @@ function conductors_with_restrictions(F::FieldsTower, st::Vector{Int}, IdG::GAP. #Regardless of the exponents, the norm of the discriminant will be a square if issquare && is_square_disc_base_field return new_conds - elseif issquare + elseif issquare return typeof(new_conds)() else return new_conds end - end + end #Now, p must be 2. if issquare && is_square_disc_base_field #Only the even exponents are allowed! @@ -226,7 +226,7 @@ function conductors_with_restrictions(F::FieldsTower, st::Vector{Int}, IdG::GAP. if isempty(new_conds[i][2]) push!(newer_conds, new_conds[i]) continue - end + end if iszero(mod(first(values(new_conds[i][2])), 2)) push!(newer_conds, new_conds[i]) end @@ -269,7 +269,7 @@ function conductors_with_restrictions(F::FieldsTower, st::Vector{Int}, IdG::GAP. else continue end - end + end #Now, p must be 2. if issquare && is_square_disc_base_field #Only the even exponents are allowed! diff --git a/src/FieldFactory/conductors_generic.jl b/src/FieldFactory/conductors_generic.jl index d981531fb4..1754d4d813 100644 --- a/src/FieldFactory/conductors_generic.jl +++ b/src/FieldFactory/conductors_generic.jl @@ -30,7 +30,7 @@ function tame_conductors_degree_2(O::NfOrd, bound::fmpz; unramified_outside::Vec push!(extra_list, (extra_list[i][1]*q, n)) end end - + final_list=Tuple{Int,fmpz}[] l = length(list) for (el,norm) in extra_list @@ -42,15 +42,15 @@ function tame_conductors_degree_2(O::NfOrd, bound::fmpz; unramified_outside::Vec end end return final_list - + end function squarefree_for_conductors(O::NfOrd, n::Int, deg::Int; coprime_to::Vector{fmpz}=fmpz[], prime_base::Vector{fmpz} = fmpz[]) - + sqf = trues(n) primes = trues(n) - + #remove primes that can be wildly ramified or #that are ramified in the base field for x in coprime_to @@ -65,9 +65,9 @@ function squarefree_for_conductors(O::NfOrd, n::Int, deg::Int; coprime_to::Vecto t += el end end - + #sieving procedure - + if !(2 in coprime_to) dt = prime_decomposition_type(O,2) if isone(gcd(2^dt[1][1]-1, deg)) @@ -77,7 +77,7 @@ function squarefree_for_conductors(O::NfOrd, n::Int, deg::Int; coprime_to::Vecto @inbounds primes[j] = false j += 2 end - else + else i=2 s=4 while s <= n @@ -94,7 +94,7 @@ function squarefree_for_conductors(O::NfOrd, n::Int, deg::Int; coprime_to::Vecto i = 3 b = isqrt(n) while i <= b - if primes[i] + if primes[i] if gcd(i-1, deg) != 1 && (!isempty(prime_base) && (i in prime_base)) j = i while j <= n @@ -116,7 +116,7 @@ function squarefree_for_conductors(O::NfOrd, n::Int, deg::Int; coprime_to::Vecto @inbounds sqf[j] = false j+=i end - else + else j=i while j <= n @inbounds primes[j]=false @@ -147,7 +147,7 @@ function squarefree_for_conductors(O::NfOrd, n::Int, deg::Int; coprime_to::Vecto end i+=2 end - + if degree(O)==1 i=2 while i<=length(sqf) @@ -165,9 +165,9 @@ function conductors_tame(O::NfOrd, n::Int, bound::fmpz; unramified_outside::Vect return tame_conductors_degree_2(O, bound, unramified_outside = unramified_outside) end # - # First, conductors coprime to the ramified primes and to the + # First, conductors coprime to the ramified primes and to the # degree of the extension we are searching for. - # + # d = degree(O) K = nf(O) wild_ram = collect(keys(factor(fmpz(n)).fac)) @@ -180,7 +180,7 @@ function conductors_tame(O::NfOrd, n::Int, bound::fmpz; unramified_outside::Vect e = Int((m-1)*k) b1 = Int(root(bound, degree(O)*e)) list = squarefree_for_conductors(O, b1, n, coprime_to = coprime_to, prime_base = unramified_outside) - + extra_list = Tuple{Int, fmpz}[(1, fmpz(1))] for q in ram_primes if !isempty(unramified_outside) && !(q in unramified_outside) @@ -188,7 +188,7 @@ function conductors_tame(O::NfOrd, n::Int, bound::fmpz; unramified_outside::Vect end tr = prime_decomposition_type(O, Int(q)) f = tr[1][1] - nq = q^f + nq = q^f if iscoprime(nq - 1, fmpz(n)) continue end @@ -205,7 +205,7 @@ function conductors_tame(O::NfOrd, n::Int, bound::fmpz; unramified_outside::Vect push!(extra_list, (extra_list[i][1]*q, no)) end end - + final_list = Tuple{Int, fmpz}[] l = length(list) e = Int((m-1)*k) @@ -217,12 +217,12 @@ function conductors_tame(O::NfOrd, n::Int, bound::fmpz; unramified_outside::Vect push!(final_list, (list[i]*el, (fmpz(list[i])^(e*d))*norm)) end end - + return final_list end function conductors(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unramified_outside::Vector{fmpz} = fmpz[]) - + #Careful: I am assuming that a is in snf! K = nf(O) d = degree(O) @@ -238,10 +238,10 @@ function conductors(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unr if tame reverse!(list) - return Tuple{Int, Dict{NfOrdIdl, Int}}[(x[1], Dict{NfOrdIdl, Int}()) for x in list] + return Tuple{Int, Dict{NfOrdIdl, Int}}[(x[1], Dict{NfOrdIdl, Int}()) for x in list] end # - # now, we have to multiply the obtained conductors by proper powers of wildly ramified ideals. + # now, we have to multiply the obtained conductors by proper powers of wildly ramified ideals. # wild_list = Tuple{Int, Dict{NfOrdIdl, Int}, fmpz}[(1, Dict{NfOrdIdl, Int}(), fmpz(1))] for q in wild_ram @@ -254,9 +254,9 @@ function conductors(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unr sq = q^(divexact(d,lp[1][2])) #norm of the squarefree part of the integer q #= we have to use the conductor discriminant formula to understand the maximal possible exponent of q. - Let ap be the exponent of p in the relative discriminant, let m be the conductor and h_(m,C) the cardinality of the + Let ap be the exponent of p in the relative discriminant, let m be the conductor and h_(m,C) the cardinality of the quotient of ray class group by its subgroup C. - Then + Then ap= v_p(m)h_(m,C)- sum_{i=1:v_p(m)} h_(m/p^i, C) Since m is the conductor, h_(m/p^i, C)<= h_(m,C)/q. Consequently, we get @@ -264,26 +264,26 @@ function conductors(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unr =# v = valuation(expo, q) # First, we compute the bound coming from the bound on the discriminant - boundsubext = root(bound, Int(divexact(n, q^v))) #The bound on the norm of the discriminant on the subextension + boundsubext = root(bound, Int(divexact(n, q^v))) #The bound on the norm of the discriminant on the subextension # of order q^v #Bound coming from the bound on the discriminant - obound = fmpz(flog(boundsubext, sq)) - + obound = fmpz(flog(boundsubext, sq)) + #Bound coming from the analysis on the different in a local extension nbound = q^v + lp[1][2] * v * q^v - 1 bound_max_ap = min(nbound, obound) #bound on ap bound_max_exp = div(bound_max_ap, (q-1)*q^(v-1)) #bound on the exponent in the conductor - + #Ramification groups bound max_nontrivial_ramification_group = div(lp[1][2]*(q^v), q-1) if v > 1 - ram_groups_bound = max_nontrivial_ramification_group - sum(q^i for i = 1:v-1) + v + ram_groups_bound = max_nontrivial_ramification_group - sum(q^i for i = 1:v-1) + v else - ram_groups_bound = max_nontrivial_ramification_group + 1 + ram_groups_bound = max_nontrivial_ramification_group + 1 end bound_max_exp = min(ram_groups_bound, bound_max_exp) - + #The prime may be also tamely ramified! nisc = gcd(q^(fq)-1, fmpz(expo)) if nisc != 1 @@ -309,7 +309,7 @@ function conductors(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unr if nn>bound continue end - d2 = merge(max, d1, wild_list[s][2]) + d2 = merge(max, d1, wild_list[s][2]) if nisc!=1 push!(wild_list, (q*wild_list[s][1], d2, nn)) else @@ -318,7 +318,7 @@ function conductors(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unr end end end - + #the final list final_list=Tuple{Int, Dict{NfOrdIdl, Int}}[] for (el, nm) in list @@ -331,7 +331,7 @@ function conductors(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unr end reverse!(final_list) return final_list - + end ############################################################################### @@ -341,7 +341,7 @@ end ############################################################################### function squarefree_for_conductorsQQ(O::NfOrd, n::Int, a::Vector{Int}; coprime_to::Vector{fmpz}=fmpz[], unramified_outside::Vector{fmpz} = fmpz[]) - + G = map(Int, snf(abelian_group(a))[1].snf) sqf= trues(n) primes= trues(n) @@ -359,11 +359,11 @@ function squarefree_for_conductorsQQ(O::NfOrd, n::Int, a::Vector{Int}; coprime_t t += el end end - + single = Vector{Int}() push!(single, 1) multiple = Vector{Int}() - + #sieving procedure #First, I can remove all the multiples of 2 if !(2 in coprime_to) @@ -372,7 +372,7 @@ function squarefree_for_conductorsQQ(O::NfOrd, n::Int, a::Vector{Int}; coprime_t @inbounds sqf[i] = false i+=2 end - end + end i=3 b = isqrt(n) @@ -387,7 +387,7 @@ function squarefree_for_conductorsQQ(O::NfOrd, n::Int, a::Vector{Int}; coprime_t @inbounds sqf[j]=false j+=i end - else + else j=i while j<= n @inbounds primes[j]=false @@ -431,7 +431,7 @@ function squarefree_for_conductorsQQ(O::NfOrd, n::Int, a::Vector{Int}; coprime_t elseif !isprime(deg) i = 3 while i < n - if primes[i] + if primes[i] if rem(i-1, deg) == 0 push!(multiple, i) else @@ -445,9 +445,9 @@ function squarefree_for_conductorsQQ(O::NfOrd, n::Int, a::Vector{Int}; coprime_t else multiple = Int[i for i = 2:length(sqf) if sqf[i]] end - - return single, multiple - + + return single, multiple + end @@ -455,21 +455,21 @@ end function conductors_tameQQ(O::NfOrd, a::Vector{Int}, bound::fmpz; unramified_outside::Vector{fmpz} = fmpz[]) # - # First, conductors coprime to the ramified primes and to the + # First, conductors coprime to the ramified primes and to the # degree of the extension we are searching for. - # + # n = prod(a) wild_ram = collect(keys(factor(fmpz(n)).fac)) m = minimum(wild_ram) k = divexact(n, m) - b1 = Int(root(fmpz(bound),Int((m-1)*k))) - + b1 = Int(root(fmpz(bound),Int((m-1)*k))) + return squarefree_for_conductorsQQ(O, b1, a, coprime_to = wild_ram, unramified_outside = unramified_outside) end function conductorsQQ(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; unramified_outside::Vector{fmpz} = fmpz[]) - + K = nf(O) d = degree(O) n = prod(a) @@ -483,10 +483,10 @@ function conductorsQQ(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; u single, multiple = conductors_tameQQ(O, a, bound, unramified_outside = unramified_outside) if tame - return multiple + return multiple end # - # now, we have to multiply the obtained conductors by proper powers of wildly ramified ideals. + # now, we have to multiply the obtained conductors by proper powers of wildly ramified ideals. # wild_list=Tuple{Int, Int, fmpz}[(1, 1, 1)] for q in wild_ram @@ -496,9 +496,9 @@ function conductorsQQ(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; u l = length(wild_list) #= we have to use the conductor discriminant formula to understand the maximal possible exponent of q. - Let ap be the exponent of p in the relative discriminant, let m be the conductor and h_(m,C) the cardinality of the + Let ap be the exponent of p in the relative discriminant, let m be the conductor and h_(m,C) the cardinality of the quotient of ray class group by its subgroup C. - Then + Then ap= v_p(m)h_(m,C)- sum_{i=1:v_p(m)} h_(m/p^i, C) Since m is the conductor, h_(m/p^i, C)<= h_(m,C)/q. Consequently, we get @@ -506,7 +506,7 @@ function conductorsQQ(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; u To find ap, it is enough to compute a logarithm. =# v = valuation(expo, q) - + #I don't need to give a bound for a_p on the big extension but only on the maximum extension of q-power order #This is the only thing that matters for the exponent of the conductor nisc = gcd(q-1,n) @@ -544,7 +544,7 @@ function conductorsQQ(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; u end end end - + #the final list final_list = Int[] exps = Int((minimum(wild_ram)-1)*divexact(n, minimum(wild_ram))) @@ -556,7 +556,7 @@ function conductorsQQ(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; u push!(final_list, (el*q*d)) end end - + for el in single for j = 2:length(wild_list) q,d,nm2 = wild_list[j] @@ -567,7 +567,7 @@ function conductorsQQ(O::NfOrd, a::Vector{Int}, bound::fmpz, tame::Bool=false; u end end return final_list - + end ################################################################################ @@ -599,17 +599,17 @@ function conductors_generic(K::AnticNumberField, gtype::Vector{Int}, absolute_bo if nP > bound continue end - gn = gcd(nP-1, gtype[end]) + gn = gcd(nP-1, gtype[end]) if !isone(gn) starting_power = 1 end vp = valuation(gtype[end], p) # First, we compute the bound coming from the bound on the discriminant - boundsubext = root(bound, Int(divexact(n, p^vp))) #The bound on the norm of the discriminant on the subextension + boundsubext = root(bound, Int(divexact(n, p^vp))) #The bound on the norm of the discriminant on the subextension # of order q^v #Bound coming from the bound on the discriminant - obound = flog(boundsubext, nP) - + obound = flog(boundsubext, nP) + #Bound coming from the analysis on the different in a local extension nbound = p^vp + v * vp * p^vp - 1 diff --git a/src/FieldFactory/fields.jl b/src/FieldFactory/fields.jl index ee389e8c4f..70493d880d 100644 --- a/src/FieldFactory/fields.jl +++ b/src/FieldFactory/fields.jl @@ -19,7 +19,7 @@ mutable struct cocycle_ctx values_cyclic::Function gen_kernel::GAP.GapObj inclusion_of_pSylow::GAP.GapObj - + function cocycle_ctx(proj::GAP.GapObj, incl::GAP.GapObj, cocycle::Function) z = new() z.projection = proj @@ -41,7 +41,7 @@ mutable struct FieldsTower isomorphism::Dict{NfToNfMor, GAP.GapObj} admissible_cocycles::Vector{cocycle_ctx} projections_for_conductors::Vector{GAP.GapObj} - + function FieldsTower(K::AnticNumberField, auts::Vector{NfToNfMor}, subfields::Vector{NfToNfMor}) z = new() z.field = K @@ -275,7 +275,7 @@ function permutation_group(G::Vector{Hecke.NfToNfMor}) end function _from_autos_to_perm(G::Vector{Hecke.NfToNfMor}) - + K = domain(G[1]) @assert degree(K) == length(G) n = length(G) @@ -304,7 +304,7 @@ function _from_autos_to_perm(G::Vector{Hecke.NfToNfMor}) permutations[s] = perm end return permutations - + end function _perm_to_gap_grp(perm::Vector{Vector{Int}}) @@ -314,7 +314,7 @@ function _perm_to_gap_grp(perm::Vector{Vector{Int}}) push!(g, z) end g1 = GAP.julia_to_gap(g) - return GAP.Globals.Group(g1) + return GAP.Globals.Group(g1) end function _perm_to_gap_perm(x::Vector{Int}) @@ -335,7 +335,7 @@ end ############################################################################### function _split_extension(G::Vector{Hecke.NfToNfMor}, mats::Vector{Hecke.GrpAbFinGenMap}) - + gtype = map(Int, domain(mats[1]).snf) G1 = permutation_group(G) gensG1 = GAP.Globals.GeneratorsOfGroup(G1) @@ -354,7 +354,7 @@ function _split_extension(G::Vector{Hecke.NfToNfMor}, mats::Vector{Hecke.GrpAbFi images[j] = g end auts[i] = GAP.Globals.GroupHomomorphismByImages(A, A, gens, GAP.julia_to_gap(images)) - end + end AutGrp = GAP.Globals.Group(GAP.julia_to_gap(auts)) mp = GAP.Globals.GroupHomomorphismByImages(G1, AutGrp, gensG1, GAP.julia_to_gap(auts)) return GAP.Globals.SplitExtension(G1, mp, A) @@ -375,8 +375,8 @@ function check_group_extension(TargetGroup::GAP.GapObj, autos::Vector{NfToNfMor} K = domain(autos[1]) d = degree(K) com, uncom = ppio(expo, d) - - if com == 1 + + if com == 1 # I only need to check the split extension, since the second cohomology group is # trivial, regardless of the action if length(res_act) == 1 && isprime(order(GS)) == 1 && isprime(degree(K)) && iscoprime(d, order(GS)) @@ -390,12 +390,12 @@ function check_group_extension(TargetGroup::GAP.GapObj, autos::Vector{NfToNfMor} return false end end - + if uncom == 1 #Need a cohomological check. Only useful in the prime power case. return true end - + # I check the split extension related to only uncom #Now, I have to check if the split extension is isomorphic to IdH Qn, mQn = quo(GS, uncom, false) @@ -412,7 +412,7 @@ function check_group_extension(TargetGroup::GAP.GapObj, autos::Vector{NfToNfMor} else return false end - + end @@ -438,17 +438,17 @@ function field_extensions(list::Vector{FieldsTower}, bound::fmpz, IsoE1::GAP.Gap IsoCheck = IsoE1 end final_list = FieldsTower[] - for (j, x) in enumerate(list) + for (j, x) in enumerate(list) @vprint :Fields 1 "Field $(j)/$(length(list)): $(x.field.pol)" @vprint :FieldsNonFancy 1 "Field $(j)/$(length(list)): $(x.field.pol)\n" append!(final_list, field_extensions(x, bound, IsoCheck, l, only_real, grp_to_be_checked, IsoE1, unramified_outside = unramified_outside)) - end + end return final_list end function field_extensions(x::FieldsTower, bound::fmpz, IsoE1::GAP.GapObj, l::Vector{Int}, only_real::Bool, grp_to_be_checked::Dict{Int, GAP.GapObj}, IsoG::GAP.GapObj; unramified_outside::Vector{fmpz} = fmpz[]) - + list_cfields = _abelian_normal_extensions(x, l, bound, IsoE1, only_real, IsoG, unramified_outside = unramified_outside) if isempty(list_cfields) @vprint :Fields 1 "\e[1F$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())Number of new fields found: 0\n\n" @@ -466,7 +466,7 @@ function field_extensions(x::FieldsTower, bound::fmpz, IsoE1::GAP.GapObj, l::Vec for s = 1:length(x.subfields) previous_fields[s] = x.subfields[s] end - previous_fields[end] = embed + previous_fields[end] = embed final_list[j] = FieldsTower(fld, autos, previous_fields) end @@ -474,7 +474,7 @@ function field_extensions(x::FieldsTower, bound::fmpz, IsoE1::GAP.GapObj, l::Vec @vprint :Fields 1 "Number of new fields found: $(length(final_list))\n\n" @vprint :FieldsNonFancy 1 "Number of new fields found: $(length(final_list))\n\n" return final_list - + end ############################################################################### @@ -497,20 +497,20 @@ function fields(a::Int, b::Int, list::Vector{FieldsTower}, absolute_bound::fmpz; E1 = GAP.Globals.FactorGroup(L[1], L[i+1]) H1 = GAP.Globals.FactorGroup(L[i], L[i+1]) l = GAP.gap_to_julia(Vector{Int64}, GAP.Globals.AbelianInvariants(H1)) - @vprint :Fields 1 "contructing abelian extensions with invariants $l \n" - @vprint :FieldsNonFancy 1 "contructing abelian extensions with invariants $l \n" + @vprint :Fields 1 "contructing abelian extensions with invariants $l \n" + @vprint :FieldsNonFancy 1 "contructing abelian extensions with invariants $l \n" o = divexact(GAP.Globals.Size(G), GAP.Globals.Size(E1)) bound = root(absolute_bound, o) IsoE1 = GAP.Globals.IdGroup(E1) @vprint :Fields 1 "Number of fields at the $i -th step: $(length(list)) \n" @vprint :FieldsNonFancy 1 "Number of fields at the $i -th step: $(length(list)) \n" lG = snf(abelian_group(l))[1] - invariants = map(Int, lG.snf) + invariants = map(Int, lG.snf) onlyreal = (lvl > i || only_real) #First, I search for obstruction. @vprint :Fields 1 "Computing obstructions\n" @vprint :FieldsNonFancy 1 "Computing obstructions\n" - #@vtime :Fields 1 + #@vtime :Fields 1 list = check_obstruction(list, L, i, invariants) @vprint :Fields 1 "Fields to check: $(length(list))\n\n" @vprint :FieldsNonFancy 1 "Fields to check: $(length(list))\n\n" @@ -559,8 +559,8 @@ function fields(a::Int, b::Int, absolute_bound::fmpz; using_direct_product::Bool G = GAP.Globals.SmallGroup(a, b) if using_direct_product g1, g2, red, redfirst = direct_product_decomposition(G, (a, b)) - if g2 != (1, 1) - @vprint :Fields 1 "computing extensions with Galois group ($a, $b) and bound ~10^$(clog(absolute_bound, 10))\n" + if g2 != (1, 1) + @vprint :Fields 1 "computing extensions with Galois group ($a, $b) and bound ~10^$(clog(absolute_bound, 10))\n" return fields_direct_product(g1, g2, red, redfirst, absolute_bound; only_real = only_real, unramified_outside = unramified_outside) end end @@ -590,7 +590,7 @@ function fields(a::Int, b::Int, absolute_bound::fmpz; using_direct_product::Bool #2 is not wildly ramified. Then we only have the boring bound... d = minimum(keys(factor(invariants[end]).fac)) cd = 2^((d-1)*div(pinvariants, d)) - end + end #But I want the minimum. So I have to look at the other primes.. SP = PrimesSet(3, -1) for p in SP @@ -612,7 +612,7 @@ function fields(a::Int, b::Int, absolute_bound::fmpz; using_direct_product::Bool if cd > cd1 cd = cd1 end - end + end end bound = root(div(absolute_bound, cd), prod(invariants)) else @@ -626,10 +626,10 @@ function fields(a::Int, b::Int, absolute_bound::fmpz; using_direct_product::Bool @vprint :Fields 1 "Abelian invariants of the relative extension: $(invariants)\n" @vprint :Fields 1 "Number of fields at this step: $(length(list)) \n" @vprint :FieldsNonFancy 1 "Number of fields at this step: $(length(list)) \n" - + @vprint :Fields 1 "Computing obstructions\n" @vprint :FieldsNonFancy 1 "Computing obstructions\n" - #@vtime :Fields 1 + #@vtime :Fields 1 list = check_obstruction(list, L, length(L)-1, invariants) @vprint :Fields 1 "Fields to check: $(length(list))\n\n" @vprint :FieldsNonFancy 1 "Fields to check: $(length(list))\n\n" diff --git a/src/FieldFactory/maximal_abelian_subextension.jl b/src/FieldFactory/maximal_abelian_subextension.jl index 1e0516d2a6..01f25ed45c 100644 --- a/src/FieldFactory/maximal_abelian_subextension.jl +++ b/src/FieldFactory/maximal_abelian_subextension.jl @@ -47,7 +47,7 @@ function check_abelian_extensions(class_fields::Vector{Tuple{ClassField{MapRayCl com, uncom = ppio(Int(expo), d) if com == 1 return trues(length(class_fields)) - end + end #I extract the generators that restricted to the domain of emb_sub are the identity. #Notice that I can do this only because I know the way I am constructing the generators of the group. expG_arr = Int[] @@ -73,10 +73,10 @@ function check_abelian_extensions(class_fields::Vector{Tuple{ClassField{MapRayCl expG = lcm(expG_arr) expG1 = ppio(expG, com)[1] @vprint :MaxAbExt 3 "Context for ray class groups\n" - + OK = maximal_order(K) rcg_ctx = Hecke.rayclassgrp_ctx(OK, com*expG1) - + cfields = trues(length(class_fields)) for i = 1:length(class_fields) @vprint :MaxAbExt 3 "Class Field $i\n" @@ -88,7 +88,7 @@ function check_abelian_extensions(class_fields::Vector{Tuple{ClassField{MapRayCl cfields[i] = check_abelian_extension(C, res_act_new, emb_sub, rcg_ctx, expG) end return cfields - + end @@ -107,7 +107,7 @@ function check_abelian_extension(C::Hecke.ClassField, res_act::Vector{GrpAbFinGe if !isfixed_point_free(act_sub) push!(prime_to_test, P) end - end + end if isempty(prime_to_test) return true end @@ -117,10 +117,10 @@ function check_abelian_extension(C::Hecke.ClassField, res_act::Vector{GrpAbFinGe # Now, I compute the maximal abelian subextension of the n-part of C Q, mQ = quo(G, n1, false) C1 = ray_class_field(C.rayclassgroupmap, C.quotientmap*mQ) - #@vtime :MaxAbExt 1 + #@vtime :MaxAbExt 1 fl = _maximal_abelian_subfield(C1, emb_sub, rcg_ctx, exponent_extension) else - #@vtime :MaxAbExt 1 + #@vtime :MaxAbExt 1 fl = _maximal_abelian_subfield(C, emb_sub, rcg_ctx, exponent_extension) end return fl @@ -130,7 +130,7 @@ end function _bound_exp_conductor_wild(O::NfOrd, n::Int, q::Int, bound::fmpz) d = degree(O) lp = prime_decomposition_type(O, q) - f_times_r = divexact(d, lp[1][2]) + f_times_r = divexact(d, lp[1][2]) sq = fmpz(q)^f_times_r nbound = n+n*lp[1][2]*valuation(n,q)-div(fmpz(n), q^(valuation(n,q))) obound = flog(bound, sq) @@ -182,7 +182,7 @@ function _maximal_abelian_subfield(A::Hecke.ClassField, mp::Hecke.NfToNfMor, ctx for (P, e) in mR1.fact_mod p = intersect_prime(mp, P) if !haskey(fm0, p) - if !iscoprime(minimum(P, copy = false), expo) + if !iscoprime(minimum(P, copy = false), expo) if e > 1 fm0[p] = e end @@ -272,7 +272,7 @@ function _maximal_abelian_subfield(A::Hecke.ClassField, mp::Hecke.NfToNfMor, ctx end @vtime :MaxAbExt 1 r, mr = Hecke.ray_class_groupQQ(zk, Int(wrp), rel_plc, ctx.n) end - @vtime :MaxAbExt 1 lP, gS = Hecke.find_gens(mR, coprime_to = minimum(defining_modulus(mR1)[1])) + @vtime :MaxAbExt 1 lP, gS = Hecke.find_gens(mR, coprime_to = minimum(defining_modulus(mR1)[1])) listn = NfOrdIdl[norm(mp, x) for x in lP] # Create the map between R and r by taking norms preimgs = Vector{GrpAbFinGenElem}(undef, length(listn)) diff --git a/src/FieldFactory/merge.jl b/src/FieldFactory/merge.jl index 710a03d407..c3f85fa8b1 100644 --- a/src/FieldFactory/merge.jl +++ b/src/FieldFactory/merge.jl @@ -38,22 +38,22 @@ function direct_product_decomposition(G::GAP.GapObj, ab::Tuple{Int, Int}) if isempty(decompositions) return ab, (1, 1) , 1, 1 end - + #We pass to the list with the group ID grp_id_list = Vector{Tuple{Tuple{Int, Int}, Tuple{Int, Int}}}(undef, length(decompositions)) for i = 1:length(grp_id_list) - grp_id_list[i] = (GAP.gap_to_julia(Tuple{Int, Int}, GAP.Globals.IdGroup(decompositions[i][1])), GAP.gap_to_julia(Tuple{Int, Int}, GAP.Globals.IdGroup(decompositions[i][2]))) + grp_id_list[i] = (GAP.gap_to_julia(Tuple{Int, Int}, GAP.Globals.IdGroup(decompositions[i][1])), GAP.gap_to_julia(Tuple{Int, Int}, GAP.Globals.IdGroup(decompositions[i][2]))) end - + possible_decompositions = Set(grp_id_list) #First, I want to choose which decomposition to consider. #In general, a balanced one is the best, so that pair maximising the minimum of the two orders. #However, we also want to maximise the order of the abelian factor, if it exists. res = first(possible_decompositions) has_abelian_decomposition = 0 - if GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(res[1]...)) + if GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(res[1]...)) has_abelian_decomposition = 1 - elseif GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(res[2]...)) + elseif GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(res[2]...)) has_abelian_decomposition = 2 end for x in possible_decompositions @@ -66,9 +66,9 @@ function direct_product_decomposition(G::GAP.GapObj, ab::Tuple{Int, Int}) end else has_abelian_decx = 0 - if GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(x[1]...)) + if GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(x[1]...)) has_abelian_decx = 1 - elseif GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(x[2]...)) + elseif GAP.Globals.IsAbelian(GAP.Globals.SmallGroup(x[2]...)) has_abelian_decx = 2 end if !iszero(has_abelian_decx) @@ -83,12 +83,12 @@ function direct_product_decomposition(G::GAP.GapObj, ab::Tuple{Int, Int}) res1 = res[1] res2 = res[2] #I count the redundancy, i.e. the number of possible decompositions of the same type. - red = 0 + red = 0 for i = 1:length(grp_id_list) l1 = grp_id_list[i][1] l2 = grp_id_list[i][2] if l1 == res1 && l2 == res2 - red += 1 + red += 1 end end #Finally, I count the numer of times a single subgroup appears in the lists. @@ -142,7 +142,7 @@ function _to_composite(x::FieldsTower, y::FieldsTower, abs_disc::fmpz) ima = mK\(autns(el)) autK[j+length(x.generators_of_automorphisms)] = hom(K, K, ima, check = false) end - + #Last thing: I have to add the maps of the subfields! #I want to merge the information for the last embedding. i = 1 @@ -195,11 +195,11 @@ function _easy_merge(list1, list2, absolute_bound::fmpz) @vprint :Fields 1 "$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())" end return res - + end function _disjoint_ab_subs(list1::Vector{FieldsTower}, list2::Vector{FieldsTower}) - + deg_ab_sub1 = 1 deg_ab_sub2 = 1 for i = 1:length(list1[1].subfields) @@ -211,9 +211,9 @@ function _disjoint_ab_subs(list1::Vector{FieldsTower}, list2::Vector{FieldsTower if degree(domain(list2[1].subfields[i])) == 1 deg_ab_sub2 *= degree(codomain(list2[1].subfields[i])) end - end + end return deg_ab_sub1, deg_ab_sub2, gcd(deg_ab_sub1, deg_ab_sub2) == 1 - + end function check_bound_disc(K::FieldsTower, L::FieldsTower, bound::fmpz) @@ -315,7 +315,7 @@ function new_check_disc(K::FieldsTower, L::FieldsTower, absolute_bound::fmpz) for (q, v) in lwild v1 = valuation(d1, q) v2 = valuation(d2, q) - valnum = degree(Lf)*v1 + degree(Kf)*v2 + valnum = degree(Lf)*v1 + degree(Kf)*v2 valden = valuation(g1, q) if iseven(valden) valden = divexact(valden, 2) @@ -445,7 +445,7 @@ function _first_sieve(list1::Vector{FieldsTower}, list2::Vector{FieldsTower}, ab ar[j] = (i1, v[j]) end if haskey(D, (k[1], k[2], false)) - append!(ar, D[(k[1], k[2], false)]) + append!(ar, D[(k[1], k[2], false)]) end D[(k[1], k[2], false)] = ar else @@ -460,13 +460,13 @@ function _first_sieve(list1::Vector{FieldsTower}, list2::Vector{FieldsTower}, ab end if !isempty(ar_real) if haskey(D, (k[1], k[2], true)) - append!(ar_real, D[(k[1], k[2], true)]) + append!(ar_real, D[(k[1], k[2], true)]) end D[(k[1], k[2], true)] = ar_real end if !isempty(ar_not_real) if haskey(D, (k[1], k[2], false)) - append!(ar_not_real, D[(k[1], k[2], false)]) + append!(ar_not_real, D[(k[1], k[2], false)]) end D[(k[1], k[2], false)] = ar_not_real end @@ -520,7 +520,7 @@ function sieve_by_discriminant(list1, list2, v) d1 = degree(list1[1].field) d2 = degree(list2[1].field) D = Dict{fmpz, Vector{Int}}() - + for i = 1:length(v) candidate = abs(discriminant(maximal_order(list1[v[i][1]].field))^d2)*abs(discriminant(maximal_order(list2[v[i][2]].field))^d1) found = false @@ -530,7 +530,7 @@ function sieve_by_discriminant(list1, list2, v) found = true break end - end + end if !found D[candidate] = Int[i] end @@ -656,7 +656,7 @@ function _merge(list1::Vector{FieldsTower}, list2::Vector{FieldsTower}, absolute end clusters = Vector{Tuple{Int, Int}}[x for x in values(D1)] @vprint :Fields 1 "$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())Candidates after first sieve: $(sum(length(x) for x in clusters))\n" - + @vprint :Fields 1 "Sieving by discriminant\n" #Now, I sieve by discriminant clusters1 = Vector{Vector{Tuple{Int, Int}}}() @@ -671,7 +671,7 @@ function _merge(list1::Vector{FieldsTower}, list2::Vector{FieldsTower}, absolute @vprint :Fields 1 "Candidates: $(sum(length(x) for x in clusters1))\n" @vprint :Fields 1 "Sieving by prime_splitting\n" fields_to_be_computed = _sieve_by_prime_splitting(list1, list2, clusters1, red, redfirst, redsecond) - + @vprint :Fields 1 "Computing maximal order of $(length(fields_to_be_computed)) fields\n" for i = 1:length(fields_to_be_computed) @vprint :Fields 1 "Doing $(i) / $(length(fields_to_be_computed))" @@ -760,7 +760,7 @@ function _sieve_by_prime_splitting(list1, list2, clusters, red, redfirst, redsec p = next_prime(p) end end - end + end end @vprint :Fields 1 "$(Hecke.set_cursor_col())$(Hecke.clear_to_eol())" return fields_to_be_computed diff --git a/src/FieldFactory/non_normal.jl b/src/FieldFactory/non_normal.jl index 5467502c71..79f271864c 100644 --- a/src/FieldFactory/non_normal.jl +++ b/src/FieldFactory/non_normal.jl @@ -27,7 +27,7 @@ function fixed_field(x::FieldsTower, H::GAP.GapObj) gH = GAP.Globals.SmallGeneratingSet(H) auts = NfToNfMor[] - found = 0 + found = 0 D = x.isomorphism autsx = automorphisms(number_field(x)) i = 0 @@ -68,7 +68,7 @@ function _find_discriminant_bound(n, i, disc) H = GAP.Globals.Representative(cg) conjs = GAP.Globals.Elements(cg) #I check if it is a Frobenius group! - isfrobenius = true + isfrobenius = true for i = 1:length(conjs) for j = i+1:length(conjs) if GAP.Globals.Size(GAP.Globals.Intersection(conjs[i], conjs[j])) != 1 diff --git a/src/FieldFactory/rayclassgrp.jl b/src/FieldFactory/rayclassgrp.jl index da9ee02a1f..02d2dbba51 100644 --- a/src/FieldFactory/rayclassgrp.jl +++ b/src/FieldFactory/rayclassgrp.jl @@ -6,15 +6,15 @@ mutable struct ctx_rayclassgrp order::NfOrd - class_group_map::MapClassGrp #The class group mod n map + class_group_map::MapClassGrp #The class group mod n map n::Int #the n for n_quo diffC::fmpz #exponent of the full class group, divided by n units::Vector{FacElem{nf_elem, AnticNumberField}} princ_gens::Vector{FacElem{nf_elem, AnticNumberField}} - + computed::Vector{Tuple{Dict{NfOrdIdl, Int}, Bool, MapRayClassGrp}} multiplicative_groups::Dict{NfOrdIdl, GrpAbFinGenToAbsOrdQuoRingMultMap} - + function ctx_rayclassgrp() z = new() return z @@ -73,13 +73,13 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd end return class_as_ray_class(C, mC, exp_c, m, ctx.n) end - + O = ctx.order K = nf(O) n_quo = ctx.n lp = merge(max, y1, y2) - + powers = Vector{Tuple{NfOrdIdl, NfOrdIdl}}() quo_rings = Tuple{NfOrdQuoRing, Hecke.AbsOrdQuoMap{NfAbsOrd{AnticNumberField,nf_elem},NfAbsOrdIdl{AnticNumberField,nf_elem},NfAbsOrdElem{AnticNumberField,nf_elem}}}[] groups_and_maps = Tuple{GrpAbFinGen, Hecke.GrpAbFinGenToAbsOrdQuoRingMultMap{NfAbsOrd{AnticNumberField,nf_elem},NfAbsOrdIdl{AnticNumberField,nf_elem},NfAbsOrdElem{AnticNumberField,nf_elem}}}[] @@ -96,7 +96,7 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd end end QQ = PP^ee - + push!(powers, (PP, QQ)) if haskey(ctx.multiplicative_groups, QQ) cached_map = ctx.multiplicative_groups[QQ] @@ -123,16 +123,16 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd push!(groups_and_maps, gandm) end end - + if isempty(groups_and_maps) nG = 0 expon = fmpz(1) - else + else nG = sum(ngens(x[1]) for x in groups_and_maps) expon = lcm([exponent(x[1]) for x in groups_and_maps]) end - - + + if iseven(n_quo) p = InfPlc[ x for x in inf_plc if isreal(x) ] else @@ -140,19 +140,19 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd end H, lH = log_infinite_primes(O, p) expon = lcm(expon, exponent(H)) - + if exponent(C)*expon < n_quo && check return empty_ray_class(m) end - + assure_elements_to_be_eval(ctx) exp_class, Kel = find_coprime_representatives(mC, m, lp) - - - nU = length(ctx.units) + + + nU = length(ctx.units) # We construct the relation matrix and evaluate units and relations with the class group in the quotient by m - # Then we compute the discrete logarithms - + # Then we compute the discrete logarithms + R = zero_matrix(FlintZZ, 2*(ngens(C)+nG+ngens(H))+nU, ngens(C)+ngens(H)+nG) for i = 1:ncols(R) R[i+ngens(C)+nG+ngens(H)+nU, i] = n_quo @@ -161,7 +161,7 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd R[i, i] = C.snf[i] end ind = 1 - for s = 1:length(quo_rings) + for s = 1:length(quo_rings) G = groups_and_maps[s][1] @assert issnf(G) for i = 1:ngens(G) @@ -195,7 +195,7 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd R[j+nG+ngens(H)+ngens(C), ngens(C)+s+ind-1] = a[1, s] end end - + for j = 1:ngens(C) a = (mG\Qr(evals[j+nU])).coeff for s = 1:ncols(a) @@ -203,23 +203,23 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd end end ind += ngens(groups_and_maps[i][1]) - end - + end + if !isempty(p) for j = 1:nU aa = lH(tobeeval[j])::GrpAbFinGenElem for s = 1:ngens(H) - R[j+nG+ngens(C)+ngens(H), ngens(C)+ind-1+s] = aa[s] + R[j+nG+ngens(C)+ngens(H), ngens(C)+ind-1+s] = aa[s] end end for j = 1:ngens(C) aa = lH(tobeeval[j+nU])::GrpAbFinGenElem for s = 1:ngens(H) - R[j, ngens(C)+ind-1+s] = -aa[s] + R[j, ngens(C)+ind-1+s] = -aa[s] end end - end - + end + X = abelian_group(R) X.exponent = n_quo if isone(order(X)) @@ -227,11 +227,11 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd mp.header = MapHeader(X, FacElemMon(parent(m))) return X, mp end - + invd = invmod(fmpz(diffC), expon) local disclog let X = X, mC = mC, invd = invd, C = C, exp_class = exp_class, powers = powers, groups_and_maps = groups_and_maps, quo_rings = quo_rings, lH = lH, diffC = diffC, n_quo = n_quo, m = m, p = p, expon = expon - + # Discrete logarithm function disclog(J::FacElem{NfOrdIdl, NfOrdIdlSet}) @vprint :RayFacElem 1 "Disc log of element $J \n" @@ -241,7 +241,7 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd end return a1 end - + function disclog(J::NfOrdIdl) @hassert :RayFacElem 1 iscoprime(J, m) if isone(J) @@ -259,7 +259,7 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd @vprint :RayFacElem 1 "Disc log of element J in the Class Group: $(L.coeff) \n" eL = exp_class(L) inv!(eL) - add_to_key!(eL.fac, J, 1) + add_to_key!(eL.fac, J, 1) pow!(eL, diffC) @vprint :RayFacElem 1 "This ideal is principal: $eL \n" z = principal_generator_fac_elem(eL) @@ -281,11 +281,11 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd for s = 1:ncols(b) coeffs[1, ii-1+s+ngens(C)] = b[1, s] end - end + end return GrpAbFinGenElem(X, coeffs) - end + end end - + Dgens = Tuple{NfOrdElem, GrpAbFinGenElem}[] ind = 1 #We need generators of the full multiplicative group @@ -313,7 +313,7 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd d, u1, v1 = gcdx(minimum(QQ, copy = false), mins) i1 = i1*(u1*minimum(QQ, copy = false) + v1*mins) + u1*minimum(QQ, copy = false) *i2 i2 = v1*mins*i2 - end + end @hassert :RayFacElem 1 isone(i1+i2) @hassert :RayFacElem 1 i1 in QQ @hassert :RayFacElem 1 i2 in J @@ -378,7 +378,7 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd end end end - + ind = 1 for i = 1:length(powers) mG = groups_and_maps[i][2] @@ -394,14 +394,14 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd end ind += ngens(domain(mG)) end - + disc_log_inf = Dict{InfPlc, GrpAbFinGenElem}() for i = 1:length(p) eldi = zero_matrix(FlintZZ, 1, ngens(X)) eldi[1, ngens(X) - length(inf_plc) + i] = 1 disc_log_inf[p[i]] = GrpAbFinGenElem(X, eldi) end - + mp = MapRayClassGrp() mp.header = MapHeader(X, FacElemMon(parent(m))) mp.header.preimage = disclog @@ -414,23 +414,23 @@ function ray_class_group_quo(m::NfOrdIdl, y1::Dict{NfOrdIdl,Int}, y2::Dict{NfOrd mp.clgrpmap = mC X.exponent = fmpz(n_quo) return X, mp - + end function log_infinite_primes(O::NfOrd, p::Vector{InfPlc}) if isempty(p) S = abelian_group(Int[]) - + local log1 let S = S function log1(B::T) where T <: Union{nf_elem ,FacElem{nf_elem, AnticNumberField}} return id(S) end - end + end return S, log1 end - + S = abelian_group(Int[2 for i=1:length(p)]) local log let S = S, p = p @@ -444,19 +444,19 @@ function log_infinite_primes(O::NfOrd, p::Vector{InfPlc}) end return GrpAbFinGenElem(S, ar) end - end + end return S, log end function ray_class_group_quo(O::NfOrd, m::Int, wprimes::Dict{NfOrdIdl,Int}, inf_plc::Vector{InfPlc}, ctx::ctx_rayclassgrp; GRH::Bool = true) - + d1 = Dict{NfOrdIdl, Int}() lp = factor(m) I = ideal(O, 1) minI = fmpz(1) for q in keys(lp.fac) - lq = prime_decomposition(O, q) + lq = prime_decomposition(O, q) for (P, e) in lq if !haskey(wprimes, P) I *= P @@ -464,7 +464,7 @@ function ray_class_group_quo(O::NfOrd, m::Int, wprimes::Dict{NfOrdIdl,Int}, inf_ else d1[P] = 1 end - end + end minI = q*minI end if !isempty(wprimes) @@ -476,13 +476,13 @@ function ray_class_group_quo(O::NfOrd, m::Int, wprimes::Dict{NfOrdIdl,Int}, inf_ end I.minimum = minI return ray_class_group_quo(I, d1, wprimes, inf_plc, ctx, GRH = GRH) - + end function ray_class_group_quo(O::NfOrd, y::Dict{NfOrdIdl, Int}, inf_plc::Vector{InfPlc}, ctx::ctx_rayclassgrp; GRH::Bool = true, check::Bool = true) - + y1=Dict{NfOrdIdl,Int}() y2=Dict{NfOrdIdl,Int}() n = ctx.n diff --git a/src/FieldFactory/read_write.jl b/src/FieldFactory/read_write.jl index 12a94eb029..09d49b5bd7 100644 --- a/src/FieldFactory/read_write.jl +++ b/src/FieldFactory/read_write.jl @@ -163,7 +163,7 @@ function _parse_array_of_tuples_of_arrays(s) i += 1 k = _find_closing_sbraket(s, i) vec1 = _parse_as_fmpq_vector(s[i-1:k-1]) - i = k + i = k while s[i] != ',' i += 1 end diff --git a/src/FunField/DegreeLocalization.jl b/src/FunField/DegreeLocalization.jl index a5ae8dc48b..b4b404d084 100644 --- a/src/FunField/DegreeLocalization.jl +++ b/src/FunField/DegreeLocalization.jl @@ -12,7 +12,7 @@ export KInftyRing, KInftyElem, function_field ############################################################################### # # Declaration types -# KInftyRing / KInftyElem +# KInftyRing / KInftyElem # ############################################################################### @@ -265,7 +265,7 @@ end - = <1/t^n>, the canonical rep - translate via t-> 1/t into the "normal" world - a rep of a/b mod t^n is ((a % t^n)*invmod(b, t^n) % t^n) - - translate back + - translate back The "canonical" rep should be r/t^l for deg(r) < n and l = deg(r) In particular, for n=1, this is a scalar. @@ -274,7 +274,7 @@ end so a/b -> a(1/t)/b(1/t) and this needs to be expanded by t^max/t^max to make both num and den polynomials a/b -> reverse(a, max)//reverse(b, max) -=# +=# function mod(a::KInftyElem{T}, b::KInftyElem{T}, checked::Bool=true) where T <: FieldElement check_parent(a, b) @@ -292,7 +292,7 @@ function mod(a::KInftyElem{T}, b::KInftyElem{T}, checked::Bool=true) where T <: end t = gen(parent(na)) tn = t^n - r = mod(mod(na, tn) * invmod(da, tn), tn) + r = mod(mod(na, tn) * invmod(da, tn), tn) Qt = parent(a.d) return parent(a)(Qt(reverse(r))//Qt(t)^degree(r)) else @@ -359,7 +359,7 @@ function gcdx(a::KInftyElem{T}, b::KInftyElem{T}, checked::Bool=true) where T <: K = parent(a) t = gen(K) - if iszero(a) + if iszero(a) iszero(b) && a, a, one(K) g = t^-degree(b) return g, zero(K), inv(canonical_unit(b)) @@ -499,7 +499,7 @@ function ResidueField(K::KInftyRing{T}, a::KInftyElem{T}) where {T <: FieldEleme F = base_ring(K.K) @assert degree(a) == -1 #TODO: can be optimized, see blurb of euc. div. above - return F, MapFromFunc(x -> leading_coefficient(numerator(mod(x, a))), y-> K(y), K, F) + return F, MapFromFunc(x -> leading_coefficient(numerator(mod(x, a))), y-> K(y), K, F) end #TODO: ResidueRing is probably "just" poly of deg < n, think about it diff --git a/src/Grp/8T.jl b/src/Grp/8T.jl index bdb0e2bd57..e81c223d50 100644 --- a/src/Grp/8T.jl +++ b/src/Grp/8T.jl @@ -21,7 +21,7 @@ x^8 - 2*x^7 + 2*x^6 - 6*x^5 + 14*x^4 - 30*x^3 + 50*x^2 - 50*x + 25] q8fields = [ x^8 + 12*x^6 + 36*x^4 + 36*x^2 + 9, x^8 - 12*x^6 + 36*x^4 - 36*x^2 + 9, - x^8 - x^7 - 34*x^6 + 29*x^5 + 361*x^4 - 305*x^3 - 1090*x^2 + 1345*x - 395, + x^8 - x^7 - 34*x^6 + 29*x^5 + 361*x^4 - 305*x^3 - 1090*x^2 + 1345*x - 395, x^8 - 3*x^7 + 22*x^6 - 60*x^5 + 201*x^4 - 450*x^3 + 1528*x^2 - 3069*x + 4561, x^8 + 60*x^6 + 900*x^4 + 4500*x^2 + 5625, x^8 - 60*x^6 + 900*x^4 - 4500*x^2 + 5625, diff --git a/src/Grp/SmallGroups.jl b/src/Grp/SmallGroups.jl index 4f07d78760..d0435ca927 100644 --- a/src/Grp/SmallGroups.jl +++ b/src/Grp/SmallGroups.jl @@ -104,7 +104,7 @@ function SmallGroupDBLegacy(path::String) db = Hecke.eval(Meta.parse(Base.read(path, String))) for i in 1:length(db) - push!(dbnew, eltype(dbnew)(undef, length(db[i]))) + push!(dbnew, eltype(dbnew)(undef, length(db[i]))) for j in 1:length(db[i]) v = db[i][j] vv = map(f, v) diff --git a/src/Grp/small_groups_1_63 b/src/Grp/small_groups_1_63 index 25e602fdfe..65fecc8c67 100644 --- a/src/Grp/small_groups_1_63 +++ b/src/Grp/small_groups_1_63 @@ -112,7 +112,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, ], [ [ -1, -1, 2 ], [ -1, -3, 1, -3 ] -], [ (1, 1), (2, 1), (3, 2), (4, 6), (6, 2) ], [ (1, 1), (2, 1), (3, 1), (4, 3), (6, 1), (12, 1) ], false, false, true, false, 12), ([ perm"(1, 8, 2, 7)(3, 10, 4, 9)(5, 12, 6, 11)", perm"(1, 5, 3)(2, +], [ (1, 1), (2, 1), (3, 2), (4, 6), (6, 2) ], [ (1, 1), (2, 1), (3, 1), (4, 3), (6, 1), (12, 1) ], false, false, true, false, 12), ([ perm"(1, 8, 2, 7)(3, 10, 4, 9)(5, 12, 6, 11)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, 10)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)" ], [ [ 2, 2, 2 ], [ 3, 3 ], @@ -121,7 +121,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, ], [ [ -1, -1, 3 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (12, 4) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (12, 1) ], true, true, true, true, 4), ([ perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)", perm"(1, +], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (12, 4) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (12, 1) ], true, true, true, true, 4), ([ perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, 11)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)" ], [ [ 1, 1, 1 ], [ 2, 2 ], @@ -133,7 +133,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ -1, 2, 1, 3 ], [ 2, 3, 2, 3 ], [ 1, 2, -1, 2, 3 ] -], [ (1, 1), (2, 3), (3, 8) ], [ (1, 1), (2, 3), (3, 4), (4, 1), (12, 1) ], false, false, true, false, 24), ([ perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, +], [ (1, 1), (2, 3), (3, 8) ], [ (1, 1), (2, 3), (3, 4), (4, 1), (12, 1) ], false, false, true, false, 24), ([ perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)", perm"(1, 3, 2)(4, 6, 5)(7, 8, 9)(10, 11, 12)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -165,21 +165,21 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 7), (7, 6) ], [ (1, 1), (2, 7), (7, 1), (14, 1) ], false, false, true, false, 42), ([ perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, +], [ (1, 1), (2, 7), (7, 6) ], [ (1, 1), (2, 7), (7, 1), (14, 1) ], false, false, true, false, 42), ([ perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (7, 6), (14, 6) ], [ (1, 1), (2, 1), (7, 1), (14, 1) ], true, true, true, true, 6) ], [ ([ perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)", perm"(1, 5, 4, 3, 2)(6, 10, +], [ (1, 1), (2, 1), (7, 6), (14, 6) ], [ (1, 1), (2, 1), (7, 1), (14, 1) ], true, true, true, true, 6) ], [ ([ perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)" ], [ [ 1, 1, 1 ], [ -1, -2, 1, 2 ], [ -2, -2, -2, -2, -2 ] ], [ [ -1, -2, 1, 2 ] -], [ (1, 1), (3, 2), (5, 4), (15, 8) ], [ (1, 1), (3, 1), (5, 1), (15, 1) ], true, true, true, true, 8) ], [ ([ perm"(1, 16, 8, 12, 4, 14, 6, 10, 2, 15, 7, 11, 3, 13, 5, 9)", perm"(1, 8, 4, 6, 2, 7, +], [ (1, 1), (3, 2), (5, 4), (15, 8) ], [ (1, 1), (3, 1), (5, 1), (15, 1) ], true, true, true, true, 8) ], [ ([ perm"(1, 16, 8, 12, 4, 14, 6, 10, 2, 15, 7, 11, 3, 13, 5, 9)", perm"(1, 8, 4, 6, 2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, 13)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 3, 3, 3, 3 ], [ 4, 4 ], @@ -190,7 +190,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ -1, -1, 2 ], [ 2, 1, 1, -3 ], [ 3, 2, 2, 4 ] -], [ (1, 1), (2, 1), (4, 2), (8, 4), (16, 8) ], [ (1, 1), (2, 1), (4, 1), (8, 1), (16, 1) ], true, true, true, true, 8), ([ perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)", perm"(1, 6, +], [ (1, 1), (2, 1), (4, 2), (8, 4), (16, 8) ], [ (1, 1), (2, 1), (4, 1), (8, 1), (16, 1) ], true, true, true, true, 8), ([ perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -203,7 +203,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ -1, -1, 3 ], [ -1, -2, 1, 2 ], [ -2, -2, 4 ] -], [ (1, 1), (2, 3), (4, 12) ], [ (1, 1), (2, 3), (4, 7), (8, 3), (16, 1) ], true, false, true, true, 96), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 5)(2, 6)(3, 7)(4, +], [ (1, 1), (2, 3), (4, 12) ], [ (1, 1), (2, 3), (4, 7), (8, 3), (16, 1) ], true, false, true, true, 96), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 15)(10, 16)(11, 13)(12, 14)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -259,7 +259,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ 3, 1, 1, 4 ], [ 2, -3, 2, 3 ], [ -1, 2, -1, 2, -3 ] -], [ (1, 1), (2, 3), (4, 4), (8, 8) ], [ (1, 1), (2, 3), (4, 3), (8, 3), (16, 1) ], false, false, true, true, 16), ([ perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)", perm"(1, 5)(2, +], [ (1, 1), (2, 3), (4, 4), (8, 8) ], [ (1, 1), (2, 3), (4, 3), (8, 3), (16, 1) ], false, false, true, true, 16), ([ perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 15)(10, 16)(11, 14)(12, 13)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 11, 10, 12)(13, 16, 14, 15)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -274,7 +274,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ 2, -3, 2, -3 ], [ -3, -3, 4 ], [ 1, 2, 1, 2, 3 ] -], [ (1, 1), (2, 9), (4, 2), (8, 4) ], [ (1, 1), (2, 9), (4, 5), (8, 3), (16, 1) ], false, false, true, true, 32), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 5)(2, +], [ (1, 1), (2, 9), (4, 2), (8, 4) ], [ (1, 1), (2, 9), (4, 5), (8, 3), (16, 1) ], false, false, true, true, 32), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 15)(10, 16)(11, 14)(12, 13)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 11, 10, 12)(13, 16, 14, 15)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -291,7 +291,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ -1, -3, 1, -3 ], [ 2, -3, 2, -3 ], [ -1, 2, -1, 2, -3 ] -], [ (1, 1), (2, 5), (4, 6), (8, 4) ], [ (1, 1), (2, 5), (4, 5), (8, 3), (16, 1) ], false, false, true, true, 16), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 6, 2, +], [ (1, 1), (2, 5), (4, 6), (8, 4) ], [ (1, 1), (2, 5), (4, 5), (8, 3), (16, 1) ], false, false, true, true, 16), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 16, 10, 15)(11, 13, 12, 14)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 11, 10, 12)(13, 16, 14, 15)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -310,7 +310,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ -1, -3, 1, -3 ], [ -2, -3, 2, -3 ], [ -1, -2, -1, 2, -3 ] -], [ (1, 1), (2, 1), (4, 10), (8, 4) ], [ (1, 1), (2, 1), (4, 5), (8, 3), (16, 1) ], false, false, true, true, 32), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 5)(2, +], [ (1, 1), (2, 1), (4, 10), (8, 4) ], [ (1, 1), (2, 1), (4, 5), (8, 3), (16, 1) ], false, false, true, true, 32), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -344,7 +344,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ 2, 4, 2, 4 ], [ 3, 4, 3, 4 ], [ 1, 2, 1, 2, 4 ] -], [ (1, 1), (2, 11), (4, 4) ], [ (1, 1), (2, 11), (4, 15), (8, 7), (16, 1) ], false, false, true, true, 64), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 6, 2, 5)(3, 8, +], [ (1, 1), (2, 11), (4, 4) ], [ (1, 1), (2, 11), (4, 15), (8, 7), (16, 1) ], false, false, true, true, 64), ([ perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 13, 10, 14)(11, 15, 12, 16)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -361,7 +361,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ -1, -2, 1, -2 ], [ -1, 3, 1, 3 ], [ -2, 3, 2, 3 ] -], [ (1, 1), (2, 3), (4, 12) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 1) ], false, false, true, true, 192), ([ perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)", perm"(1, 5)(2, 6)(3, +], [ (1, 1), (2, 3), (4, 12) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 1) ], false, false, true, true, 192), ([ perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 14)(10, 13)(11, 16)(12, 15)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -376,7 +376,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ 2, -3, 2, 3 ], [ -3, -3, 4 ], [ 1, 2, 1, 2, 4 ] -], [ (1, 1), (2, 7), (4, 8) ], [ (1, 1), (2, 7), (4, 7), (8, 7), (16, 1) ], false, false, true, true, 48), ([ perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)", perm"(1, 5)(2, 6)(3, 7)(4, +], [ (1, 1), (2, 7), (4, 8) ], [ (1, 1), (2, 7), (4, 7), (8, 7), (16, 1) ], false, false, true, true, 48), ([ perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -397,7 +397,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, [ 3, 4, 3, 4 ] ], [ (1, 1), (2, 15) ], [ (1, 1), (2, 15), (4, 35), (8, 15), (16, 1) ], true, false, true, true, 20160) ], [ ([ perm"(1, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (17, 16) ], [ (1, 1), (17, 1) ], true, true, true, true, 16) ], [ ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 13, +], [], [ (1, 1), (17, 16) ], [ (1, 1), (17, 1) ], true, true, true, true, 16) ], [ ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 13, 16, 11, 14, 17, 12, 15, 18)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -406,7 +406,7 @@ const small_groups_1_63 = Vector{Tuple{Vector{Perm{Int64}}, Vector{Vector{Int}}, ], [ [ 2, 2, 2, -3 ], [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 9), (3, 2), (9, 6) ], [ (1, 1), (2, 9), (3, 1), (6, 3), (9, 1), (18, 1) ], false, false, true, false, 54), ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)", +], [ (1, 1), (2, 9), (3, 2), (9, 6) ], [ (1, 1), (2, 9), (3, 1), (6, 3), (9, 1), (18, 1) ], false, false, true, false, 54), ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -415,7 +415,7 @@ perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)", perm"(1, ], [ [ 2, 2, 2, -3 ], [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (3, 2), (6, 2), (9, 6), (18, 6) ], [ (1, 1), (2, 1), (3, 1), (6, 1), (9, 1), (18, 1) ], true, true, true, true, 6), ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, +], [ (1, 1), (2, 1), (3, 2), (6, 2), (9, 6), (18, 6) ], [ (1, 1), (2, 1), (3, 1), (6, 1), (9, 1), (18, 1) ], true, true, true, true, 6), ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -427,7 +427,7 @@ perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)", perm"(1, [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] -], [ (1, 1), (2, 3), (3, 8), (6, 6) ], [ (1, 1), (2, 3), (3, 4), (6, 4), (9, 1), (18, 1) ], false, false, true, false, 12), ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)", +], [ (1, 1), (2, 3), (3, 8), (6, 6) ], [ (1, 1), (2, 3), (3, 4), (6, 4), (9, 1), (18, 1) ], false, false, true, false, 12), ([ perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -451,10 +451,10 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)", perm"(1, [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, 3 ] -], [ (1, 1), (2, 1), (3, 8), (6, 8) ], [ (1, 1), (2, 1), (3, 4), (6, 4), (9, 1), (18, 1) ], true, false, true, true, 48) ], [ ([ perm"(1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, +], [ (1, 1), (2, 1), (3, 8), (6, 8) ], [ (1, 1), (2, 1), (3, 4), (6, 4), (9, 1), (18, 1) ], true, false, true, true, 48) ], [ ([ perm"(1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (19, 18) ], [ (1, 1), (19, 1) ], true, true, true, true, 18) ], [ ([ perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, 10, 15)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, +], [], [ (1, 1), (19, 18) ], [ (1, 1), (19, 1) ], true, true, true, true, 18) ], [ ([ perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, 10, 15)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 12, 13, 14, 15)(16, 17, 18, 19, 20)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -464,7 +464,7 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)", perm"(1, ], [ [ -1, -1, 2 ], [ -1, -3, 1, -3 ] -], [ (1, 1), (2, 1), (4, 10), (5, 4), (10, 4) ], [ (1, 1), (2, 1), (4, 5), (5, 1), (10, 1), (20, 1) ], false, false, true, false, 40), ([ perm"(1, 12, 2, 11)(3, 14, 4, 13)(5, 16, 6, 15)(7, 18, 8, +], [ (1, 1), (2, 1), (4, 10), (5, 4), (10, 4) ], [ (1, 1), (2, 1), (4, 5), (5, 1), (10, 1), (20, 1) ], false, false, true, false, 40), ([ perm"(1, 12, 2, 11)(3, 14, 4, 13)(5, 16, 6, 15)(7, 18, 8, 17)(9, 20, 10, 19)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)" ], [ [ 1, 1, 1, 1 ], [ 3, 3 ], @@ -474,7 +474,7 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)", perm"(1, ], [ [ -1, -1, 3 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (4, 2), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 1), (4, 1), (5, 1), (10, 1), (20, 1) ], true, true, true, true, 8), ([ perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, +], [ (1, 1), (2, 1), (4, 2), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 1), (4, 1), (5, 1), (10, 1), (20, 1) ], true, true, true, true, 8), ([ perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, 10, 15)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)", perm"(1, 5, 4, 3, 2)(6, 7, 8, 9, 10)(11, 14, 12, 15, 13)(16, 18, 20, 17, 19)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -485,7 +485,7 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)", perm"(1, [ -1, -1, 2 ], [ 2, -3, 2, -3 ], [ 1, -3, -1, -3, -3 ] -], [ (1, 1), (2, 5), (4, 10), (5, 4) ], [ (1, 1), (2, 5), (4, 5), (5, 1), (10, 1), (20, 1) ], false, false, true, false, 20), ([ perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, +], [ (1, 1), (2, 5), (4, 10), (5, 4) ], [ (1, 1), (2, 5), (4, 5), (5, 1), (10, 1), (20, 1) ], false, false, true, false, 20), ([ perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, 20)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 12, 13, 14, 15)(16, 17, 18, 19, 20)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -497,7 +497,7 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)", perm"(1, [ 1, 2, 1, 2 ], [ 1, -3, 1, -3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 11), (5, 4), (10, 4) ], [ (1, 1), (2, 11), (4, 5), (5, 1), (10, 3), (20, 1) ], false, false, true, false, 40), ([ perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, +], [ (1, 1), (2, 11), (5, 4), (10, 4) ], [ (1, 1), (2, 11), (4, 5), (5, 1), (10, 3), (20, 1) ], false, false, true, false, 40), ([ perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, 20)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -509,13 +509,13 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)", perm"(1, [ 1, 2, 1, 2 ], [ 1, -3, 1, 3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (5, 4), (10, 12) ], [ (1, 1), (2, 3), (4, 1), (5, 1), (10, 3), (20, 1) ], true, false, true, true, 24) ], [ ([ perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, +], [ (1, 1), (2, 3), (5, 4), (10, 12) ], [ (1, 1), (2, 3), (4, 1), (5, 1), (10, 3), (20, 1) ], true, false, true, true, 24) ], [ ([ perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 13, 11, 9, 14, 12, 10)(15, 18, 21, 17, 20, 16, 19)" ], [ [ 1, 1, 1 ], [ -2, -2, -1, 2, 1 ] ], [ [ -2, -2, -1, 2, 1 ] -], [ (1, 1), (3, 14), (7, 6) ], [ (1, 1), (3, 7), (7, 1), (21, 1) ], false, false, true, false, 42), ([ perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)", perm"(1, 7, +], [ (1, 1), (3, 14), (7, 6) ], [ (1, 1), (3, 7), (7, 1), (21, 1) ], false, false, true, false, 42), ([ perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)" ], [ [ 1, 1, 1 ], [ -1, -2, 1, 2 ], @@ -529,17 +529,17 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 11), (11, 10) ], [ (1, 1), (2, 11), (11, 1), (22, 1) ], false, false, true, false, 110), ([ perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, 21)(11, 22)", +], [ (1, 1), (2, 11), (11, 10) ], [ (1, 1), (2, 11), (11, 1), (22, 1) ], false, false, true, false, 110), ([ perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, 21)(11, 22)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (11, 10), (22, 10) ], [ (1, 1), (2, 1), (11, 1), (22, 1) ], true, true, true, true, 10) ], [ ([ perm"(1, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, +], [ (1, 1), (2, 1), (11, 10), (22, 10) ], [ (1, 1), (2, 1), (11, 1), (22, 1) ], true, true, true, true, 10) ], [ ([ perm"(1, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (23, 22) ], [ (1, 1), (23, 1) ], true, true, true, true, 22) ], [ ([ perm"(1, 22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)", perm"(1, 10, 4, +], [], [ (1, 1), (23, 22) ], [ (1, 1), (23, 1) ], true, true, true, true, 22) ], [ ([ perm"(1, 22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 14, 15)(16, 17, 18)(19, 20, 21)(22, 23, 24)" ], [ [ 2, 2, 2, 2 ], @@ -552,7 +552,7 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -1, -1, 2 ], [ 2, 1, 1, 3 ], [ -1, -4, 1, -4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 12), (12, 4) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 3), (12, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 16, 4, 14, 2, 15, 3, +], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 12), (12, 4) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 3), (12, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 16, 4, 14, 2, 15, 3, 13)(5, 20, 8, 18, 6, 19, 7, 17)(9, 24, 12, 22, 10, 23, 11, 21)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)" ], [ [ 2, 2, 2 ], @@ -565,8 +565,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -1, -1, 3 ], [ 3, 1, 1, 4 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 1), (12, 1), (24, 1) ], true, true, true, true, 8), ([ perm"(1, 17, 9)(2, 18, -10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 24, 18, 23)(19, 21, 20, 22)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, +], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 1), (12, 1), (24, 1) ], true, true, true, true, 8), ([ perm"(1, 17, 9)(2, 18, +10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 24, 18, 23)(19, 21, 20, 22)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 16, 10, 15)(11, 13, 12, 14)(17, 22, 18, 21)(19, 24, 20, 23)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)" ], [ [ 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -583,8 +583,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -3, 2, 2, -3 ], [ -2, -3, 2, -3 ], [ 1, -2, -1, 2, 3 ] -], [ (1, 1), (2, 1), (3, 8), (4, 6), (6, 8) ], [ (1, 1), (2, 1), (3, 4), (4, 3), (6, 4), (8, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 16, 4, 13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, -10, 19)(8, 23, 11, 20)(9, 24, 12, 21)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, +], [ (1, 1), (2, 1), (3, 8), (4, 6), (6, 8) ], [ (1, 1), (2, 1), (3, 4), (4, 3), (6, 4), (8, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 16, 4, 13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, +10, 19)(8, 23, 11, 20)(9, 24, 12, 21)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 14, 15)(16, 17, 18)(19, 20, 21)(22, 23, 24)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -601,8 +601,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -1, -2, 1, -2 ], [ -1, -4, 1, -4 ], [ -2, -4, 2, 4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 14), (6, 2), (12, 4) ], [ (1, 1), (2, 1), (3, 1), (4, 7), (6, 1), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 48), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, -17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, +], [ (1, 1), (2, 1), (3, 2), (4, 14), (6, 2), (12, 4) ], [ (1, 1), (2, 1), (3, 1), (4, 7), (6, 1), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 48), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, +17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 14, 15)(16, 17, 18)(19, 20, 21)(22, 23, 24)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -617,8 +617,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -2, 1, 2, 1 ], [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ] -], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 2), (12, 4) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 3), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, -17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, +], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 2), (12, 4) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 3), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, +17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 14, 15)(16, 17, 18)(19, 20, 21)(22, 23, 24)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -633,8 +633,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -2, 1, -2, 1 ], [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ] -], [ (1, 1), (2, 13), (3, 2), (4, 2), (6, 2), (12, 4) ], [ (1, 1), (2, 13), (3, 1), (4, 7), (6, 5), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 48), ([ perm"(1, 16, 4, 13)(2, 17, 5, 14)(3, -18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, +], [ (1, 1), (2, 13), (3, 2), (4, 2), (6, 2), (12, 4) ], [ (1, 1), (2, 13), (3, 1), (4, 7), (6, 5), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 48), ([ perm"(1, 16, 4, 13)(2, 17, 5, 14)(3, +18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 14, 15)(16, 17, 18)(19, 20, 21)(22, 23, 24)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -649,8 +649,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -1, 2, 1, 2 ], [ -1, -4, 1, -4 ], [ 2, -4, 2, 4 ] -], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 48), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, -18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 22)(14, 23)(15, 24)(16, 19)(17, 20)(18, 21)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, +], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 48), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, +18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 22)(14, 23)(15, 24)(16, 19)(17, 20)(18, 21)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 14, 15)(16, 17, 18)(19, 20, 21)(22, 23, 24)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -669,8 +669,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ], [ 1, 2, 1, 2, 3 ] -], [ (1, 1), (2, 9), (3, 2), (4, 6), (6, 6) ], [ (1, 1), (2, 9), (3, 1), (4, 7), (6, 5), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 14, 2, 13)(3, 16, 4, 15)(5, 18, 6, -17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, 10)(13, 17, +], [ (1, 1), (2, 9), (3, 2), (4, 6), (6, 6) ], [ (1, 1), (2, 9), (3, 1), (4, 7), (6, 5), (8, 3), (12, 3), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 14, 2, 13)(3, 16, 4, 15)(5, 18, 6, +17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -685,8 +685,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -1, 2, 1, 2 ], [ -1, -3, 1, 3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 1), (12, 3), (24, 1) ], true, false, true, true, 16), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, -17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 20)(14, 19)(15, 22)(16, 21)(17, 24)(18, 23)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, +], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 1), (12, 3), (24, 1) ], true, false, true, true, 16), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, +17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 20)(14, 19)(15, 22)(16, 21)(17, 24)(18, 23)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -705,8 +705,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ 2, 4, 2, 4 ], [ -3, 4, 3, 4 ], [ 1, 2, 1, 2, 4 ] -], [ (1, 1), (2, 5), (3, 2), (4, 2), (6, 10), (12, 4) ], [ (1, 1), (2, 5), (3, 1), (4, 3), (6, 5), (8, 1), (12, 3), (24, 1) ], false, false, true, true, 16), ([ perm"(1, 14, 2, 13)(3, 16, 4, 15)(5, -18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)", perm"(1, 8, 2, 7)(3, 10, 4, 9)(5, 12, 6, 11)(13, 19, 14, 20)(15, 21, 16, 22)(17, 23, 18, 24)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, +], [ (1, 1), (2, 5), (3, 2), (4, 2), (6, 10), (12, 4) ], [ (1, 1), (2, 5), (3, 1), (4, 3), (6, 5), (8, 1), (12, 3), (24, 1) ], false, false, true, true, 16), ([ perm"(1, 14, 2, 13)(3, 16, 4, 15)(5, +18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)", perm"(1, 8, 2, 7)(3, 10, 4, 9)(5, 12, 6, 11)(13, 19, 14, 20)(15, 21, 16, 22)(17, 23, 18, 24)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -723,8 +723,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ -1, -2, 1, -2 ], [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] -], [ (1, 1), (2, 1), (3, 2), (4, 6), (6, 2), (12, 12) ], [ (1, 1), (2, 1), (3, 1), (4, 3), (6, 1), (8, 1), (12, 3), (24, 1) ], false, false, true, true, 48), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, -17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 17, 21)(14, 18, 22)(15, 19, 23)(16, 20, 24)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, +], [ (1, 1), (2, 1), (3, 2), (4, 6), (6, 2), (12, 12) ], [ (1, 1), (2, 1), (3, 1), (4, 3), (6, 1), (8, 1), (12, 3), (24, 1) ], false, false, true, true, 48), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, +17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 17, 21)(14, 18, 22)(15, 19, 23)(16, 20, 24)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, 11)(13, 14)(15, 16)(17, 20)(18, 19)(21, 23)(22, 24)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -741,8 +741,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ 1, 3, 1, 4 ], [ 3, 4, 3, 4 ], [ 2, 3, -2, 3, 4 ] -], [ (1, 1), (2, 9), (3, 8), (4, 6) ], [ (1, 1), (2, 9), (3, 4), (4, 7), (6, 4), (8, 3), (12, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, -19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, 11)(13, 15)(14, +], [ (1, 1), (2, 9), (3, 8), (4, 6) ], [ (1, 1), (2, 9), (3, 4), (4, 7), (6, 4), (8, 3), (12, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, +19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, 11)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, 14)(15, 16)(17, 20)(18, 19)(21, 23)(22, 24)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -759,8 +759,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ 1, 3, 1, 3 ], [ 3, 4, 3, 4 ], [ 2, 3, -2, 3, 4 ] -], [ (1, 1), (2, 7), (3, 8), (6, 8) ], [ (1, 1), (2, 7), (3, 4), (4, 7), (6, 4), (8, 1), (12, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, -19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, +], [ (1, 1), (2, 7), (3, 8), (6, 8) ], [ (1, 1), (2, 7), (3, 4), (4, 7), (6, 4), (8, 1), (12, 1), (24, 1) ], false, false, true, false, 24), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, +19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 14, 15)(16, 17, 18)(19, 20, 21)(22, 23, 24)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -779,8 +779,8 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 15), (3, 2), (6, 6) ], [ (1, 1), (2, 15), (3, 1), (4, 19), (6, 7), (8, 3), (12, 7), (24, 1) ], false, false, true, false, 144), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, -19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, +], [ (1, 1), (2, 15), (3, 2), (6, 6) ], [ (1, 1), (2, 15), (3, 1), (4, 19), (6, 7), (8, 3), (12, 7), (24, 1) ], false, false, true, false, 144), ([ perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, +19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -799,7 +799,7 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, [ 1, -4, 1, 4 ], [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 7), (3, 2), (6, 14) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 7), (8, 1), (12, 7), (24, 1) ], true, false, true, true, 336) ], [ ([ perm"(1, 25, 20, 15, 10, 5, 24, 19, 14, 9, 4, 23, +], [ (1, 1), (2, 7), (3, 2), (6, 14) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 7), (8, 1), (12, 7), (24, 1) ], true, false, true, true, 336) ], [ ([ perm"(1, 25, 20, 15, 10, 5, 24, 19, 14, 9, 4, 23, 18, 13, 8, 3, 22, 17, 12, 7, 2, 21, 16, 11, 6)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)" ], [ [ -1, -2, 1, 2 ], [ 1, 1, 1, 1, 1, -2 ], @@ -807,29 +807,29 @@ perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, ], [ [ -1, -2, 1, 2 ], [ 1, 1, 1, 1, 1, -2 ] -], [ (1, 1), (5, 4), (25, 20) ], [ (1, 1), (5, 1), (25, 1) ], true, true, true, true, 20), ([ perm"(1, 21, 16, 11, 6)(2, 22, 17, 12, 7)(3, 23, 18, 13, 8)(4, 24, 19, 14, 9)(5, 25, 20, 15, 10)", +], [ (1, 1), (5, 4), (25, 20) ], [ (1, 1), (5, 1), (25, 1) ], true, true, true, true, 20), ([ perm"(1, 21, 16, 11, 6)(2, 22, 17, 12, 7)(3, 23, 18, 13, 8)(4, 24, 19, 14, 9)(5, 25, 20, 15, 10)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)" ], [ [ -1, -2, 1, 2 ], [ -1, -1, -1, -1, -1 ], [ -2, -2, -2, -2, -2 ] ], [ [ -1, -2, 1, 2 ] -], [ (1, 1), (5, 24) ], [ (1, 1), (5, 6), (25, 1) ], true, false, true, true, 480) ], [ ([ perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, 21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)", +], [ (1, 1), (5, 24) ], [ (1, 1), (5, 6), (25, 1) ], true, false, true, true, 480) ], [ ([ perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, 21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)" ], [ [ 1, 1 ], [ -2, 1, -2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 13), (13, 12) ], [ (1, 1), (2, 13), (13, 1), (26, 1) ], false, false, true, false, 156), ([ perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, 21)(9, 22)(10, 23)(11, 24)(12, +], [ (1, 1), (2, 13), (13, 12) ], [ (1, 1), (2, 13), (13, 1), (26, 1) ], false, false, true, false, 156), ([ perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, 21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (13, 12), (26, 12) ], [ (1, 1), (2, 1), (13, 1), (26, 1) ], true, true, true, true, 12) ], [ ([ perm"(1, 27, 18, 9, 24, 15, 6, 21, 12, 3, 26, 17, 8, 23, 14, 5, 20, 11, 2, 25, 16, -7, 22, 13, 4, 19, 10)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)(19, 27, 24, 21, 26, 23, 20, 25, 22)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, +], [ (1, 1), (2, 1), (13, 12), (26, 12) ], [ (1, 1), (2, 1), (13, 1), (26, 1) ], true, true, true, true, 12) ], [ ([ perm"(1, 27, 18, 9, 24, 15, 6, 21, 12, 3, 26, 17, 8, 23, 14, 5, 20, 11, 2, 25, 16, +7, 22, 13, 4, 19, 10)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)(19, 27, 24, 21, 26, 23, 20, 25, 22)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)" ], [ [ 3, 3, 3 ], [ 1, 1, 1, -2 ], @@ -837,7 +837,7 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, ], [ [ 1, 1, 1, -2 ], [ 2, 2, 2, -3 ] -], [ (1, 1), (3, 2), (9, 6), (27, 18) ], [ (1, 1), (3, 1), (9, 1), (27, 1) ], true, true, true, true, 18), ([ perm"(1, 21, 12, 3, 20, 11, 2, 19, 10)(4, 24, 15, 6, 23, 14, 5, 22, 13)(7, 27, 18, 9, 26, +], [ (1, 1), (3, 2), (9, 6), (27, 18) ], [ (1, 1), (3, 1), (9, 1), (27, 1) ], true, true, true, true, 18), ([ perm"(1, 21, 12, 3, 20, 11, 2, 19, 10)(4, 24, 15, 6, 23, 14, 5, 22, 13)(7, 27, 18, 9, 26, 17, 8, 25, 16)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)" ], [ [ 2, 2, 2 ], @@ -847,8 +847,8 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, ], [ [ 1, 1, 1, -3 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (3, 8), (9, 18) ], [ (1, 1), (3, 4), (9, 4), (27, 1) ], true, false, true, true, 108), ([ perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, -27, 18)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, +], [ (1, 1), (3, 8), (9, 18) ], [ (1, 1), (3, 4), (9, 4), (27, 1) ], true, false, true, true, 108), ([ perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, +27, 18)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)" ], [ [ 1, 1, 1 ], [ 2, 2, 2 ], @@ -860,8 +860,8 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ], [ 1, -2, -1, 2, -3 ] -], [ (1, 1), (3, 26) ], [ (1, 1), (3, 13), (9, 4), (27, 1) ], false, false, true, true, 432), ([ perm"(1, 21, 12, 3, 20, 11, 2, 19, 10)(4, 24, 15, 6, 23, 14, 5, 22, 13)(7, 27, 18, 9, 26, 17, 8, 25, -16)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, +], [ (1, 1), (3, 26) ], [ (1, 1), (3, 13), (9, 4), (27, 1) ], false, false, true, true, 432), ([ perm"(1, 21, 12, 3, 20, 11, 2, 19, 10)(4, 24, 15, 6, 23, 14, 5, 22, 13)(7, 27, 18, 9, 26, 17, 8, 25, +16)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)" ], [ [ 2, 2, 2 ], [ 3, 3, 3 ], @@ -872,8 +872,8 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, [ 1, 1, 1, -3 ], [ -2, -3, 2, 3 ], [ 2, -1, -1, -2, -1 ] -], [ (1, 1), (3, 8), (9, 18) ], [ (1, 1), (3, 4), (9, 4), (27, 1) ], false, false, true, true, 54), ([ perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, -27, 18)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, +], [ (1, 1), (3, 8), (9, 18) ], [ (1, 1), (3, 4), (9, 4), (27, 1) ], false, false, true, true, 54), ([ perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, +27, 18)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)" ], [ [ 1, 1, 1 ], [ 2, 2, 2 ], @@ -885,8 +885,8 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, [ -1, -2, 1, 2 ], [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] -], [ (1, 1), (3, 26) ], [ (1, 1), (3, 13), (9, 13), (27, 1) ], true, false, true, true, 11232) ], [ ([ perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, -28, 14, 21)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 16, 17, 18, 19, +], [ (1, 1), (3, 26) ], [ (1, 1), (3, 13), (9, 13), (27, 1) ], true, false, true, true, 11232) ], [ ([ perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, +28, 14, 21)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 16, 17, 18, 19, 20, 21)(22, 23, 24, 25, 26, 27, 28)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -896,8 +896,8 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, ], [ [ -1, -1, 2 ], [ -1, -3, 1, -3 ] -], [ (1, 1), (2, 1), (4, 14), (7, 6), (14, 6) ], [ (1, 1), (2, 1), (4, 7), (7, 1), (14, 1), (28, 1) ], false, false, true, false, 84), ([ perm"(1, 16, 2, 15)(3, 18, 4, 17)(5, 20, 6, 19)(7, 22, 8, -21)(9, 24, 10, 23)(11, 26, 12, 25)(13, 28, 14, 27)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, +], [ (1, 1), (2, 1), (4, 14), (7, 6), (14, 6) ], [ (1, 1), (2, 1), (4, 7), (7, 1), (14, 1), (28, 1) ], false, false, true, false, 84), ([ perm"(1, 16, 2, 15)(3, 18, 4, 17)(5, 20, 6, 19)(7, 22, 8, +21)(9, 24, 10, 23)(11, 26, 12, 25)(13, 28, 14, 27)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)" ], [ [ 1, 1, 1, 1 ], [ 3, 3 ], @@ -907,7 +907,7 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, ], [ [ -1, -1, 3 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (4, 2), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 1), (4, 1), (7, 1), (14, 1), (28, 1) ], true, true, true, true, 12), ([ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, +], [ (1, 1), (2, 1), (4, 2), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 1), (4, 1), (7, 1), (14, 1), (28, 1) ], true, true, true, true, 12), ([ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 16, 17, 18, 19, 20, 21)(22, 23, 24, 25, 26, 27, 28)" ], [ [ 1, 1 ], @@ -920,8 +920,8 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, [ 1, 2, 1, 2 ], [ 1, -3, 1, -3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 15), (7, 6), (14, 6) ], [ (1, 1), (2, 15), (4, 7), (7, 1), (14, 3), (28, 1) ], false, false, true, false, 84), ([ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, -23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, +], [ (1, 1), (2, 15), (7, 6), (14, 6) ], [ (1, 1), (2, 15), (4, 7), (7, 1), (14, 3), (28, 1) ], false, false, true, false, 84), ([ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, +23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -936,8 +936,8 @@ perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, ], [ (1, 1), (2, 3), (7, 6), (14, 18) ], [ (1, 1), (2, 3), (4, 1), (7, 1), (14, 3), (28, 1) ], true, false, true, true, 36) ], [ ([ perm"(1, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (29, 28) ], [ (1, 1), (29, 1) ], true, true, true, true, 28) ], [ ([ perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, -30)", perm"(1, 13, 10, 7, 4)(2, 14, 11, 8, 5)(3, 15, 12, 9, 6)(16, 28, 25, 22, 19)(17, 29, 26, 23, 20)(18, 30, 27, 24, 21)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 17, 18)(19, +], [], [ (1, 1), (29, 28) ], [ (1, 1), (29, 1) ], true, true, true, true, 28) ], [ ([ perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, +30)", perm"(1, 13, 10, 7, 4)(2, 14, 11, 8, 5)(3, 15, 12, 9, 6)(16, 28, 25, 22, 19)(17, 29, 26, 23, 20)(18, 30, 27, 24, 21)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 17, 18)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -962,7 +962,7 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] -], [ (1, 1), (2, 5), (3, 2), (5, 4), (6, 10), (15, 8) ], [ (1, 1), (2, 5), (3, 1), (5, 1), (6, 5), (10, 1), (15, 1), (30, 1) ], false, false, true, false, 40), ([ perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, +], [ (1, 1), (2, 5), (3, 2), (5, 4), (6, 10), (15, 8) ], [ (1, 1), (2, 5), (3, 1), (5, 1), (6, 5), (10, 1), (15, 1), (30, 1) ], false, false, true, false, 40), ([ perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 21, 26)(17, 22, 27)(18, 23, 28)(19, 24, 29)(20, 25, 30)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)" ], [ [ 1, 1 ], @@ -976,7 +976,7 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] ], [ (1, 1), (2, 15), (3, 2), (5, 4), (15, 8) ], [ (1, 1), (2, 15), (3, 1), (5, 1), (6, 5), (10, 3), (15, 1), (30, 1) ], false, false, true, false, 120), ([ perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, -21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, 29, 24)(20, 30, 25)", +21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, 29, 24)(20, 30, 25)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -991,9 +991,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, ], [ (1, 1), (2, 1), (3, 2), (5, 4), (6, 2), (10, 4), (15, 8), (30, 8) ], [ (1, 1), (2, 1), (3, 1), (5, 1), (6, 1), (10, 1), (15, 1), (30, 1) ], true, true, true, true, 8) ], [ ([ perm"(1, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (31, 30) ], [ (1, 1), (31, 1) ], true, true, true, true, 30) ], [ ([ perm"(1, 32, 16, 24, 8, 28, 12, 20, 4, 30, 14, 22, 6, 26, 10, 18, 2, 31, 15, 23, 7, 27, 11, 19, 3, 29, 13, 21, 5, -25, 9, 17)", perm"(1, 16, 8, 12, 4, 14, 6, 10, 2, 15, 7, 11, 3, 13, 5, 9)(17, 32, 24, 28, 20, 30, 22, 26, 18, 31, 23, 27, 19, 29, 21, 25)", perm"(1, 8, 4, 6, 2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, -13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", +], [], [ (1, 1), (31, 30) ], [ (1, 1), (31, 1) ], true, true, true, true, 30) ], [ ([ perm"(1, 32, 16, 24, 8, 28, 12, 20, 4, 30, 14, 22, 6, 26, 10, 18, 2, 31, 15, 23, 7, 27, 11, 19, 3, 29, 13, 21, 5, +25, 9, 17)", perm"(1, 16, 8, 12, 4, 14, 6, 10, 2, 15, 7, 11, 3, 13, 5, 9)(17, 32, 24, 28, 20, 30, 22, 26, 18, 31, 23, 27, 19, 29, 21, 25)", perm"(1, 8, 4, 6, 2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, +13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 4, 4, 4, 4 ], [ 5, 5 ], @@ -1006,9 +1006,9 @@ perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, [ 2, 1, 1, -3 ], [ 3, 2, 2, -4 ], [ 4, 3, 3, 5 ] -], [ (1, 1), (2, 1), (4, 2), (8, 4), (16, 8), (32, 16) ], [ (1, 1), (2, 1), (4, 1), (8, 1), (16, 1), (32, 1) ], true, true, true, true, 16), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, -8, 22)(9, 27, 11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 26, 22, 25)(23, 28, 24, 27)", -perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, +], [ (1, 1), (2, 1), (4, 2), (8, 4), (16, 8), (32, 16) ], [ (1, 1), (2, 1), (4, 1), (8, 1), (16, 1), (32, 1) ], true, true, true, true, 16), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, +8, 22)(9, 27, 11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 26, 22, 25)(23, 28, 24, 27)", +perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -1030,9 +1030,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, 4, 2, 4 ], [ -1, 5, 1, 5 ], [ 1, -2, -1, 2, 3 ] -], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 19), (16, 3), (32, 1) ], false, false, true, true, 384), ([ perm"(1, 22, 6, 18, 2, 21, 5, 17)(3, 24, 8, 20, 4, 23, 7, 19)(9, 30, 14, 26, +], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 19), (16, 3), (32, 1) ], false, false, true, true, 384), ([ perm"(1, 22, 6, 18, 2, 21, 5, 17)(3, 24, 8, 20, 4, 23, 7, 19)(9, 30, 14, 26, 10, 29, 13, 25)(11, 32, 16, 28, 12, 31, 15, 27)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 27, 19, 25)(18, 28, 20, 26)(21, 31, 23, 29)(22, 32, 24, 30)", perm"(1, 6, 2, 5)(3, 8, -4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 22, 18, 21)(19, 24, 20, 23)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, +4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 22, 18, 21)(19, 24, 20, 23)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2, 2, 2 ], [ 3, 3, 3, 3 ], @@ -1047,8 +1047,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 3, 1, 1, 5 ], [ -1, -2, 1, 2 ], [ -2, -2, 4 ] -], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 3), (32, 1) ], true, false, true, true, 128), ([ perm"(1, 22, 6, 18, 2, 21, 5, 17)(3, 24, 8, 20, 4, 23, 7, 19)(9, 30, -14, 26, 10, 29, 13, 25)(11, 32, 16, 28, 12, 31, 15, 27)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 28, 19, 26)(18, 27, 20, 25)(21, 32, 23, 30)(22, 31, 24, 29)", perm"(1, 6, 2, +], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 3), (32, 1) ], true, false, true, true, 128), ([ perm"(1, 22, 6, 18, 2, 21, 5, 17)(3, 24, 8, 20, 4, 23, 7, 19)(9, 30, +14, 26, 10, 29, 13, 25)(11, 32, 16, 28, 12, 31, 15, 27)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 28, 19, 26)(18, 27, 20, 25)(21, 32, 23, 30)(22, 31, 24, 29)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 22, 18, 21)(19, 24, 20, 23)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2, 2, 2 ], @@ -1068,8 +1068,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -3, 2, 3 ], [ -1, 4, 1, 4 ], [ -1, -2, -1, 2, -3 ] -], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, -12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)", perm"(1, 5)(2, +], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, +12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], @@ -1089,8 +1089,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, 3, 2, 3 ], [ 2, -4, 2, 4 ], [ 1, 2, -1, 2, 3 ] -], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 28, -12, 25)(10, 27, 11, 26)(13, 32, 16, 29)(14, 31, 15, 30)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)", perm"(1, 5)(2, +], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 28, +12, 25)(10, 27, 11, 26)(13, 32, 16, 29)(14, 31, 15, 30)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 12)(10, 11)(13, 16)(14, 15)(17, 19)(18, 20)(21, 23)(22, 24)(25, 28)(26, 27)(29, 32)(30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1116,8 +1116,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 3, 2, -1, 2, 1 ], [ 1, 3, -1, 3, 5 ] ], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 23), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 27, 11, 26, -10, 28, 12, 25)(13, 31, 15, 30, 14, 32, 16, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)", perm"(1, 5)(2, 6)(3, -7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 20, 18, 19)(21, 24, 22, +10, 28, 12, 25)(13, 31, 15, 30, 14, 32, 16, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)", perm"(1, 5)(2, 6)(3, +7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 20, 18, 19)(21, 24, 22, 23)(25, 27, 26, 28)(29, 31, 30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], [ 3, 3 ], @@ -1136,9 +1136,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, -4, 2, -4 ], [ 3, -4, 3, 4 ], [ 3, 2, -1, 2, 1 ] -], [ (1, 1), (2, 11), (4, 4), (8, 16) ], [ (1, 1), (2, 11), (4, 15), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, -27, 11, 26, 10, 28, 12, 25)(13, 31, 15, 30, 14, 32, 16, 29)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 26, 22, 25)(23, 28, 24, 27)", perm"(1, -5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 20, 18, 19)(21, +], [ (1, 1), (2, 11), (4, 4), (8, 16) ], [ (1, 1), (2, 11), (4, 15), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, +27, 11, 26, 10, 28, 12, 25)(13, 31, 15, 30, 14, 32, 16, 29)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 26, 22, 25)(23, 28, 24, 27)", perm"(1, +5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 20, 18, 19)(21, 24, 22, 23)(25, 27, 26, 28)(29, 31, 30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2, 2, 2 ], [ 3, 3 ], @@ -1159,8 +1159,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -4, 2, -4 ], [ 3, -4, 3, 4 ], [ 1, -2, -1, -2, 3 ] -], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, -11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 26)(22, 25)(23, 28)(24, 27)", perm"(1, 6, 2, +], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, +11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 26)(22, 25)(23, 28)(24, 27)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 13, 10, 14)(11, 15, 12, 16)(17, 21, 18, 22)(19, 23, 20, 24)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1182,7 +1182,7 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, 4, 2, 4 ], [ 1, 2, -1, 2, 3 ] ], [ (1, 1), (2, 11), (4, 12), (8, 8) ], [ (1, 1), (2, 11), (4, 19), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, -11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 25, 22, 26)(23, 27, 24, 28)", perm"(1, 6, 2, +11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 25, 22, 26)(23, 27, 24, 28)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 13, 10, 14)(11, 15, 12, 16)(17, 21, 18, 22)(19, 23, 20, 24)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1205,8 +1205,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -3, 2, -3 ], [ -2, 4, 2, 4 ], [ 1, -2, -1, 2, 3 ] -], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, -12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 26)(22, 25)(23, 28)(24, 27)", perm"(1, 6, 2, +], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, +12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 26)(22, 25)(23, 28)(24, 27)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 13, 10, 14)(11, 15, 12, 16)(17, 21, 18, 22)(19, 23, 20, 24)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], @@ -1228,8 +1228,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -3, -3, 5 ], [ 2, -4, 2, 4 ], [ 1, 2, -1, 2, 3 ] -], [ (1, 1), (2, 7), (4, 16), (8, 8) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 32), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, -12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 13, 5, 9)(2, 14, 6, 10)(3, 15, 7, 11)(4, 16, 8, 12)(17, 25, 21, 29)(18, 26, 22, 30)(19, 27, 23, 31)(20, 28, 24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 7), (4, 16), (8, 8) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 3), (32, 1) ], false, false, true, true, 32), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, +12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 13, 5, 9)(2, 14, 6, 10)(3, 15, 7, 11)(4, 16, 8, 12)(17, 25, 21, 29)(18, 26, 22, 30)(19, 27, 23, 31)(20, 28, 24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2, 2, 2 ], @@ -1245,8 +1245,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 4, 1, 1, 5 ], [ -1, -2, 1, -2 ], [ -2, -2, 3 ] -], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, -11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 14, 6, 10, 2, 13, 5, 9)(3, 16, 8, 12, 4, 15, 7, 11)(17, 26, 21, 30, 18, 25, 22, 29)(19, 28, 23, 32, 20, 27, 24, 31)", perm"(1, 6, 2, +], [ (1, 1), (2, 3), (4, 12), (8, 16) ], [ (1, 1), (2, 3), (4, 7), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, +11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 14, 6, 10, 2, 13, 5, 9)(3, 16, 8, 12, 4, 15, 7, 11)(17, 26, 21, 30, 18, 25, 22, 29)(19, 28, 23, 32, 20, 27, 24, 31)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 21, 18, 22)(19, 23, 20, 24)(25, 29, 26, 30)(27, 31, 28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1266,8 +1266,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, -3, 1, -3 ], [ -2, 4, 2, 4 ], [ 1, -2, -1, 2, 3 ] -], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, -11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 13, 5, 10, 2, 14, 6, 9)(3, 15, 7, 12, 4, 16, 8, 11)(17, 25, 22, 30, 18, 26, 21, 29)(19, 27, 24, 32, 20, 28, 23, 31)", perm"(1, 6, 2, +], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, +11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 13, 5, 10, 2, 14, 6, 9)(3, 15, 7, 12, 4, 16, 8, 11)(17, 25, 22, 30, 18, 26, 21, 29)(19, 27, 24, 32, 20, 28, 23, 31)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 21, 18, 22)(19, 23, 20, 24)(25, 29, 26, 30)(27, 31, 28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1283,8 +1283,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, -2, 1, -2 ], [ -2, -2, -3 ], [ -3, 2, 2, 5 ] -], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, -12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 14, 6, 10, 2, 13, 5, 9)(3, 16, 8, 12, 4, 15, 7, 11)(17, 26, 21, 30, 18, 25, 22, 29)(19, 28, 23, 32, 20, 27, 24, 31)", perm"(1, 6, 2, +], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, +12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 14, 6, 10, 2, 13, 5, 9)(3, 16, 8, 12, 4, 15, 7, 11)(17, 26, 21, 30, 18, 25, 22, 29)(19, 28, 23, 32, 20, 27, 24, 31)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 21, 18, 22)(19, 23, 20, 24)(25, 29, 26, 30)(27, 31, 28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 3, 3, 3, 3 ], @@ -1306,8 +1306,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -4, 2, 4 ], [ -1, -2, -1, -2, -4 ] ], [ (1, 1), (2, 3), (4, 4), (8, 24) ], [ (1, 1), (2, 3), (4, 3), (8, 7), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 24, 8, 20, 4, 22, 6, 18, 2, 23, 7, 19, 3, 21, 5, 17)(9, 32, 16, -28, 12, 30, 14, 26, 10, 31, 15, 27, 11, 29, 13, 25)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 8, 4, 6, -2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, 13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, +28, 12, 30, 14, 26, 10, 31, 15, 27, 11, 29, 13, 25)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 8, 4, 6, +2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, 13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], [ 4, 4, 4, 4 ], @@ -1323,7 +1323,7 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 4, 3, 3, 5 ] ], [ (1, 1), (2, 3), (4, 4), (8, 8), (16, 16) ], [ (1, 1), (2, 3), (4, 3), (8, 3), (16, 3), (32, 1) ], true, false, true, true, 32), ([ perm"(1, 24, 8, 20, 4, 22, 6, 18, 2, 23, 7, 19, 3, 21, 5, 17)(9, 32, 16, 28, 12, 30, 14, 26, 10, 31, 15, 27, 11, 29, 13, 25)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 8, -4, 6, 2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, 13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, +4, 6, 2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, 13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], [ 4, 4, 4, 4 ], @@ -1339,9 +1339,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, -3, 2, 3 ], [ 4, 3, 3, 5 ], [ 1, 2, -1, 2, 5 ] -], [ (1, 1), (2, 3), (4, 4), (8, 8), (16, 16) ], [ (1, 1), (2, 3), (4, 3), (8, 3), (16, 3), (32, 1) ], false, false, true, true, 32), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, -24)(9, 25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 28)(22, 27)(23, 25)(24, 26)", -perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, 22, 19, 23)(25, 31, 27, 30, 26, 32, 28, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, +], [ (1, 1), (2, 3), (4, 4), (8, 8), (16, 16) ], [ (1, 1), (2, 3), (4, 3), (8, 3), (16, 3), (32, 1) ], false, false, true, true, 32), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, +24)(9, 25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 28)(22, 27)(23, 25)(24, 26)", +perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, 22, 19, 23)(25, 31, 27, 30, 26, 32, 28, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -1358,9 +1358,9 @@ perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, [ -3, -3, -4 ], [ -4, 3, 3, 5 ], [ 1, 2, 1, 2, 3 ] -], [ (1, 1), (2, 17), (4, 2), (8, 4), (16, 8) ], [ (1, 1), (2, 17), (4, 9), (8, 5), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, -23)(9, 26, 10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 28)(22, 27)(23, 25)(24, 26)", -perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, 22, 19, 23)(25, 31, 27, 30, 26, 32, 28, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, +], [ (1, 1), (2, 17), (4, 2), (8, 4), (16, 8) ], [ (1, 1), (2, 17), (4, 9), (8, 5), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, +23)(9, 26, 10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 28)(22, 27)(23, 25)(24, 26)", +perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, 22, 19, 23)(25, 31, 27, 30, 26, 32, 28, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -1379,9 +1379,9 @@ perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, [ 2, -3, 2, -3 ], [ -3, -3, -4 ], [ 1, 2, -1, 2, 3 ] -], [ (1, 1), (2, 9), (4, 10), (8, 4), (16, 8) ], [ (1, 1), (2, 9), (4, 9), (8, 5), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, -23)(9, 26, 10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 27, 22, 28)(23, 26, 24, 25)", -perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, 22, 19, 23)(25, 31, 27, 30, 26, 32, 28, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, +], [ (1, 1), (2, 9), (4, 10), (8, 4), (16, 8) ], [ (1, 1), (2, 9), (4, 9), (8, 5), (16, 3), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, +23)(9, 26, 10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 30, 18, 29)(19, 32, 20, 31)(21, 27, 22, 28)(23, 26, 24, 25)", +perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, 22, 19, 23)(25, 31, 27, 30, 26, 32, 28, 29)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -1402,9 +1402,9 @@ perm"(1, 7, 3, 6, 2, 8, 4, 5)(9, 13, 12, 16, 10, 14, 11, 15)(17, 21, 20, 24, 18, [ -2, -3, 2, -3 ], [ -3, -3, -4 ], [ -1, -2, -1, -2, 3 ] -], [ (1, 1), (2, 1), (4, 18), (8, 4), (16, 8) ], [ (1, 1), (2, 1), (4, 9), (8, 5), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, -22)(9, 27, 11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 26, 18, 25)(19, 28, 20, 27)(21, 30, 22, 29)(23, 32, 24, 31)", -perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, +], [ (1, 1), (2, 1), (4, 18), (8, 4), (16, 8) ], [ (1, 1), (2, 1), (4, 9), (8, 5), (16, 3), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, +22)(9, 27, 11, 25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 26, 18, 25)(19, 28, 20, 27)(21, 30, 22, 29)(23, 32, 24, 31)", +perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -1422,8 +1422,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -2, 5 ], [ -1, 3, 1, 3 ], [ -2, 3, 2, 3 ] -], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 19), (16, 7), (32, 1) ], true, false, true, true, 1536), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, -25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 5)(2, +], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 19), (16, 7), (32, 1) ], true, false, true, true, 1536), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, +25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1448,8 +1448,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 3, 4, 3, 4 ], [ 2, 5, 2, 5 ], [ 1, 2, -1, 2, 4 ] -], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 43), (8, 27), (16, 7), (32, 1) ], false, false, true, true, 512), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, -25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 43), (8, 27), (16, 7), (32, 1) ], false, false, true, true, 512), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, +25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1468,8 +1468,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -2, 4 ], [ -1, 3, 1, 3 ], [ -2, 3, 2, 3 ] -], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 19), (16, 7), (32, 1) ], false, false, true, true, 512), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, -25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 7, 3, +], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 19), (16, 7), (32, 1) ], false, false, true, true, 512), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, +25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 23, 19, 21)(18, 24, 20, 22)(25, 31, 27, 29)(26, 32, 28, 30)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1490,8 +1490,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -3, -3, 4 ], [ 2, 5, 2, 5 ], [ 1, 2, -1, 2, 4 ] -], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, -25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 6, 2, +], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, +25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 22, 18, 21)(19, 24, 20, 23)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1516,8 +1516,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, 4, 2, 4 ], [ -3, 4, 3, 4 ], [ 1, 2, -1, 2, 4 ] -], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 23), (8, 19), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, -25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 8, 4, +], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 23), (8, 19), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, +25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 8, 4, 5)(2, 7, 3, 6)(9, 16, 12, 13)(10, 15, 11, 14)(17, 24, 20, 21)(18, 23, 19, 22)(25, 32, 28, 29)(26, 31, 27, 30)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1538,8 +1538,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ], [ 4, 3, 3, 5 ] -], [ (1, 1), (2, 3), (4, 28) ], [ (1, 1), (2, 3), (4, 15), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 384), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 5)(2, +], [ (1, 1), (2, 3), (4, 28) ], [ (1, 1), (2, 3), (4, 15), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 384), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -1568,8 +1568,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 4, 5, 4, 5 ], [ 1, 2, 1, 2, 4 ], [ 1, 3, 1, 3, 5 ] -], [ (1, 1), (2, 19), (4, 12) ], [ (1, 1), (2, 19), (4, 47), (8, 31), (16, 7), (32, 1) ], false, false, true, true, 384), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 19), (4, 12) ], [ (1, 1), (2, 19), (4, 47), (8, 31), (16, 7), (32, 1) ], false, false, true, true, 384), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -1592,8 +1592,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 1, 5, 1, 5 ], [ 3, 5, 3, 5 ], [ 1, 3, 1, 3, 5 ] -], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 27), (8, 23), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, 11, -25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 27), (8, 23), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, 11, +25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1618,8 +1618,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, 5, 2, 5 ], [ 3, 5, 3, 5 ], [ 1, 3, -1, 3, 5 ] -], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 7, 3, +], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 25)(20, 26)(21, 31)(22, 32)(23, 29)(24, 30)", perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 24, 19, 22)(18, 23, 20, 21)(25, 32, 27, 30)(26, 31, 28, 29)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -1644,8 +1644,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -3, 5, 3, 5 ], [ 1, 2, 1, 2, 4 ], [ 1, -3, 1, 3, 5 ] -], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 23), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 26, 20, 25)(21, 32, 22, 31)(23, 30, 24, 29)", perm"(1, 7, 3, +], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 23), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 26, 20, 25)(21, 32, 22, 31)(23, 30, 24, 29)", perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 24, 19, 22)(18, 23, 20, 21)(25, 32, 27, 30)(26, 31, 28, 29)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -1668,8 +1668,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 1, 5, 1, 5 ], [ 2, 1, -2, 1, 4 ], [ -3, 1, 2, 2, 3, 1 ] -], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 23), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, 11, -25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 26, 20, 25)(21, 32, 22, 31)(23, 30, 24, 29)", perm"(1, 7, 3, +], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 23), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, 11, +25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 26, 20, 25)(21, 32, 22, 31)(23, 30, 24, 29)", perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 24, 19, 22)(18, 23, 20, 21)(25, 32, 27, 30)(26, 31, 28, 29)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1690,8 +1690,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -2, 5 ], [ -2, -3, 2, 3 ], [ -1, -3, -1, -3, 5 ] -], [ (1, 1), (2, 3), (4, 28) ], [ (1, 1), (2, 3), (4, 15), (8, 7), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 12, 4, 9)(2, 11, 3, 10)(5, 16, 8, 13)(6, 15, 7, 14)(17, 26, 20, 27)(18, 25, 19, 28)(21, 30, 24, 31)(22, 29, 23, 32)", perm"(1, 7, 3, +], [ (1, 1), (2, 3), (4, 28) ], [ (1, 1), (2, 3), (4, 15), (8, 7), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 12, 4, 9)(2, 11, 3, 10)(5, 16, 8, 13)(6, 15, 7, 14)(17, 26, 20, 27)(18, 25, 19, 28)(21, 30, 24, 31)(22, 29, 23, 32)", perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 24, 19, 22)(18, 23, 20, 21)(25, 32, 27, 30)(26, 31, 28, 29)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -1714,8 +1714,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 1, 5, 1, 5 ], [ -2, 1, -2, 1, 5 ], [ -3, 1, 2, 2, -3, 1 ] -], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 7), (16, 7), (32, 1) ], false, false, true, true, 192), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 6, 2, +], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 7), (16, 7), (32, 1) ], false, false, true, true, 192), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 21, 18, 22)(19, 23, 20, 24)(25, 29, 26, 30)(27, 31, 28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -1734,8 +1734,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ], [ -3, -3, 5 ] -], [ (1, 1), (2, 19), (4, 12) ], [ (1, 1), (2, 19), (4, 31), (8, 31), (16, 7), (32, 1) ], false, false, true, true, 1536), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, 11, -25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 6, 2, +], [ (1, 1), (2, 19), (4, 12) ], [ (1, 1), (2, 19), (4, 31), (8, 31), (16, 7), (32, 1) ], false, false, true, true, 1536), ([ perm"(1, 19, 3, 17)(2, 20, 4, 18)(5, 23, 7, 21)(6, 24, 8, 22)(9, 27, 11, +25)(10, 28, 12, 26)(13, 31, 15, 29)(14, 32, 16, 30)", perm"(1, 11, 3, 9)(2, 12, 4, 10)(5, 15, 7, 13)(6, 16, 8, 14)(17, 25, 19, 27)(18, 26, 20, 28)(21, 29, 23, 31)(22, 30, 24, 32)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 21, 18, 22)(19, 23, 20, 24)(25, 29, 26, 30)(27, 31, 28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1756,9 +1756,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, -3, 1, -3 ], [ -2, -3, 2, 3 ], [ -3, -3, 5 ] -], [ (1, 1), (2, 3), (4, 28) ], [ (1, 1), (2, 3), (4, 15), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 512), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, 12, 26, -10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, 6)(3, -7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, +], [ (1, 1), (2, 3), (4, 28) ], [ (1, 1), (2, 3), (4, 15), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 512), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, 12, 26, +10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, 6)(3, +7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], [ 3, 3 ], @@ -1775,8 +1775,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, 2, 1, 2 ], [ -1, 3, 1, 3 ], [ 2, 3, 2, 3 ] -], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 7), (32, 1) ], true, false, true, true, 384), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, -12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 5)(2, +], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 7), (32, 1) ], true, false, true, true, 384), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, +12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], @@ -1796,8 +1796,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, 3, 2, 3 ], [ 2, -4, 2, 4 ], [ -1, 2, -1, 2, -4 ] -], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, -12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 11), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 20, 4, 18, 2, 19, 3, 17)(5, 24, 8, 22, 6, 23, 7, 21)(9, 28, +12, 26, 10, 27, 11, 25)(13, 32, 16, 30, 14, 31, 15, 29)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 14)(10, 13)(11, 16)(12, 15)(17, 21)(18, 22)(19, 23)(20, 24)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 2, 2 ], @@ -1815,9 +1815,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, 2, 1, 2 ], [ -1, 3, 1, 3 ], [ 2, 3, 2, 3, 5 ] -], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 7), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 96), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, -25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 26)(20, 25)(21, 31)(22, 32)(23, 30)(24, 29)", perm"(1, -5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, +], [ (1, 1), (2, 7), (4, 8), (8, 16) ], [ (1, 1), (2, 7), (4, 7), (8, 11), (16, 7), (32, 1) ], false, false, true, true, 96), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, +25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 26)(20, 25)(21, 31)(22, 32)(23, 30)(24, 29)", perm"(1, +5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -1840,7 +1840,7 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -4, -4, 5 ], [ 1, 2, 1, 2, 4 ] ], [ (1, 1), (2, 19), (4, 4), (8, 8) ], [ (1, 1), (2, 19), (4, 27), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, -10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 26)(20, 25)(21, 31)(22, 32)(23, 30)(24, 29)", perm"(1, 5)(2, +10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 26)(20, 25)(21, 31)(22, 32)(23, 30)(24, 29)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1865,9 +1865,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, -4, 2, -4 ], [ 3, -4, 3, 4 ], [ -1, 2, -1, 2, -4 ] -], [ (1, 1), (2, 11), (4, 12), (8, 8) ], [ (1, 1), (2, 11), (4, 19), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, -26, 10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 25, 20, 26)(21, 32, 22, 31)(23, 29, 24, 30)", perm"(1, -5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, +], [ (1, 1), (2, 11), (4, 12), (8, 8) ], [ (1, 1), (2, 11), (4, 19), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 128), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, +26, 10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 25, 20, 26)(21, 32, 22, 31)(23, 29, 24, 30)", perm"(1, +5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -1893,9 +1893,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -4, 2, -4 ], [ 3, -4, 3, 4 ], [ -1, -2, -1, 2, -4 ] -], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, +], [ (1, 1), (2, 3), (4, 20), (8, 8) ], [ (1, 1), (2, 3), (4, 11), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 256), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 26)(20, 25)(21, 31)(22, 32)(23, 30)(24, 29)", perm"(1, 6, -2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 22, 18, 21)(19, 24, 20, 23)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, +2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 22, 18, 21)(19, 24, 20, 23)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -1919,9 +1919,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, -4, 2, -4 ], [ -3, -4, 3, 4 ], [ 1, 2, 1, 2, 4 ] -], [ (1, 1), (2, 11), (4, 12), (8, 8) ], [ (1, 1), (2, 11), (4, 11), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, -25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 26)(20, 25)(21, 31)(22, 32)(23, 30)(24, 29)", perm"(1, -5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, +], [ (1, 1), (2, 11), (4, 12), (8, 8) ], [ (1, 1), (2, 11), (4, 11), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, +25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 27)(18, 28)(19, 26)(20, 25)(21, 31)(22, 32)(23, 30)(24, 29)", perm"(1, +5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -1943,9 +1943,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -4, -4, 5 ], [ 1, 2, 1, 2, 4 ], [ 1, 3, 1, 3, 5 ] -], [ (1, 1), (2, 15), (4, 8), (8, 8) ], [ (1, 1), (2, 15), (4, 19), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, -25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 25, 20, 26)(21, 32, 22, 31)(23, 29, 24, 30)", perm"(1, -5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, +], [ (1, 1), (2, 15), (4, 8), (8, 8) ], [ (1, 1), (2, 15), (4, 19), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, +25)(10, 26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 28, 18, 27)(19, 25, 20, 26)(21, 32, 22, 31)(23, 29, 24, 30)", perm"(1, +5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 11, 10, 12)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 28, 26, 27)(29, 32, 30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -1969,8 +1969,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 3, -4, 3, 4 ], [ -2, 1, -2, 1, 4 ], [ 3, 1, 2, 2, 3, 1 ] -], [ (1, 1), (2, 7), (4, 16), (8, 8) ], [ (1, 1), (2, 7), (4, 11), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, -10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 7), (4, 16), (8, 8) ], [ (1, 1), (2, 7), (4, 11), (8, 15), (16, 7), (32, 1) ], false, false, true, true, 64), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, +10, 25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -1993,8 +1993,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, 4, 1, 4 ], [ 2, 4, 2, 4 ], [ 3, 4, 3, 4 ] -], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 43), (8, 43), (16, 15), (32, 1) ], true, false, true, true, 21504), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 5)(2, +], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 43), (8, 43), (16, 15), (32, 1) ], true, false, true, true, 21504), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -2023,8 +2023,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 3, 5, 3, 5 ], [ 4, 5, 4, 5 ], [ 1, 2, 1, 2, 5 ] -], [ (1, 1), (2, 23), (4, 8) ], [ (1, 1), (2, 23), (4, 67), (8, 51), (16, 15), (32, 1) ], false, false, true, true, 3072), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, -25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 25, 18, 26)(19, 27, 20, 28)(21, 29, 22, 30)(23, 31, 24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 23), (4, 8) ], [ (1, 1), (2, 23), (4, 67), (8, 51), (16, 15), (32, 1) ], false, false, true, true, 3072), ([ perm"(1, 18, 2, 17)(3, 20, 4, 19)(5, 22, 6, 21)(7, 24, 8, 23)(9, 26, 10, +25)(11, 28, 12, 27)(13, 30, 14, 29)(15, 32, 16, 31)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 25, 18, 26)(19, 27, 20, 28)(21, 29, 22, 30)(23, 31, 24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1, 1, 1 ], @@ -2049,8 +2049,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, 4, 1, 4 ], [ -2, 4, 2, 4 ], [ 3, 4, 3, 4 ] -], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 9216), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 6, 2, +], [ (1, 1), (2, 7), (4, 24) ], [ (1, 1), (2, 7), (4, 19), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 9216), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 14, 10, 13)(11, 16, 12, 15)(17, 22, 18, 21)(19, 24, 20, 23)(25, 30, 26, 29)(27, 32, 28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -2073,8 +2073,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 2, 4, 2, 4 ], [ -3, 4, 3, 4 ], [ 1, 2, 1, 2, 5 ] -], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 27), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 768), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 5)(2, +], [ (1, 1), (2, 15), (4, 16) ], [ (1, 1), (2, 15), (4, 27), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 768), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 26)(18, 25)(19, 28)(20, 27)(21, 30)(22, 29)(23, 32)(24, 31)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 14)(10, 13)(11, 16)(12, 15)(17, 21)(18, 22)(19, 23)(20, 24)(25, 30)(26, 29)(27, 32)(28, 31)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 20)(18, 19)(21, 24)(22, 23)(25, 28)(26, 27)(29, 32)(30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -2103,8 +2103,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ 1, 2, 1, 2, 5 ], [ 1, 4, 1, 4, 5 ], [ 3, 1, 2, 1, 3, 2 ] -], [ (1, 1), (2, 19), (4, 12) ], [ (1, 1), (2, 19), (4, 39), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 1152), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 25, 18, 26)(19, 27, 20, 28)(21, 29, 22, 30)(23, 31, 24, 32)", perm"(1, 6, 2, +], [ (1, 1), (2, 19), (4, 12) ], [ (1, 1), (2, 19), (4, 39), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 1152), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 10, 2, 9)(3, 12, 4, 11)(5, 14, 6, 13)(7, 16, 8, 15)(17, 25, 18, 26)(19, 27, 20, 28)(21, 29, 22, 30)(23, 31, 24, 32)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 13, 10, 14)(11, 15, 12, 16)(17, 22, 18, 21)(19, 24, 20, 23)(25, 29, 26, 30)(27, 31, 28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 20)(18, 19)(21, 24)(22, 23)(25, 28)(26, 27)(29, 32)(30, 31)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -2129,8 +2129,8 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, 4, 2, 4 ], [ -3, 4, 3, 4 ], [ 4, 1, 2, 2, 4, 1 ] -], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 15), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 1920), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, -26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, +], [ (1, 1), (2, 11), (4, 20) ], [ (1, 1), (2, 11), (4, 15), (8, 35), (16, 15), (32, 1) ], false, false, true, true, 1920), ([ perm"(1, 17)(2, 18)(3, 19)(4, 20)(5, 21)(6, 22)(7, 23)(8, 24)(9, 25)(10, +26)(11, 27)(12, 28)(13, 29)(14, 30)(15, 31)(16, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, 13)(6, 14)(7, 15)(8, 16)(17, 25)(18, 26)(19, 27)(20, 28)(21, 29)(22, 30)(23, 31)(24, 32)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)" ], [ [ 1, 1 ], @@ -2166,30 +2166,30 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -1, -2, 1, 2 ] -], [ (1, 1), (3, 2), (11, 10), (33, 20) ], [ (1, 1), (3, 1), (11, 1), (33, 1) ], true, true, true, true, 20) ], [ ([ perm"(1, 18)(2, 19)(3, 20)(4, 21)(5, 22)(6, 23)(7, 24)(8, 25)(9, 26)(10, 27)(11, +], [ (1, 1), (3, 2), (11, 10), (33, 20) ], [ (1, 1), (3, 1), (11, 1), (33, 1) ], true, true, true, true, 20) ], [ ([ perm"(1, 18)(2, 19)(3, 20)(4, 21)(5, 22)(6, 23)(7, 24)(8, 25)(9, 26)(10, 27)(11, 28)(12, 29)(13, 30)(14, 31)(15, 32)(16, 33)(17, 34)", perm"(1, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)" ], [ [ 1, 1 ], [ -2, 1, -2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 17), (17, 16) ], [ (1, 1), (2, 17), (17, 1), (34, 1) ], false, false, true, false, 272), ([ perm"(1, 18)(2, 19)(3, 20)(4, 21)(5, 22)(6, 23)(7, 24)(8, 25)(9, 26)(10, 27)(11, 28)(12, +], [ (1, 1), (2, 17), (17, 16) ], [ (1, 1), (2, 17), (17, 1), (34, 1) ], false, false, true, false, 272), ([ perm"(1, 18)(2, 19)(3, 20)(4, 21)(5, 22)(6, 23)(7, 24)(8, 25)(9, 26)(10, 27)(11, 28)(12, 29)(13, 30)(14, 31)(15, 32)(16, 33)(17, 34)", perm"(1, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(18, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (17, 16), (34, 16) ], [ (1, 1), (2, 1), (17, 1), (34, 1) ], true, true, true, true, 16) ], [ ([ perm"(1, 29, 22, 15, 8)(2, 30, 23, 16, 9)(3, 31, 24, 17, 10)(4, 32, 25, 18, 11)(5, +], [ (1, 1), (2, 1), (17, 16), (34, 16) ], [ (1, 1), (2, 1), (17, 1), (34, 1) ], true, true, true, true, 16) ], [ ([ perm"(1, 29, 22, 15, 8)(2, 30, 23, 16, 9)(3, 31, 24, 17, 10)(4, 32, 25, 18, 11)(5, 33, 26, 19, 12)(6, 34, 27, 20, 13)(7, 35, 28, 21, 14)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)" ], [ [ 1, 1, 1, 1, 1 ], [ -1, -2, 1, 2 ], [ -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -1, -2, 1, 2 ] -], [ (1, 1), (5, 4), (7, 6), (35, 24) ], [ (1, 1), (5, 1), (7, 1), (35, 1) ], true, true, true, true, 24) ], [ ([ perm"(1, 28, 10, 19)(2, 29, 11, 20)(3, 30, 12, 21)(4, 31, 13, 22)(5, 32, 14, 23)(6, -33, 15, 24)(7, 34, 16, 25)(8, 35, 17, 26)(9, 36, 18, 27)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, -36)", perm"(1, 8, 5, 2, 9, 6, 3, 7, 4)(10, 17, 14, 11, 18, 15, 12, 16, 13)(19, 22, 25, 21, 24, 27, 20, 23, 26)(28, 31, 34, 30, 33, 36, 29, 32, 35)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, +], [ (1, 1), (5, 4), (7, 6), (35, 24) ], [ (1, 1), (5, 1), (7, 1), (35, 1) ], true, true, true, true, 24) ], [ ([ perm"(1, 28, 10, 19)(2, 29, 11, 20)(3, 30, 12, 21)(4, 31, 13, 22)(5, 32, 14, 23)(6, +33, 15, 24)(7, 34, 16, 25)(8, 35, 17, 26)(9, 36, 18, 27)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, +36)", perm"(1, 8, 5, 2, 9, 6, 3, 7, 4)(10, 17, 14, 11, 18, 15, 12, 16, 13)(19, 22, 25, 21, 24, 27, 20, 23, 26)(28, 31, 34, 30, 33, 36, 29, 32, 35)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -2201,9 +2201,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, -1, 2 ], [ -1, -3, 1, -3 ], [ 3, 3, 3, 4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 18), (6, 2), (9, 6), (18, 6) ], [ (1, 1), (2, 1), (3, 1), (4, 9), (6, 1), (9, 1), (12, 3), (18, 1), (36, 1) ], false, false, true, false, 108), ([ perm"(1, 22, 4, -19)(2, 23, 5, 20)(3, 24, 6, 21)(7, 28, 10, 25)(8, 29, 11, 26)(9, 30, 12, 27)(13, 34, 16, 31)(14, 35, 17, 32)(15, 36, 18, 33)", perm"(1, 15, 9, 3, 14, 8, 2, 13, 7)(4, 18, 12, 6, 17, 11, 5, 16, 10)(19, -33, 27, 21, 32, 26, 20, 31, 25)(22, 36, 30, 24, 35, 29, 23, 34, 28)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, +], [ (1, 1), (2, 1), (3, 2), (4, 18), (6, 2), (9, 6), (18, 6) ], [ (1, 1), (2, 1), (3, 1), (4, 9), (6, 1), (9, 1), (12, 3), (18, 1), (36, 1) ], false, false, true, false, 108), ([ perm"(1, 22, 4, +19)(2, 23, 5, 20)(3, 24, 6, 21)(7, 28, 10, 25)(8, 29, 11, 26)(9, 30, 12, 27)(13, 34, 16, 31)(14, 35, 17, 32)(15, 36, 18, 33)", perm"(1, 15, 9, 3, 14, 8, 2, 13, 7)(4, 18, 12, 6, 17, 11, 5, 16, 10)(19, +33, 27, 21, 32, 26, 20, 31, 25)(22, 36, 30, 24, 35, 29, 23, 34, 28)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)" ], [ [ 1, 1, 1, 1 ], [ 3, 3 ], @@ -2215,9 +2215,9 @@ perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, 14)(11, 15)(12, 16)(17, 21)(18, 22)(19, [ -1, -1, 3 ], [ -1, -2, 1, 2 ], [ 2, 2, 2, -4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (9, 6), (12, 4), (18, 6), (36, 12) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (9, 1), (12, 1), (18, 1), (36, 1) ], true, true, true, true, 12), ([ -perm"(1, 33, 21, 9, 29, 17, 5, 25, 13)(2, 34, 22, 10, 30, 18, 6, 26, 14)(3, 35, 23, 11, 31, 19, 7, 27, 15)(4, 36, 24, 12, 32, 20, 8, 28, 16)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 21, -17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 28)(26, +], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (9, 6), (12, 4), (18, 6), (36, 12) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (9, 1), (12, 1), (18, 1), (36, 1) ], true, true, true, true, 12), ([ +perm"(1, 33, 21, 9, 29, 17, 5, 25, 13)(2, 34, 22, 10, 30, 18, 6, 26, 14)(3, 35, 23, 11, 31, 19, 7, 27, 15)(4, 36, 24, 12, 32, 20, 8, 28, 16)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 21, +17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 28)(26, 27)(29, 32)(30, 31)(33, 36)(34, 35)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 16)(14, 15)(17, 20)(18, 19)(21, 24)(22, 23)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)" ], [ [ 2, 2, 2 ], [ 3, 3 ], @@ -2233,8 +2233,8 @@ perm"(1, 33, 21, 9, 29, 17, 5, 25, 13)(2, 34, 22, 10, 30, 18, 6, 26, 14)(3, 35, [ -2, 3, 2, 3 ], [ 3, 4, 3, 4 ], [ 1, 3, -1, 3, 4 ] -], [ (1, 1), (2, 3), (3, 2), (6, 6), (9, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 1), (6, 3), (9, 4), (12, 1), (36, 1) ], false, false, true, false, 72), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, -24)(7, 25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, +], [ (1, 1), (2, 3), (3, 2), (6, 6), (9, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 1), (6, 3), (9, 4), (12, 1), (36, 1) ], false, false, true, false, 72), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, +24)(7, 25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 8, 5, 2, 9, 6, 3, 7, 4)(10, 17, 14, 11, 18, 15, 12, 16, 13)(19, 22, 25, 21, 24, 27, 20, 23, 26)(28, 31, 34, 30, 33, 36, 29, 32, 35)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)" ], [ [ 1, 1 ], @@ -2249,9 +2249,9 @@ perm"(1, 33, 21, 9, 29, 17, 5, 25, 13)(2, 34, 22, 10, 30, 18, 6, 26, 14)(3, 35, [ 1, -3, 1, -3 ], [ 2, -3, 2, 3 ], [ 3, 3, 3, 4 ] -], [ (1, 1), (2, 19), (3, 2), (6, 2), (9, 6), (18, 6) ], [ (1, 1), (2, 19), (3, 1), (4, 9), (6, 7), (9, 1), (12, 3), (18, 3), (36, 1) ], false, false, true, false, 108), ([ perm"(1, 19)(2, 20)(3, +], [ (1, 1), (2, 19), (3, 2), (6, 2), (9, 6), (18, 6) ], [ (1, 1), (2, 19), (3, 1), (4, 9), (6, 7), (9, 1), (12, 3), (18, 3), (36, 1) ], false, false, true, false, 108), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, 24)(7, 25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, -29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)(19, 27, 24, 21, 26, 23, 20, 25, 22)(28, 36, 33, 30, 35, 32, 29, 34, +29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)(19, 27, 24, 21, 26, 23, 20, 25, 22)(28, 36, 33, 30, 35, 32, 29, 34, 31)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2265,8 +2265,8 @@ perm"(1, 33, 21, 9, 29, 17, 5, 25, 13)(2, 34, 22, 10, 30, 18, 6, 26, 14)(3, 35, [ 1, -3, 1, 3 ], [ 2, -3, 2, 3 ], [ 3, 3, 3, -4 ] -], [ (1, 1), (2, 3), (3, 2), (6, 6), (9, 6), (18, 18) ], [ (1, 1), (2, 3), (3, 1), (4, 1), (6, 3), (9, 1), (12, 1), (18, 3), (36, 1) ], true, false, true, true, 36), ([ perm"(1, 22, 4, 19)(2, 23, 5, -20)(3, 24, 6, 21)(7, 28, 10, 25)(8, 29, 11, 26)(9, 30, 12, 27)(13, 34, 16, 31)(14, 35, 17, 32)(15, 36, 18, 33)", perm"(1, 13, 7)(2, 14, 8)(3, 15, 9)(4, 16, 10)(5, 17, 11)(6, 18, 12)(19, 31, 25)(20, +], [ (1, 1), (2, 3), (3, 2), (6, 6), (9, 6), (18, 18) ], [ (1, 1), (2, 3), (3, 1), (4, 1), (6, 3), (9, 1), (12, 1), (18, 3), (36, 1) ], true, false, true, true, 36), ([ perm"(1, 22, 4, 19)(2, 23, 5, +20)(3, 24, 6, 21)(7, 28, 10, 25)(8, 29, 11, 26)(9, 30, 12, 27)(13, 34, 16, 31)(14, 35, 17, 32)(15, 36, 18, 33)", perm"(1, 13, 7)(2, 14, 8)(3, 15, 9)(4, 16, 10)(5, 17, 11)(6, 18, 12)(19, 31, 25)(20, 32, 26)(21, 33, 27)(22, 34, 28)(23, 35, 29)(24, 36, 30)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)" ], [ [ 1, 1, 1, 1 ], @@ -2282,9 +2282,9 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21) [ -1, -2, 1, 2 ], [ -1, -4, 1, -4 ], [ -2, -4, 2, 4 ] -], [ (1, 1), (2, 1), (3, 8), (4, 6), (6, 8), (12, 12) ], [ (1, 1), (2, 1), (3, 4), (4, 3), (6, 4), (9, 1), (12, 4), (18, 1), (36, 1) ], false, false, true, false, 24), ([ perm"(1, 28, 10, 19)(2, 29, -11, 20)(3, 30, 12, 21)(4, 31, 13, 22)(5, 32, 14, 23)(6, 33, 15, 24)(7, 34, 16, 25)(8, 35, 17, 26)(9, 36, 18, 27)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, -29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 22, 25)(20, 23, 26)(21, 24, 27)(28, 31, 34)(29, 32, 35)(30, 33, +], [ (1, 1), (2, 1), (3, 8), (4, 6), (6, 8), (12, 12) ], [ (1, 1), (2, 1), (3, 4), (4, 3), (6, 4), (9, 1), (12, 4), (18, 1), (36, 1) ], false, false, true, false, 24), ([ perm"(1, 28, 10, 19)(2, 29, +11, 20)(3, 30, 12, 21)(4, 31, 13, 22)(5, 32, 14, 23)(6, 33, 15, 24)(7, 34, 16, 25)(8, 35, 17, 26)(9, 36, 18, 27)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, +29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 22, 25)(20, 23, 26)(21, 24, 27)(28, 31, 34)(29, 32, 35)(30, 33, 36)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -2300,8 +2300,8 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21) [ -1, -4, 1, -4 ], [ -3, -4, 3, 4 ] ], [ (1, 1), (2, 1), (3, 8), (4, 18), (6, 8) ], [ (1, 1), (2, 1), (3, 4), (4, 9), (6, 4), (9, 1), (12, 12), (18, 1), (36, 1) ], false, false, true, false, 864), ([ perm"(1, 20, 2, 19)(3, 22, 4, 21)(5, -24, 6, 23)(7, 26, 8, 25)(9, 28, 10, 27)(11, 30, 12, 29)(13, 32, 14, 31)(15, 34, 16, 33)(17, 36, 18, 35)", perm"(1, 13, 7)(2, 14, 8)(3, 15, 9)(4, 16, 10)(5, 17, 11)(6, 18, 12)(19, 31, 25)(20, 32, -26)(21, 33, 27)(22, 34, 28)(23, 35, 29)(24, 36, 30)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)", +24, 6, 23)(7, 26, 8, 25)(9, 28, 10, 27)(11, 30, 12, 29)(13, 32, 14, 31)(15, 34, 16, 33)(17, 36, 18, 35)", perm"(1, 13, 7)(2, 14, 8)(3, 15, 9)(4, 16, 10)(5, 17, 11)(6, 18, 12)(19, 31, 25)(20, 32, +26)(21, 33, 27)(22, 34, 28)(23, 35, 29)(24, 36, 30)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, 12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2 ], @@ -2317,8 +2317,8 @@ perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] ], [ (1, 1), (2, 1), (3, 8), (4, 2), (6, 8), (12, 16) ], [ (1, 1), (2, 1), (3, 4), (4, 1), (6, 4), (9, 1), (12, 4), (18, 1), (36, 1) ], true, false, true, true, 96), ([ perm"(1, 28, 10, 19)(2, 29, 11, -20)(3, 30, 12, 21)(4, 31, 13, 22)(5, 32, 14, 23)(6, 33, 15, 24)(7, 34, 16, 25)(8, 35, 17, 26)(9, 36, 18, 27)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, -30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 33, 35)(29, 31, 36)(30, 32, 34)", +20)(3, 30, 12, 21)(4, 31, 13, 22)(5, 32, 14, 23)(6, 33, 15, 24)(7, 34, 16, 25)(8, 35, 17, 26)(9, 36, 18, 27)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, +30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 33, 35)(29, 31, 36)(30, 32, 34)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)(19, 23, 27)(20, 24, 25)(21, 22, 26)(28, 36, 32)(29, 34, 33)(30, 35, 31)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -2335,9 +2335,9 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)(19, 23, 27) [ 2, -4, 2, -4 ], [ -3, -4, 3, 4 ], [ 1, -3, -1, -3, 4 ] -], [ (1, 1), (2, 9), (3, 8), (4, 18) ], [ (1, 1), (2, 9), (3, 4), (4, 9), (6, 12), (9, 1), (18, 1), (36, 1) ], false, false, true, false, 144), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, 24)(7, -25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, -32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)", perm"(1, 3, 2)(4, +], [ (1, 1), (2, 9), (3, 8), (4, 18) ], [ (1, 1), (2, 9), (3, 4), (4, 9), (6, 12), (9, 1), (18, 1), (36, 1) ], false, false, true, false, 144), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, 24)(7, +25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, +32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 13, 16)(11, 14, 17)(12, 15, 18)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2356,9 +2356,9 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)(19, 23, 27) [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 15), (3, 8), (6, 12) ], [ (1, 1), (2, 15), (3, 4), (4, 9), (6, 20), (9, 1), (12, 6), (18, 3), (36, 1) ], false, false, true, false, 72), ([ perm"(1, 25, 13)(2, 26, 14)(3, 27, 15)(4, -28, 16)(5, 29, 17)(6, 30, 18)(7, 31, 19)(8, 32, 20)(9, 33, 21)(10, 34, 22)(11, 35, 23)(12, 36, 24)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, -33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 28)(26, 27)(29, 32)(30, 31)(33, 36)(34, 35)", perm"(1, +], [ (1, 1), (2, 15), (3, 8), (6, 12) ], [ (1, 1), (2, 15), (3, 4), (4, 9), (6, 20), (9, 1), (12, 6), (18, 3), (36, 1) ], false, false, true, false, 72), ([ perm"(1, 25, 13)(2, 26, 14)(3, 27, 15)(4, +28, 16)(5, 29, 17)(6, 30, 18)(7, 31, 19)(8, 32, 20)(9, 33, 21)(10, 34, 22)(11, 35, 23)(12, 36, 24)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, +33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 28)(26, 27)(29, 32)(30, 31)(33, 36)(34, 35)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 16)(14, 15)(17, 20)(18, 19)(21, 24)(22, 23)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)" ], [ [ 1, 1, 1 ], [ 2, 2, 2 ], @@ -2375,9 +2375,9 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)(19, 23, 27) [ -2, 3, 2, 3 ], [ 3, 4, 3, 4 ], [ 1, 3, -1, 3, 4 ] -], [ (1, 1), (2, 3), (3, 26), (6, 6) ], [ (1, 1), (2, 3), (3, 13), (4, 1), (6, 3), (9, 4), (12, 4), (36, 1) ], false, false, true, false, 144), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, 24)(7, -25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, -32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)", perm"(1, 3, 2)(4, +], [ (1, 1), (2, 3), (3, 26), (6, 6) ], [ (1, 1), (2, 3), (3, 13), (4, 1), (6, 3), (9, 4), (12, 4), (36, 1) ], false, false, true, false, 144), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, 24)(7, +25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, +32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2396,8 +2396,8 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)(19, 23, 27) [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 7), (3, 8), (6, 20) ], [ (1, 1), (2, 7), (3, 4), (4, 3), (6, 12), (9, 1), (12, 4), (18, 3), (36, 1) ], false, false, true, false, 24), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, -24)(7, 25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, +], [ (1, 1), (2, 7), (3, 8), (6, 20) ], [ (1, 1), (2, 7), (3, 4), (4, 3), (6, 12), (9, 1), (12, 4), (18, 3), (36, 1) ], false, false, true, false, 24), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, 23)(6, +24)(7, 25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, 30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 22, 25)(20, 23, 26)(21, 24, 27)(28, 31, 34)(29, 32, 35)(30, 33, 36)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 20, 21)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)" ], [ [ 1, 1 ], @@ -2417,9 +2417,9 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 11, 12)(13, 14, 15)(16, 17, 18)(19, 23, 27) [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 19), (3, 8), (6, 8) ], [ (1, 1), (2, 19), (3, 4), (4, 9), (6, 28), (9, 1), (12, 12), (18, 3), (36, 1) ], false, false, true, false, 864), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, -23)(6, 24)(7, 25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, -30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)", +], [ (1, 1), (2, 19), (3, 8), (6, 8) ], [ (1, 1), (2, 19), (3, 4), (4, 9), (6, 28), (9, 1), (12, 12), (18, 3), (36, 1) ], false, false, true, false, 864), ([ perm"(1, 19)(2, 20)(3, 21)(4, 22)(5, +23)(6, 24)(7, 25)(8, 26)(9, 27)(10, 28)(11, 29)(12, 30)(13, 31)(14, 32)(15, 33)(16, 34)(17, 35)(18, 36)", perm"(1, 10)(2, 11)(3, 12)(4, 13)(5, 14)(6, 15)(7, 16)(8, 17)(9, 18)(19, 28)(20, 29)(21, +30)(22, 31)(23, 32)(24, 33)(25, 34)(26, 35)(27, 36)", perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2438,25 +2438,25 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) [ 1, -4, 1, 4 ], [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 3), (3, 8), (6, 24) ], [ (1, 1), (2, 3), (3, 4), (4, 1), (6, 12), (9, 1), (12, 4), (18, 3), (36, 1) ], true, false, true, true, 288) ], [ ([ perm"(1, 37, 36, 35, 34, 33, 32, 31, 30, +], [ (1, 1), (2, 3), (3, 8), (6, 24) ], [ (1, 1), (2, 3), (3, 4), (4, 1), (6, 12), (9, 1), (12, 4), (18, 3), (36, 1) ], true, false, true, true, 288) ], [ ([ perm"(1, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (37, 36) ], [ (1, 1), (37, 1) ], true, true, true, true, 36) ], [ ([ perm"(1, 20)(2, 21)(3, 22)(4, 23)(5, 24)(6, 25)(7, 26)(8, 27)(9, 28)(10, 29)(11, 30)(12, 31)(13, 32)(14, 33)(15, +], [], [ (1, 1), (37, 36) ], [ (1, 1), (37, 1) ], true, true, true, true, 36) ], [ ([ perm"(1, 20)(2, 21)(3, 22)(4, 23)(5, 24)(6, 25)(7, 26)(8, 27)(9, 28)(10, 29)(11, 30)(12, 31)(13, 32)(14, 33)(15, 34)(16, 35)(17, 36)(18, 37)(19, 38)", perm"(1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)" ], [ [ 1, 1 ], [ -2, 1, -2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 19), (19, 18) ], [ (1, 1), (2, 19), (19, 1), (38, 1) ], false, false, true, false, 342), ([ perm"(1, 20)(2, 21)(3, 22)(4, 23)(5, 24)(6, 25)(7, 26)(8, 27)(9, 28)(10, 29)(11, 30)(12, -31)(13, 32)(14, 33)(15, 34)(16, 35)(17, 36)(18, 37)(19, 38)", perm"(1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(20, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, +], [ (1, 1), (2, 19), (19, 18) ], [ (1, 1), (2, 19), (19, 1), (38, 1) ], false, false, true, false, 342), ([ perm"(1, 20)(2, 21)(3, 22)(4, 23)(5, 24)(6, 25)(7, 26)(8, 27)(9, 28)(10, 29)(11, 30)(12, +31)(13, 32)(14, 33)(15, 34)(16, 35)(17, 36)(18, 37)(19, 38)", perm"(1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(20, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (19, 18), (38, 18) ], [ (1, 1), (2, 1), (19, 1), (38, 1) ], true, true, true, true, 18) ], [ ([ perm"(1, 27, 14)(2, 28, 15)(3, 29, 16)(4, 30, 17)(5, 31, 18)(6, 32, 19)(7, 33, +], [ (1, 1), (2, 1), (19, 18), (38, 18) ], [ (1, 1), (2, 1), (19, 1), (38, 1) ], true, true, true, true, 18) ], [ ([ perm"(1, 27, 14)(2, 28, 15)(3, 29, 16)(4, 30, 17)(5, 31, 18)(6, 32, 19)(7, 33, 20)(8, 34, 21)(9, 35, 22)(10, 36, 23)(11, 37, 24)(12, 38, 25)(13, 39, 26)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 24, 21, 18, 15, 25, 22, 19, 16, 26, 23, 20, 17)(27, 31, 35, 39, 30, 34, 38, 29, 33, 37, 28, 32, 36)" ], [ [ 1, 1, 1 ], @@ -2465,8 +2465,8 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) ], [ [ -2, -1, -2, -1, -2, -1 ], [ 2, -1, -2, 1, 2, 2 ] -], [ (1, 1), (3, 26), (13, 12) ], [ (1, 1), (3, 13), (13, 1), (39, 1) ], false, false, true, false, 156), ([ perm"(1, 27, 14)(2, 28, 15)(3, 29, 16)(4, 30, 17)(5, 31, 18)(6, 32, 19)(7, 33, 20)(8, 34, -21)(9, 35, 22)(10, 36, 23)(11, 37, 24)(12, 38, 25)(13, 39, 26)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15)(27, 39, 38, 37, 36, 35, 34, 33, +], [ (1, 1), (3, 26), (13, 12) ], [ (1, 1), (3, 13), (13, 1), (39, 1) ], false, false, true, false, 156), ([ perm"(1, 27, 14)(2, 28, 15)(3, 29, 16)(4, 30, 17)(5, 31, 18)(6, 32, 19)(7, 33, 20)(8, 34, +21)(9, 35, 22)(10, 36, 23)(11, 37, 24)(12, 38, 25)(13, 39, 26)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15)(27, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28)" ], [ [ 1, 1, 1 ], [ -1, -2, 1, 2 ], @@ -2474,8 +2474,8 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) ], [ [ -1, -2, 1, 2 ] ], [ (1, 1), (3, 2), (13, 12), (39, 24) ], [ (1, 1), (3, 1), (13, 1), (39, 1) ], true, true, true, true, 24) ], [ ([ perm"(1, 36, 16, 26, 6, 31, 11, 21)(2, 37, 17, 27, 7, 32, 12, 22)(3, 38, 18, 28, 8, -33, 13, 23)(4, 39, 19, 29, 9, 34, 14, 24)(5, 40, 20, 30, 10, 35, 15, 25)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, 10, 15)(21, 36, 26, 31)(22, 37, 27, 32)(23, 38, 28, -33)(24, 39, 29, 34)(25, 40, 30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", +33, 13, 23)(4, 39, 19, 29, 9, 34, 14, 24)(5, 40, 20, 30, 10, 35, 15, 25)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, 10, 15)(21, 36, 26, 31)(22, 37, 27, 32)(23, 38, 28, +33)(24, 39, 29, 34)(25, 40, 30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)" ], [ [ 2, 2, 2, 2 ], [ 3, 3 ], @@ -2487,10 +2487,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -1, -1, 2 ], [ 2, 1, 1, 3 ], [ -1, -4, 1, -4 ] -], [ (1, 1), (2, 1), (4, 2), (5, 4), (8, 20), (10, 4), (20, 8) ], [ (1, 1), (2, 1), (4, 1), (5, 1), (8, 5), (10, 1), (20, 1), (40, 1) ], false, false, true, false, 80), ([ perm"(1, 24, 4, 22, 2, 23, -3, 21)(5, 28, 8, 26, 6, 27, 7, 25)(9, 32, 12, 30, 10, 31, 11, 29)(13, 36, 16, 34, 14, 35, 15, 33)(17, 40, 20, 38, 18, 39, 19, 37)", perm"(1, 17, 13, 9, 5)(2, 18, 14, 10, 6)(3, 19, 15, 11, 7)(4, 20, -16, 12, 8)(21, 37, 33, 29, 25)(22, 38, 34, 30, 26)(23, 39, 35, 31, 27)(24, 40, 36, 32, 28)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, -27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, +], [ (1, 1), (2, 1), (4, 2), (5, 4), (8, 20), (10, 4), (20, 8) ], [ (1, 1), (2, 1), (4, 1), (5, 1), (8, 5), (10, 1), (20, 1), (40, 1) ], false, false, true, false, 80), ([ perm"(1, 24, 4, 22, 2, 23, +3, 21)(5, 28, 8, 26, 6, 27, 7, 25)(9, 32, 12, 30, 10, 31, 11, 29)(13, 36, 16, 34, 14, 35, 15, 33)(17, 40, 20, 38, 18, 39, 19, 37)", perm"(1, 17, 13, 9, 5)(2, 18, 14, 10, 6)(3, 19, 15, 11, 7)(4, 20, +16, 12, 8)(21, 37, 33, 29, 25)(22, 38, 34, 30, 26)(23, 39, 35, 31, 27)(24, 40, 36, 32, 28)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, +27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)" ], [ [ 2, 2, 2, 2, 2 ], [ 3, 3, 3, 3 ], @@ -2502,10 +2502,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -1, -1, 3 ], [ 3, 1, 1, 4 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (4, 2), (5, 4), (8, 4), (10, 4), (20, 8), (40, 16) ], [ (1, 1), (2, 1), (4, 1), (5, 1), (8, 1), (10, 1), (20, 1), (40, 1) ], true, true, true, true, 16), ([ perm"(1, 36, 16, 26, -6, 31, 11, 21)(2, 37, 17, 27, 7, 32, 12, 22)(3, 38, 18, 28, 8, 33, 13, 23)(4, 39, 19, 29, 9, 34, 14, 24)(5, 40, 20, 30, 10, 35, 15, 25)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, -14)(5, 20, 10, 15)(21, 36, 26, 31)(22, 37, 27, 32)(23, 38, 28, 33)(24, 39, 29, 34)(25, 40, 30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, -28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 12, 13, 14, 15)(16, 17, 18, 19, 20)(21, 24, 22, 25, 23)(26, 29, 27, 30, 28)(31, 33, 35, 32, +], [ (1, 1), (2, 1), (4, 2), (5, 4), (8, 4), (10, 4), (20, 8), (40, 16) ], [ (1, 1), (2, 1), (4, 1), (5, 1), (8, 1), (10, 1), (20, 1), (40, 1) ], true, true, true, true, 16), ([ perm"(1, 36, 16, 26, +6, 31, 11, 21)(2, 37, 17, 27, 7, 32, 12, 22)(3, 38, 18, 28, 8, 33, 13, 23)(4, 39, 19, 29, 9, 34, 14, 24)(5, 40, 20, 30, 10, 35, 15, 25)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, +14)(5, 20, 10, 15)(21, 36, 26, 31)(22, 37, 27, 32)(23, 38, 28, 33)(24, 39, 29, 34)(25, 40, 30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, +28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 12, 13, 14, 15)(16, 17, 18, 19, 20)(21, 24, 22, 25, 23)(26, 29, 27, 30, 28)(31, 33, 35, 32, 34)(36, 38, 40, 37, 39)" ], [ [ 2, 2, 2, 2 ], [ 3, 3 ], @@ -2520,9 +2520,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, -4, 2, -4 ], [ 1, -4, -1, -4, -4 ] ], [ (1, 1), (2, 1), (4, 10), (5, 4), (8, 20), (10, 4) ], [ (1, 1), (2, 1), (4, 5), (5, 1), (8, 5), (10, 1), (20, 1), (40, 1) ], false, false, true, false, 40), ([ perm"(1, 26, 6, 21)(2, 27, 7, 22)(3, -28, 8, 23)(4, 29, 9, 24)(5, 30, 10, 25)(11, 36, 16, 31)(12, 37, 17, 32)(13, 38, 18, 33)(14, 39, 19, 34)(15, 40, 20, 35)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, 10, -15)(21, 31, 26, 36)(22, 32, 27, 37)(23, 33, 28, 38)(24, 34, 29, 39)(25, 35, 30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, -30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, +28, 8, 23)(4, 29, 9, 24)(5, 30, 10, 25)(11, 36, 16, 31)(12, 37, 17, 32)(13, 38, 18, 33)(14, 39, 19, 34)(15, 40, 20, 35)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, 10, +15)(21, 31, 26, 36)(22, 32, 27, 37)(23, 33, 28, 38)(24, 34, 29, 39)(25, 35, 30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, +30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -2539,10 +2539,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -1, -2, 1, -2 ], [ -1, -4, 1, -4 ], [ -2, -4, 2, 4 ] -], [ (1, 1), (2, 1), (4, 22), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 1), (4, 11), (5, 1), (8, 5), (10, 1), (20, 3), (40, 1) ], false, false, true, false, 160), ([ perm"(1, 21)(2, 22)(3, 23)(4, -24)(5, 25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, -10, 15)(21, 36, 26, 31)(22, 37, 27, 32)(23, 38, 28, 33)(24, 39, 29, 34)(25, 40, 30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, -29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, +], [ (1, 1), (2, 1), (4, 22), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 1), (4, 11), (5, 1), (8, 5), (10, 1), (20, 3), (40, 1) ], false, false, true, false, 160), ([ perm"(1, 21)(2, 22)(3, 23)(4, +24)(5, 25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, +10, 15)(21, 36, 26, 31)(22, 37, 27, 32)(23, 38, 28, 33)(24, 39, 29, 34)(25, 40, 30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, +29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -2557,10 +2557,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, 1, 2, 1 ], [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ] -], [ (1, 1), (2, 11), (4, 12), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 11), (4, 11), (5, 1), (8, 5), (10, 3), (20, 3), (40, 1) ], false, false, true, false, 80), ([ perm"(1, 21)(2, 22)(3, 23)(4, -24)(5, 25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, -10, 15)(21, 31, 26, 36)(22, 32, 27, 37)(23, 33, 28, 38)(24, 34, 29, 39)(25, 35, 30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, -29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, +], [ (1, 1), (2, 11), (4, 12), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 11), (4, 11), (5, 1), (8, 5), (10, 3), (20, 3), (40, 1) ], false, false, true, false, 80), ([ perm"(1, 21)(2, 22)(3, 23)(4, +24)(5, 25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 16, 6, 11)(2, 17, 7, 12)(3, 18, 8, 13)(4, 19, 9, 14)(5, 20, +10, 15)(21, 31, 26, 36)(22, 32, 27, 37)(23, 33, 28, 38)(24, 34, 29, 39)(25, 35, 30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, +29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -2575,10 +2575,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, 1, -2, 1 ], [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ] -], [ (1, 1), (2, 21), (4, 2), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 21), (4, 11), (5, 1), (8, 5), (10, 5), (20, 3), (40, 1) ], false, false, true, false, 160), ([ perm"(1, 26, 6, 21)(2, 27, 7, -22)(3, 28, 8, 23)(4, 29, 9, 24)(5, 30, 10, 25)(11, 36, 16, 31)(12, 37, 17, 32)(13, 38, 18, 33)(14, 39, 19, 34)(15, 40, 20, 35)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, -19)(10, 20)(21, 31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, -29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, +], [ (1, 1), (2, 21), (4, 2), (5, 4), (10, 4), (20, 8) ], [ (1, 1), (2, 21), (4, 11), (5, 1), (8, 5), (10, 5), (20, 3), (40, 1) ], false, false, true, false, 160), ([ perm"(1, 26, 6, 21)(2, 27, 7, +22)(3, 28, 8, 23)(4, 29, 9, 24)(5, 30, 10, 25)(11, 36, 16, 31)(12, 37, 17, 32)(13, 38, 18, 33)(14, 39, 19, 34)(15, 40, 20, 35)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, +19)(10, 20)(21, 31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, +29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -2593,10 +2593,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -1, 2, 1, 2 ], [ -1, -4, 1, -4 ], [ 2, -4, 2, 4 ] -], [ (1, 1), (2, 3), (4, 20), (5, 4), (10, 12) ], [ (1, 1), (2, 3), (4, 11), (5, 1), (8, 5), (10, 3), (20, 3), (40, 1) ], false, false, true, false, 160), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, -25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, -20)(21, 36)(22, 37)(23, 38)(24, 39)(25, 40)(26, 31)(27, 32)(28, 33)(29, 34)(30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, -30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, +], [ (1, 1), (2, 3), (4, 20), (5, 4), (10, 12) ], [ (1, 1), (2, 3), (4, 11), (5, 1), (8, 5), (10, 3), (20, 3), (40, 1) ], false, false, true, false, 160), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, +25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, +20)(21, 36)(22, 37)(23, 38)(24, 39)(25, 40)(26, 31)(27, 32)(28, 33)(29, 34)(30, 35)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, +30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2615,9 +2615,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ], [ 1, 2, 1, 2, 3 ] -], [ (1, 1), (2, 13), (4, 10), (5, 4), (10, 12) ], [ (1, 1), (2, 13), (4, 11), (5, 1), (8, 5), (10, 5), (20, 3), (40, 1) ], false, false, true, false, 80), ([ perm"(1, 22, 2, 21)(3, 24, 4, 23)(5, 26, -6, 25)(7, 28, 8, 27)(9, 30, 10, 29)(11, 32, 12, 31)(13, 34, 14, 33)(15, 36, 16, 35)(17, 38, 18, 37)(19, 40, 20, 39)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, 20)(21, -31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, 27, 25, 23)(22, 30, 28, 26, 24)(31, +], [ (1, 1), (2, 13), (4, 10), (5, 4), (10, 12) ], [ (1, 1), (2, 13), (4, 11), (5, 1), (8, 5), (10, 5), (20, 3), (40, 1) ], false, false, true, false, 80), ([ perm"(1, 22, 2, 21)(3, 24, 4, 23)(5, 26, +6, 25)(7, 28, 8, 27)(9, 30, 10, 29)(11, 32, 12, 31)(13, 34, 14, 33)(15, 36, 16, 35)(17, 38, 18, 37)(19, 40, 20, 39)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, 20)(21, +31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, 27, 25, 23)(22, 30, 28, 26, 24)(31, 39, 37, 35, 33)(32, 40, 38, 36, 34)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -2632,10 +2632,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -1, 2, 1, 2 ], [ -1, -3, 1, 3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (4, 4), (5, 4), (10, 12), (20, 16) ], [ (1, 1), (2, 3), (4, 3), (5, 1), (8, 1), (10, 3), (20, 3), (40, 1) ], true, false, true, true, 32), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, -25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, -20)(21, 32)(22, 31)(23, 34)(24, 33)(25, 36)(26, 35)(27, 38)(28, 37)(29, 40)(30, 39)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, 27, 25, 23)(22, 30, 28, 26, -24)(31, 39, 37, 35, 33)(32, 40, 38, 36, 34)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, +], [ (1, 1), (2, 3), (4, 4), (5, 4), (10, 12), (20, 16) ], [ (1, 1), (2, 3), (4, 3), (5, 1), (8, 1), (10, 3), (20, 3), (40, 1) ], true, false, true, true, 32), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, +25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, +20)(21, 32)(22, 31)(23, 34)(24, 33)(25, 36)(26, 35)(27, 38)(28, 37)(29, 40)(30, 39)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, 27, 25, 23)(22, 30, 28, 26, +24)(31, 39, 37, 35, 33)(32, 40, 38, 36, 34)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2654,10 +2654,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 2, 4, 2, 4 ], [ -3, 4, 3, 4 ], [ 1, 2, 1, 2, 4 ] -], [ (1, 1), (2, 5), (4, 2), (5, 4), (10, 20), (20, 8) ], [ (1, 1), (2, 5), (4, 3), (5, 1), (8, 1), (10, 5), (20, 3), (40, 1) ], false, false, true, true, 32), ([ perm"(1, 22, 2, 21)(3, 24, 4, 23)(5, -26, 6, 25)(7, 28, 8, 27)(9, 30, 10, 29)(11, 32, 12, 31)(13, 34, 14, 33)(15, 36, 16, 35)(17, 38, 18, 37)(19, 40, 20, 39)", perm"(1, 12, 2, 11)(3, 14, 4, 13)(5, 16, 6, 15)(7, 18, 8, 17)(9, 20, 10, -19)(21, 31, 22, 32)(23, 33, 24, 34)(25, 35, 26, 36)(27, 37, 28, 38)(29, 39, 30, 40)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, 27, 25, 23)(22, 30, 28, 26, -24)(31, 39, 37, 35, 33)(32, 40, 38, 36, 34)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, +], [ (1, 1), (2, 5), (4, 2), (5, 4), (10, 20), (20, 8) ], [ (1, 1), (2, 5), (4, 3), (5, 1), (8, 1), (10, 5), (20, 3), (40, 1) ], false, false, true, true, 32), ([ perm"(1, 22, 2, 21)(3, 24, 4, 23)(5, +26, 6, 25)(7, 28, 8, 27)(9, 30, 10, 29)(11, 32, 12, 31)(13, 34, 14, 33)(15, 36, 16, 35)(17, 38, 18, 37)(19, 40, 20, 39)", perm"(1, 12, 2, 11)(3, 14, 4, 13)(5, 16, 6, 15)(7, 18, 8, 17)(9, 20, 10, +19)(21, 31, 22, 32)(23, 33, 24, 34)(25, 35, 26, 36)(27, 37, 28, 38)(29, 39, 30, 40)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, 27, 25, 23)(22, 30, 28, 26, +24)(31, 39, 37, 35, 33)(32, 40, 38, 36, 34)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -2674,10 +2674,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -1, -2, 1, -2 ], [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] -], [ (1, 1), (2, 1), (4, 6), (5, 4), (10, 4), (20, 24) ], [ (1, 1), (2, 1), (4, 3), (5, 1), (8, 1), (10, 1), (20, 3), (40, 1) ], false, false, true, true, 96), ([ perm"(1, 26, 6, 21)(2, 27, 7, 22)(3, -28, 8, 23)(4, 29, 9, 24)(5, 30, 10, 25)(11, 36, 16, 31)(12, 37, 17, 32)(13, 38, 18, 33)(14, 39, 19, 34)(15, 40, 20, 35)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, -20)(21, 31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, -30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 7, 8, 9, 10)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, 24, 22, 25, 23)(26, 28, 30, 27, 29)(31, 34, 32, 35, 33)(36, 38, 40, 37, +], [ (1, 1), (2, 1), (4, 6), (5, 4), (10, 4), (20, 24) ], [ (1, 1), (2, 1), (4, 3), (5, 1), (8, 1), (10, 1), (20, 3), (40, 1) ], false, false, true, true, 96), ([ perm"(1, 26, 6, 21)(2, 27, 7, 22)(3, +28, 8, 23)(4, 29, 9, 24)(5, 30, 10, 25)(11, 36, 16, 31)(12, 37, 17, 32)(13, 38, 18, 33)(14, 39, 19, 34)(15, 40, 20, 35)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, +20)(21, 31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, +30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 7, 8, 9, 10)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, 24, 22, 25, 23)(26, 28, 30, 27, 29)(31, 34, 32, 35, 33)(36, 38, 40, 37, 39)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -2694,10 +2694,10 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 2, -4, 2, 4 ], [ 3, -4, 3, -4 ], [ 1, -4, -1, -4, -4 ] -], [ (1, 1), (2, 11), (4, 20), (5, 4), (10, 4) ], [ (1, 1), (2, 11), (4, 15), (5, 1), (8, 5), (10, 3), (20, 3), (40, 1) ], false, false, true, false, 40), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, -25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, -20)(21, 31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, -30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, +], [ (1, 1), (2, 11), (4, 20), (5, 4), (10, 4) ], [ (1, 1), (2, 11), (4, 15), (5, 1), (8, 5), (10, 3), (20, 3), (40, 1) ], false, false, true, false, 40), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, +25)(6, 26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, +20)(21, 31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, +30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2716,9 +2716,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 23), (5, 4), (10, 12) ], [ (1, 1), (2, 23), (4, 31), (5, 1), (8, 5), (10, 7), (20, 7), (40, 1) ], false, false, true, false, 480), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, 25)(6, -26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, 20)(21, -31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, 30)(31, +], [ (1, 1), (2, 23), (5, 4), (10, 12) ], [ (1, 1), (2, 23), (4, 31), (5, 1), (8, 5), (10, 7), (20, 7), (40, 1) ], false, false, true, false, 480), ([ perm"(1, 21)(2, 22)(3, 23)(4, 24)(5, 25)(6, +26)(7, 27)(8, 28)(9, 29)(10, 30)(11, 31)(12, 32)(13, 33)(14, 34)(15, 35)(16, 36)(17, 37)(18, 38)(19, 39)(20, 40)", perm"(1, 11)(2, 12)(3, 13)(4, 14)(5, 15)(6, 16)(7, 17)(8, 18)(9, 19)(10, 20)(21, +31)(22, 32)(23, 33)(24, 34)(25, 35)(26, 36)(27, 37)(28, 38)(29, 39)(30, 40)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 35, 34, 33, 32)(36, 40, 39, 38, 37)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2737,11 +2737,11 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 1, -4, 1, 4 ], [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 7), (5, 4), (10, 28) ], [ (1, 1), (2, 7), (4, 7), (5, 1), (8, 1), (10, 7), (20, 7), (40, 1) ], true, false, true, true, 672) ], [ ([ perm"(1, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, +], [ (1, 1), (2, 7), (5, 4), (10, 28) ], [ (1, 1), (2, 7), (4, 7), (5, 1), (8, 1), (10, 7), (20, 7), (40, 1) ], true, false, true, true, 672) ], [ ([ perm"(1, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (41, 40) ], [ (1, 1), (41, 1) ], true, true, true, true, 40) ], [ ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, 26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, -36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, +], [], [ (1, 1), (41, 40) ], [ (1, 1), (41, 1) ], true, true, true, true, 40) ], [ ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, 26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, +36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 13, 11, 9, 14, 12, 10)(15, 18, 21, 17, 20, 16, 19)(22, 23, 24, 25, 26, 27, 28)(29, 31, 33, 35, 30, 32, 34)(36, 40, 37, 41, 38, 42, 39)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -2752,9 +2752,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, 1, 2, 1 ], [ 1, -3, 1, -3 ], [ -3, -3, -2, 3, 2 ] -], [ (1, 1), (2, 7), (3, 14), (6, 14), (7, 6) ], [ (1, 1), (2, 7), (3, 7), (6, 7), (7, 1), (14, 1), (21, 1), (42, 1) ], false, false, true, false, 42), ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, 26)(6, -27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, -14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 13, 11, 9, 14, 12, 10)(15, 18, 21, 17, 20, 16, 19)(22, 28, 27, 26, 25, 24, +], [ (1, 1), (2, 7), (3, 14), (6, 14), (7, 6) ], [ (1, 1), (2, 7), (3, 7), (6, 7), (7, 1), (14, 1), (21, 1), (42, 1) ], false, false, true, false, 42), ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, 26)(6, +27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, +14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 13, 11, 9, 14, 12, 10)(15, 18, 21, 17, 20, 16, 19)(22, 28, 27, 26, 25, 24, 23)(29, 34, 32, 30, 35, 33, 31)(36, 39, 42, 38, 41, 37, 40)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -2767,7 +2767,7 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -3, -3, -2, 3, 2 ] ], [ (1, 1), (2, 1), (3, 14), (6, 14), (7, 6), (14, 6) ], [ (1, 1), (2, 1), (3, 7), (6, 7), (7, 1), (14, 1), (21, 1), (42, 1) ], false, false, true, false, 42), ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, 26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 19, 16, 13, 10, 7, 4)(2, 20, 17, 14, 11, 8, 5)(3, 21, 18, 15, -12, 9, 6)(22, 40, 37, 34, 31, 28, 25)(23, 41, 38, 35, 32, 29, 26)(24, 42, 39, 36, 33, 30, 27)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 23, 24)(25, 26, +12, 9, 6)(22, 40, 37, 34, 31, 28, 25)(23, 41, 38, 35, 32, 29, 26)(24, 42, 39, 36, 33, 30, 27)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 23, 24)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -2779,9 +2779,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] -], [ (1, 1), (2, 3), (3, 2), (7, 6), (14, 18), (21, 12) ], [ (1, 1), (2, 3), (3, 1), (6, 1), (7, 1), (14, 3), (21, 1), (42, 1) ], false, false, true, false, 36), ([ perm"(1, 22)(2, 23)(3, 24)(4, -25)(5, 26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, -20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 23, 24, +], [ (1, 1), (2, 3), (3, 2), (7, 6), (14, 18), (21, 12) ], [ (1, 1), (2, 3), (3, 1), (6, 1), (7, 1), (14, 3), (21, 1), (42, 1) ], false, false, true, false, 36), ([ perm"(1, 22)(2, 23)(3, 24)(4, +25)(5, 26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, +20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 23, 24, 25, 26, 27, 28)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -2794,8 +2794,8 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] ], [ (1, 1), (2, 7), (3, 2), (6, 14), (7, 6), (21, 12) ], [ (1, 1), (2, 7), (3, 1), (6, 7), (7, 1), (14, 1), (21, 1), (42, 1) ], false, false, true, false, 84), ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, -26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, -13)(7, 21, 14)(22, 29, 36)(23, 30, 37)(24, 31, 38)(25, 32, 39)(26, 33, 40)(27, 34, 41)(28, 35, 42)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 23, 24, 25, +26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, +13)(7, 21, 14)(22, 29, 36)(23, 30, 37)(24, 31, 38)(25, 32, 39)(26, 33, 40)(27, 34, 41)(28, 35, 42)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 23, 24, 25, 26, 27, 28)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -2807,9 +2807,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, 1, -2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] -], [ (1, 1), (2, 21), (3, 2), (7, 6), (21, 12) ], [ (1, 1), (2, 21), (3, 1), (6, 7), (7, 1), (14, 3), (21, 1), (42, 1) ], false, false, true, false, 252), ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, -26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, -13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, +], [ (1, 1), (2, 21), (3, 2), (7, 6), (21, 12) ], [ (1, 1), (2, 21), (3, 1), (6, 7), (7, 1), (14, 3), (21, 1), (42, 1) ], false, false, true, false, 252), ([ perm"(1, 22)(2, 23)(3, 24)(4, 25)(5, +26)(6, 27)(7, 28)(8, 29)(9, 30)(10, 31)(11, 32)(12, 33)(13, 34)(14, 35)(15, 36)(16, 37)(17, 38)(18, 39)(19, 40)(20, 41)(21, 42)", perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, +13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)(36, 42, 41, 40, 39, 38, 37)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -2821,12 +2821,12 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, 3 ] -], [ (1, 1), (2, 1), (3, 2), (6, 2), (7, 6), (14, 6), (21, 12), (42, 12) ], [ (1, 1), (2, 1), (3, 1), (6, 1), (7, 1), (14, 1), (21, 1), (42, 1) ], true, true, true, true, 12) ], [ ([ perm"(1, 43, 42, +], [ (1, 1), (2, 1), (3, 2), (6, 2), (7, 6), (14, 6), (21, 12), (42, 12) ], [ (1, 1), (2, 1), (3, 1), (6, 1), (7, 1), (14, 1), (21, 1), (42, 1) ], true, true, true, true, 12) ], [ ([ perm"(1, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (43, 42) ], [ (1, 1), (43, 1) ], true, true, true, true, 42) ], [ ([ perm"(1, 34, 12, 23)(2, 35, 13, 24)(3, 36, 14, 25)(4, 37, 15, 26)(5, 38, 16, 27)(6, 39, 17, 28)(7, 40, 18, 29)(8, -41, 19, 30)(9, 42, 20, 31)(10, 43, 21, 32)(11, 44, 22, 33)", perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, 21)(11, 22)(23, 34)(24, 35)(25, 36)(26, 37)(27, 38)(28, 39)(29, -40)(30, 41)(31, 42)(32, 43)(33, 44)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)(23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)(34, 35, 36, 37, 38, 39, 40, 41, +], [], [ (1, 1), (43, 42) ], [ (1, 1), (43, 1) ], true, true, true, true, 42) ], [ ([ perm"(1, 34, 12, 23)(2, 35, 13, 24)(3, 36, 14, 25)(4, 37, 15, 26)(5, 38, 16, 27)(6, 39, 17, 28)(7, 40, 18, 29)(8, +41, 19, 30)(9, 42, 20, 31)(10, 43, 21, 32)(11, 44, 22, 33)", perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, 21)(11, 22)(23, 34)(24, 35)(25, 36)(26, 37)(27, 38)(28, 39)(29, +40)(30, 41)(31, 42)(32, 43)(33, 44)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)(23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)(34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -2836,8 +2836,8 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, ], [ [ -1, -1, 2 ], [ -1, -3, 1, -3 ] -], [ (1, 1), (2, 1), (4, 22), (11, 10), (22, 10) ], [ (1, 1), (2, 1), (4, 11), (11, 1), (22, 1), (44, 1) ], false, false, true, false, 220), ([ perm"(1, 24, 2, 23)(3, 26, 4, 25)(5, 28, 6, 27)(7, 30, -8, 29)(9, 32, 10, 31)(11, 34, 12, 33)(13, 36, 14, 35)(15, 38, 16, 37)(17, 40, 18, 39)(19, 42, 20, 41)(21, 44, 22, 43)", perm"(1, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3)(2, 22, 20, 18, 16, 14, 12, 10, 8, +], [ (1, 1), (2, 1), (4, 22), (11, 10), (22, 10) ], [ (1, 1), (2, 1), (4, 11), (11, 1), (22, 1), (44, 1) ], false, false, true, false, 220), ([ perm"(1, 24, 2, 23)(3, 26, 4, 25)(5, 28, 6, 27)(7, 30, +8, 29)(9, 32, 10, 31)(11, 34, 12, 33)(13, 36, 14, 35)(15, 38, 16, 37)(17, 40, 18, 39)(19, 42, 20, 41)(21, 44, 22, 43)", perm"(1, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3)(2, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4)(23, 43, 41, 39, 37, 35, 33, 31, 29, 27, 25)(24, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)" ], [ [ 1, 1, 1, 1 ], @@ -2848,9 +2848,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, ], [ [ -1, -1, 3 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (4, 2), (11, 10), (22, 10), (44, 20) ], [ (1, 1), (2, 1), (4, 1), (11, 1), (22, 1), (44, 1) ], true, true, true, true, 20), ([ perm"(1, 23)(2, 24)(3, 25)(4, 26)(5, 27)(6, 28)(7, -29)(8, 30)(9, 31)(10, 32)(11, 33)(12, 34)(13, 35)(14, 36)(15, 37)(16, 38)(17, 39)(18, 40)(19, 41)(20, 42)(21, 43)(22, 44)", perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, -21)(11, 22)(23, 34)(24, 35)(25, 36)(26, 37)(27, 38)(28, 39)(29, 40)(30, 41)(31, 42)(32, 43)(33, 44)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)(23, 24, 25, +], [ (1, 1), (2, 1), (4, 2), (11, 10), (22, 10), (44, 20) ], [ (1, 1), (2, 1), (4, 1), (11, 1), (22, 1), (44, 1) ], true, true, true, true, 20), ([ perm"(1, 23)(2, 24)(3, 25)(4, 26)(5, 27)(6, 28)(7, +29)(8, 30)(9, 31)(10, 32)(11, 33)(12, 34)(13, 35)(14, 36)(15, 37)(16, 38)(17, 39)(18, 40)(19, 41)(20, 42)(21, 43)(22, 44)", perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, +21)(11, 22)(23, 34)(24, 35)(25, 36)(26, 37)(27, 38)(28, 39)(29, 40)(30, 41)(31, 42)(32, 43)(33, 44)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)(23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)(34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2862,9 +2862,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 1, 2, 1, 2 ], [ 1, -3, 1, -3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 23), (11, 10), (22, 10) ], [ (1, 1), (2, 23), (4, 11), (11, 1), (22, 3), (44, 1) ], false, false, true, false, 220), ([ perm"(1, 23)(2, 24)(3, 25)(4, 26)(5, 27)(6, 28)(7, 29)(8, -30)(9, 31)(10, 32)(11, 33)(12, 34)(13, 35)(14, 36)(15, 37)(16, 38)(17, 39)(18, 40)(19, 41)(20, 42)(21, 43)(22, 44)", perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, 21)(11, -22)(23, 34)(24, 35)(25, 36)(26, 37)(27, 38)(28, 39)(29, 40)(30, 41)(31, 42)(32, 43)(33, 44)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)(23, 33, 32, 31, 30, +], [ (1, 1), (2, 23), (11, 10), (22, 10) ], [ (1, 1), (2, 23), (4, 11), (11, 1), (22, 3), (44, 1) ], false, false, true, false, 220), ([ perm"(1, 23)(2, 24)(3, 25)(4, 26)(5, 27)(6, 28)(7, 29)(8, +30)(9, 31)(10, 32)(11, 33)(12, 34)(13, 35)(14, 36)(15, 37)(16, 38)(17, 39)(18, 40)(19, 41)(20, 42)(21, 43)(22, 44)", perm"(1, 12)(2, 13)(3, 14)(4, 15)(5, 16)(6, 17)(7, 18)(8, 19)(9, 20)(10, 21)(11, +22)(23, 34)(24, 35)(25, 36)(26, 37)(27, 38)(28, 39)(29, 40)(30, 41)(31, 42)(32, 43)(33, 44)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)(23, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24)(34, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -2876,9 +2876,9 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 1, 2, 1, 2 ], [ 1, -3, 1, 3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (11, 10), (22, 30) ], [ (1, 1), (2, 3), (4, 1), (11, 1), (22, 3), (44, 1) ], true, false, true, true, 60) ], [ ([ perm"(1, 33, 18, 3, 32, 17, 2, 31, 16)(4, 36, 21, 6, 35, 20, 5, -34, 19)(7, 39, 24, 9, 38, 23, 8, 37, 22)(10, 42, 27, 12, 41, 26, 11, 40, 25)(13, 45, 30, 15, 44, 29, 14, 43, 28)", perm"(1, 13, 10, 7, 4)(2, 14, 11, 8, 5)(3, 15, 12, 9, 6)(16, 28, 25, 22, 19)(17, 29, -26, 23, 20)(18, 30, 27, 24, 21)(31, 43, 40, 37, 34)(32, 44, 41, 38, 35)(33, 45, 42, 39, 36)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, +], [ (1, 1), (2, 3), (11, 10), (22, 30) ], [ (1, 1), (2, 3), (4, 1), (11, 1), (22, 3), (44, 1) ], true, false, true, true, 60) ], [ ([ perm"(1, 33, 18, 3, 32, 17, 2, 31, 16)(4, 36, 21, 6, 35, 20, 5, +34, 19)(7, 39, 24, 9, 38, 23, 8, 37, 22)(10, 42, 27, 12, 41, 26, 11, 40, 25)(13, 45, 30, 15, 44, 29, 14, 43, 28)", perm"(1, 13, 10, 7, 4)(2, 14, 11, 8, 5)(3, 15, 12, 9, 6)(16, 28, 25, 22, 19)(17, 29, +26, 23, 20)(18, 30, 27, 24, 21)(31, 43, 40, 37, 34)(32, 44, 41, 38, 35)(33, 45, 42, 39, 36)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)" ], [ [ 2, 2, 2, 2, 2 ], [ 3, 3, 3 ], @@ -2888,8 +2888,8 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 1, 1, 1, -3 ], [ -1, -2, 1, 2 ] ], [ (1, 1), (3, 2), (5, 4), (9, 6), (15, 8), (45, 24) ], [ (1, 1), (3, 1), (5, 1), (9, 1), (15, 1), (45, 1) ], true, true, true, true, 24), ([ perm"(1, 31, 16)(2, 32, 17)(3, 33, 18)(4, 34, 19)(5, 35, -20)(6, 36, 21)(7, 37, 22)(8, 38, 23)(9, 39, 24)(10, 40, 25)(11, 41, 26)(12, 42, 27)(13, 43, 28)(14, 44, 29)(15, 45, 30)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, -22)(18, 28, 23)(19, 29, 24)(20, 30, 25)(31, 41, 36)(32, 42, 37)(33, 43, 38)(34, 44, 39)(35, 45, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, +20)(6, 36, 21)(7, 37, 22)(8, 38, 23)(9, 39, 24)(10, 40, 25)(11, 41, 26)(12, 42, 27)(13, 43, 28)(14, 44, 29)(15, 45, 30)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, +22)(18, 28, 23)(19, 29, 24)(20, 30, 25)(31, 41, 36)(32, 42, 37)(33, 43, 38)(34, 44, 39)(35, 45, 40)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 35, 34, 33, 32)(36, 40, 39, 38, 37)(41, 45, 44, 43, 42)" ], [ [ 1, 1, 1 ], [ 2, 2, 2 ], @@ -2901,7 +2901,7 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -1, -2, 1, 2 ], [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] -], [ (1, 1), (3, 8), (5, 4), (15, 32) ], [ (1, 1), (3, 4), (5, 1), (9, 1), (15, 4), (45, 1) ], true, false, true, true, 192) ], [ ([ perm"(1, 24)(2, 25)(3, 26)(4, 27)(5, 28)(6, 29)(7, 30)(8, 31)(9, +], [ (1, 1), (3, 8), (5, 4), (15, 32) ], [ (1, 1), (3, 4), (5, 1), (9, 1), (15, 4), (45, 1) ], true, false, true, true, 192) ], [ ([ perm"(1, 24)(2, 25)(3, 26)(4, 27)(5, 28)(6, 29)(7, 30)(8, 31)(9, 32)(10, 33)(11, 34)(12, 35)(13, 36)(14, 37)(15, 38)(16, 39)(17, 40)(18, 41)(19, 42)(20, 43)(21, 44)(22, 45)(23, 46)", perm"(1, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)" ], [ [ 1, 1 ], @@ -2909,22 +2909,22 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 23), (23, 22) ], [ (1, 1), (2, 23), (23, 1), (46, 1) ], false, false, true, false, 506), ([ perm"(1, 24)(2, 25)(3, 26)(4, 27)(5, 28)(6, 29)(7, 30)(8, 31)(9, 32)(10, 33)(11, 34)(12, -35)(13, 36)(14, 37)(15, 38)(16, 39)(17, 40)(18, 41)(19, 42)(20, 43)(21, 44)(22, 45)(23, 46)", perm"(1, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(24, 46, 45, 44, +], [ (1, 1), (2, 23), (23, 22) ], [ (1, 1), (2, 23), (23, 1), (46, 1) ], false, false, true, false, 506), ([ perm"(1, 24)(2, 25)(3, 26)(4, 27)(5, 28)(6, 29)(7, 30)(8, 31)(9, 32)(10, 33)(11, 34)(12, +35)(13, 36)(14, 37)(15, 38)(16, 39)(17, 40)(18, 41)(19, 42)(20, 43)(21, 44)(22, 45)(23, 46)", perm"(1, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(24, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (23, 22), (46, 22) ], [ (1, 1), (2, 1), (23, 1), (46, 1) ], true, true, true, true, 22) ], [ ([ perm"(1, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, +], [ (1, 1), (2, 1), (23, 22), (46, 22) ], [ (1, 1), (2, 1), (23, 1), (46, 1) ], true, true, true, true, 22) ], [ ([ perm"(1, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (47, 46) ], [ (1, 1), (47, 1) ], true, true, true, true, 46) ], [ ([ perm"(1, 46, 22, 34, 10, 40, 16, 28, 4, 43, 19, 31, 7, 37, 13, 25)(2, 47, 23, 35, 11, 41, 17, 29, 5, 44, 20, 32, -8, 38, 14, 26)(3, 48, 24, 36, 12, 42, 18, 30, 6, 45, 21, 33, 9, 39, 15, 27)", perm"(1, 22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 46, 34, 40, 28, 43, 31, -37)(26, 47, 35, 41, 29, 44, 32, 38)(27, 48, 36, 42, 30, 45, 33, 39)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, -36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, -36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, +], [], [ (1, 1), (47, 46) ], [ (1, 1), (47, 1) ], true, true, true, true, 46) ], [ ([ perm"(1, 46, 22, 34, 10, 40, 16, 28, 4, 43, 19, 31, 7, 37, 13, 25)(2, 47, 23, 35, 11, 41, 17, 29, 5, 44, 20, 32, +8, 38, 14, 26)(3, 48, 24, 36, 12, 42, 18, 30, 6, 45, 21, 33, 9, 39, 15, 27)", perm"(1, 22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 46, 34, 40, 28, 43, 31, +37)(26, 47, 35, 41, 29, 44, 32, 38)(27, 48, 36, 42, 30, 45, 33, 39)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, +36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, +36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 3, 3, 3, 3 ], [ 4, 4 ], @@ -2938,11 +2938,11 @@ perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, [ 2, 1, 1, -3 ], [ 3, 2, 2, 4 ], [ -1, -5, 1, -5 ] -], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (16, 24), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 1), (12, 1), (16, 3), (24, 1), (48, 1) ], false, false, true, false, -48), ([ perm"(1, 32, 8, 28, 4, 30, 6, 26, 2, 31, 7, 27, 3, 29, 5, 25)(9, 40, 16, 36, 12, 38, 14, 34, 10, 39, 15, 35, 11, 37, 13, 33)(17, 48, 24, 44, 20, 46, 22, 42, 18, 47, 23, 43, 19, 45, 21, 41)", -perm"(1, 17, 9)(2, 18, 10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 41, 33)(26, 42, 34)(27, 43, 35)(28, 44, 36)(29, 45, 37)(30, 46, 38)(31, 47, 39)(32, 48, 40)", perm"(1, -8, 4, 6, 2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, 13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)(33, 40, 36, 38, 34, 39, 35, 37)(41, 48, 44, 46, 42, 47, 43, 45)", perm"(1, 4, 2, -3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, +], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (16, 24), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 1), (12, 1), (16, 3), (24, 1), (48, 1) ], false, false, true, false, +48), ([ perm"(1, 32, 8, 28, 4, 30, 6, 26, 2, 31, 7, 27, 3, 29, 5, 25)(9, 40, 16, 36, 12, 38, 14, 34, 10, 39, 15, 35, 11, 37, 13, 33)(17, 48, 24, 44, 20, 46, 22, 42, 18, 47, 23, 43, 19, 45, 21, 41)", +perm"(1, 17, 9)(2, 18, 10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 41, 33)(26, 42, 34)(27, 43, 35)(28, 44, 36)(29, 45, 37)(30, 46, 38)(31, 47, 39)(32, 48, 40)", perm"(1, +8, 4, 6, 2, 7, 3, 5)(9, 16, 12, 14, 10, 15, 11, 13)(17, 24, 20, 22, 18, 23, 19, 21)(25, 32, 28, 30, 26, 31, 27, 29)(33, 40, 36, 38, 34, 39, 35, 37)(41, 48, 44, 46, 42, 47, 43, 45)", perm"(1, 4, 2, +3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 2, 2, 2 ], [ 4, 4, 4, 4 ], @@ -2956,11 +2956,11 @@ perm"(1, 17, 9)(2, 18, 10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15 [ 3, 1, 1, -4 ], [ -1, -2, 1, 2 ], [ 4, 3, 3, 5 ] -], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (16, 8), (24, 8), (48, 16) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 1), (12, 1), (16, 1), (24, 1), (48, 1) ], true, true, true, -true, 16), ([ perm"(1, 33, 17)(2, 34, 18)(3, 35, 19)(4, 36, 20)(5, 37, 21)(6, 38, 22)(7, 39, 23)(8, 40, 24)(9, 41, 25)(10, 42, 26)(11, 43, 27)(12, 44, 28)(13, 45, 29)(14, 46, 30)(15, 47, 31)(16, 48, -32)", perm"(1, 12, 4, 9)(2, 11, 3, 10)(5, 16, 8, 13)(6, 15, 7, 14)(17, 23, 19, 21)(18, 24, 20, 22)(25, 31, 27, 29)(26, 32, 28, 30)(33, 45, 34, 46)(35, 47, 36, 48)(37, 43, 38, 44)(39, 41, 40, 42)", -perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 29, 18, 30)(19, 31, 20, 32)(21, 27, 22, 28)(23, 25, 24, 26)(33, 44, 36, 41)(34, 43, 35, 42)(37, 48, 40, 45)(38, 47, 39, 46)", perm"(1, -3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 40)(38, 39)(41, 44)(42, 43)(45, 48)(46, 47)", perm"(1, 2)(3, +], [ (1, 1), (2, 1), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (16, 8), (24, 8), (48, 16) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (6, 1), (8, 1), (12, 1), (16, 1), (24, 1), (48, 1) ], true, true, true, +true, 16), ([ perm"(1, 33, 17)(2, 34, 18)(3, 35, 19)(4, 36, 20)(5, 37, 21)(6, 38, 22)(7, 39, 23)(8, 40, 24)(9, 41, 25)(10, 42, 26)(11, 43, 27)(12, 44, 28)(13, 45, 29)(14, 46, 30)(15, 47, 31)(16, 48, +32)", perm"(1, 12, 4, 9)(2, 11, 3, 10)(5, 16, 8, 13)(6, 15, 7, 14)(17, 23, 19, 21)(18, 24, 20, 22)(25, 31, 27, 29)(26, 32, 28, 30)(33, 45, 34, 46)(35, 47, 36, 48)(37, 43, 38, 44)(39, 41, 40, 42)", +perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 29, 18, 30)(19, 31, 20, 32)(21, 27, 22, 28)(23, 25, 24, 26)(33, 44, 36, 41)(34, 43, 35, 42)(37, 48, 40, 45)(38, 47, 39, 46)", perm"(1, +3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 40)(38, 39)(41, 44)(42, 43)(45, 48)(46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 20)(18, 19)(21, 24)(22, 23)(25, 28)(26, 27)(29, 32)(30, 31)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)" ], [ [ 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -2980,11 +2980,11 @@ perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 29, 18, 30)(19, [ -3, -3, 4 ], [ -1, 4, 1, 5 ], [ 1, -2, -1, -2, -3 ] -], [ (1, 1), (2, 3), (3, 32), (4, 12) ], [ (1, 1), (2, 3), (3, 16), (4, 7), (8, 3), (12, 4), (16, 1), (48, 1) ], false, false, true, false, 384), ([ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, -31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, -14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 46, 34, 40, 28, 43, 31, 37)(26, 47, 35, 41, 29, 44, 32, 38)(27, 48, 36, 42, 30, 45, 33, 39)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, -17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, -22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, +], [ (1, 1), (2, 3), (3, 32), (4, 12) ], [ (1, 1), (2, 3), (3, 16), (4, 7), (8, 3), (12, 4), (16, 1), (48, 1) ], false, false, true, false, 384), ([ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, +31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, +14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 46, 34, 40, 28, 43, 31, 37)(26, 47, 35, 41, 29, 44, 32, 38)(27, 48, 36, 42, 30, 45, 33, 39)", perm"(1, 10, 4, 7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, +17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, +22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 3, 3, 3, 3 ], @@ -3001,11 +3001,11 @@ perm"(1, 7, 3, 5)(2, 8, 4, 6)(9, 15, 11, 13)(10, 16, 12, 14)(17, 29, 18, 30)(19, [ -2, 1, 2, 1 ], [ -2, -5, 2, 5 ], [ 1, -5, 1, -5 ] -], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 2), (8, 16), (12, 4), (24, 8) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 3), (8, 7), (12, 3), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 48), ([ -perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, -22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 43, 34, 37, 28, 46, 31, 40)(26, 44, 35, 38, 29, 47, 32, 41)(27, 45, 36, 39, 30, 48, 33, 42)", perm"(1, 10, 4, -7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, -6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, +], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 2), (8, 16), (12, 4), (24, 8) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 3), (8, 7), (12, 3), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 48), ([ +perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, +22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 43, 34, 37, 28, 46, 31, 40)(26, 44, 35, 38, 29, 47, 32, 41)(27, 45, 36, 39, 30, 48, 33, 42)", perm"(1, 10, 4, +7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, +6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 3, 3, 3, 3 ], @@ -3024,11 +3024,11 @@ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, [ -2, -5, 2, 5 ], [ 1, -5, 1, -5 ], [ -2, 1, -2, 1, -3 ] -], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 2), (8, 16), (12, 4), (24, 8) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 3), (8, 7), (12, 3), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 48), ([ -perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, -22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 40, 31, 46, 28, 37, 34, 43)(26, 41, 32, 47, 29, 38, 35, 44)(27, 42, 33, 48, 30, 39, 36, 45)", perm"(1, 10, 4, -7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, -6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, +], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 2), (8, 16), (12, 4), (24, 8) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 3), (8, 7), (12, 3), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 48), ([ +perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, +22, 10, 16, 4, 19, 7, 13)(2, 23, 11, 17, 5, 20, 8, 14)(3, 24, 12, 18, 6, 21, 9, 15)(25, 40, 31, 46, 28, 37, 34, 43)(26, 41, 32, 47, 29, 38, 35, 44)(27, 42, 33, 48, 30, 39, 36, 45)", perm"(1, 10, 4, +7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, +6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 3, 3, 3, 3 ], @@ -3047,11 +3047,11 @@ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, [ -2, -5, 2, 5 ], [ 1, -5, 1, -5 ], [ -2, 1, -2, 1, 4 ] -], [ (1, 1), (2, 13), (3, 2), (4, 14), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 13), (3, 1), (4, 13), (6, 5), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ -perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, -19, 7, 16, 4, 22, 10, 13)(2, 20, 8, 17, 5, 23, 11, 14)(3, 21, 9, 18, 6, 24, 12, 15)(25, 37, 34, 46, 28, 40, 31, 43)(26, 38, 35, 47, 29, 41, 32, 44)(27, 39, 36, 48, 30, 42, 33, 45)", perm"(1, 10, 4, -7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, -6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, +], [ (1, 1), (2, 13), (3, 2), (4, 14), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 13), (3, 1), (4, 13), (6, 5), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ +perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, +19, 7, 16, 4, 22, 10, 13)(2, 20, 8, 17, 5, 23, 11, 14)(3, 21, 9, 18, 6, 24, 12, 15)(25, 37, 34, 46, 28, 40, 31, 43)(26, 38, 35, 47, 29, 41, 32, 44)(27, 39, 36, 48, 30, 42, 33, 45)", perm"(1, 10, 4, +7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, +6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 3, 3, 3, 3 ], @@ -3068,11 +3068,11 @@ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, [ -2, 1, -2, 1 ], [ -2, -5, 2, 5 ], [ 1, -5, 1, -5 ] -], [ (1, 1), (2, 25), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 25), (3, 1), (4, 13), (6, 9), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ -perm"(1, 28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, -19, 7, 16, 4, 22, 10, 13)(2, 20, 8, 17, 5, 23, 11, 14)(3, 21, 9, 18, 6, 24, 12, 15)(25, 37, 34, 46, 28, 40, 31, 43)(26, 38, 35, 47, 29, 41, 32, 44)(27, 39, 36, 48, 30, 42, 33, 45)", perm"(1, 10, 4, -7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, -6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, +], [ (1, 1), (2, 25), (3, 2), (4, 2), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 25), (3, 1), (4, 13), (6, 9), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ +perm"(1, 28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, +19, 7, 16, 4, 22, 10, 13)(2, 20, 8, 17, 5, 23, 11, 14)(3, 21, 9, 18, 6, 24, 12, 15)(25, 37, 34, 46, 28, 40, 31, 43)(26, 38, 35, 47, 29, 41, 32, 44)(27, 39, 36, 48, 30, 42, 33, 45)", perm"(1, 10, 4, +7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, +6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 3, 3, 3, 3 ], @@ -3091,11 +3091,11 @@ perm"(1, 28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, [ -2, -2, -3 ], [ -1, -5, 1, -5 ], [ -2, -5, 2, 5 ] -], [ (1, 1), (2, 1), (3, 2), (4, 26), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 13), (6, 1), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ -perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6, 33, 9, 27)(13, 46, 22, 40, 16, 43, 19, 37)(14, 47, 23, 41, 17, 44, 20, 38)(15, 48, 24, 42, 18, 45, 21, 39)", perm"(1, -13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 10, 4, -7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, -6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, +], [ (1, 1), (2, 1), (3, 2), (4, 26), (6, 2), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 13), (6, 1), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ +perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6, 33, 9, 27)(13, 46, 22, 40, 16, 43, 19, 37)(14, 47, 23, 41, 17, 44, 20, 38)(15, 48, 24, 42, 18, 45, 21, 39)", perm"(1, +13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 10, 4, +7)(2, 11, 5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, +6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 2, 2 ], [ 3, 3, 3, 3 ], @@ -3114,9 +3114,9 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ 2, -5, 2, 5 ] ], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (8, 24), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 7), (12, 3), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6, 33, 9, 27)(13, 46, 22, 40, 16, 43, 19, 37)(14, 47, 23, 41, 17, 44, 20, 38)(15, 48, 24, 42, 18, 45, 21, 39)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 40)(26, 41)(27, 42)(28, 37)(29, 38)(30, 39)(31, 46)(32, 47)(33, 48)(34, 43)(35, 44)(36, 45)", perm"(1, 10, 4, 7)(2, 11, 5, -8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 40)(26, 41)(27, 42)(28, 37)(29, 38)(30, 39)(31, 46)(32, 47)(33, 48)(34, 43)(35, 44)(36, 45)", perm"(1, 10, 4, 7)(2, 11, 5, +8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 2, 2 ], [ 3, 3, 3, 3 ], @@ -3137,9 +3137,9 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -1, 2, -1, 2, -3 ] ], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (8, 24), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 7), (12, 3), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 31, 7, 25)(2, 32, 8, 26)(3, 33, 9, 27)(4, 34, 10, 28)(5, 35, 11, 29)(6, 36, 12, 30)(13, 43, 19, 37)(14, 44, 20, 38)(15, 45, 21, 39)(16, 46, 22, 40)(17, 47, 23, 41)(18, 48, 24, 42)", perm"(1, 16, 4, 13)(2, -17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 7)(2, 8)(3, 9)(4, -10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 7)(2, 8)(3, 9)(4, +10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -3157,11 +3157,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -2, -2, 4 ], [ -1, -5, 1, -5 ], [ -2, -5, 2, 5 ] -], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 7), (12, 7), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 28, 4, -25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 19, 7, 13)(2, -20, 8, 14)(3, 21, 9, 15)(4, 22, 10, 16)(5, 23, 11, 17)(6, 24, 12, 18)(25, 46, 31, 40)(26, 47, 32, 41)(27, 48, 33, 42)(28, 43, 34, 37)(29, 44, 35, 38)(30, 45, 36, 39)", perm"(1, 7)(2, 8)(3, 9)(4, -10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 7), (12, 7), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 28, 4, +25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 19, 7, 13)(2, +20, 8, 14)(3, 21, 9, 15)(4, 22, 10, 16)(5, 23, 11, 17)(6, 24, 12, 18)(25, 46, 31, 40)(26, 47, 32, 41)(27, 48, 33, 42)(28, 43, 34, 37)(29, 44, 35, 38)(30, 45, 36, 39)", perm"(1, 7)(2, 8)(3, 9)(4, +10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -3179,11 +3179,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -2, -2, 3 ], [ -1, -5, 1, -5 ], [ -2, -5, 2, 5 ] -], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 7), (12, 7), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 31, 7, -25)(2, 32, 8, 26)(3, 33, 9, 27)(4, 34, 10, 28)(5, 35, 11, 29)(6, 36, 12, 30)(13, 43, 19, 37)(14, 44, 20, 38)(15, 45, 21, 39)(16, 46, 22, 40)(17, 47, 23, 41)(18, 48, 24, 42)", perm"(1, 16, 4, 13)(2, -17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 37, 28, 40)(26, 38, 29, 41)(27, 39, 30, 42)(31, 43, 34, 46)(32, 44, 35, 47)(33, 45, 36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, -10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 7), (12, 7), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 31, 7, +25)(2, 32, 8, 26)(3, 33, 9, 27)(4, 34, 10, 28)(5, 35, 11, 29)(6, 36, 12, 30)(13, 43, 19, 37)(14, 44, 20, 38)(15, 45, 21, 39)(16, 46, 22, 40)(17, 47, 23, 41)(18, 48, 24, 42)", perm"(1, 16, 4, 13)(2, +17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 37, 28, 40)(26, 38, 29, 41)(27, 39, 30, 42)(31, 43, 34, 46)(32, 44, 35, 47)(33, 45, 36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, +10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -3201,11 +3201,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -2, -2, 4 ], [ -1, -5, 1, -5 ], [ -2, -5, 2, 5 ] -], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 7), (12, 7), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 19, 7, 13)(2, -20, 8, 14)(3, 21, 9, 15)(4, 22, 10, 16)(5, 23, 11, 17)(6, 24, 12, 18)(25, 46, 31, 40)(26, 47, 32, 41)(27, 48, 33, 42)(28, 43, 34, 37)(29, 44, 35, 38)(30, 45, 36, 39)", perm"(1, 7)(2, 8)(3, 9)(4, -10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 7), (12, 7), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 19, 7, 13)(2, +20, 8, 14)(3, 21, 9, 15)(4, 22, 10, 16)(5, 23, 11, 17)(6, 24, 12, 18)(25, 46, 31, 40)(26, 47, 32, 41)(27, 48, 33, 42)(28, 43, 34, 37)(29, 44, 35, 38)(30, 45, 36, 39)", perm"(1, 7)(2, 8)(3, 9)(4, +10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -3229,11 +3229,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ 1, -5, 1, -5 ], [ 4, -5, 4, 5 ], [ 2, 1, -2, 1, 4 ] -], [ (1, 1), (2, 15), (3, 2), (4, 16), (6, 6), (12, 8) ], [ (1, 1), (2, 15), (3, 1), (4, 27), (6, 7), (8, 7), (12, 11), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 43)(26, 44)(27, 45)(28, 46)(29, 47)(30, 48)(31, 40)(32, 41)(33, 42)(34, 37)(35, 38)(36, 39)", perm"(1, 10, 4, 7)(2, 11, 5, -8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 15), (3, 2), (4, 16), (6, 6), (12, 8) ], [ (1, 1), (2, 15), (3, 1), (4, 27), (6, 7), (8, 7), (12, 11), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 43)(26, 44)(27, 45)(28, 46)(29, 47)(30, 48)(31, 40)(32, 41)(33, 42)(34, 37)(35, 38)(36, 39)", perm"(1, 10, 4, 7)(2, 11, 5, +8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -3255,11 +3255,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ 2, -5, 2, 5 ], [ -3, -5, 3, 5 ], [ 1, 2, 1, 2, 3 ] -], [ (1, 1), (2, 17), (3, 2), (4, 2), (6, 10), (8, 12), (12, 4) ], [ (1, 1), (2, 17), (3, 1), (4, 9), (6, 9), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, -28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 13)(2, +], [ (1, 1), (2, 17), (3, 2), (4, 2), (6, 10), (8, 12), (12, 4) ], [ (1, 1), (2, 17), (3, 1), (4, 9), (6, 9), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, +28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 43)(26, 44)(27, 45)(28, 46)(29, 47)(30, 48)(31, 40)(32, 41)(33, 42)(34, 37)(35, 38)(36, 39)", perm"(1, 10, 4, 7)(2, 11, -5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -3283,11 +3283,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ 2, -5, 2, 5 ], [ -3, -5, 3, 5 ], [ -1, 2, -1, 2, -3 ] -], [ (1, 1), (2, 5), (3, 2), (4, 14), (6, 10), (8, 12), (12, 4) ], [ (1, 1), (2, 5), (3, 1), (4, 9), (6, 5), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, -25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, +], [ (1, 1), (2, 5), (3, 2), (4, 14), (6, 10), (8, 12), (12, 4) ], [ (1, 1), (2, 5), (3, 1), (4, 9), (6, 5), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, +25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, 13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 46, 28, 43)(26, 47, 29, 44)(27, 48, 30, 45)(31, 37, 34, 40)(32, 38, 35, 41)(33, 39, 36, 42)", perm"(1, 10, 4, 7)(2, 11, -5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -3311,11 +3311,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ 1, -5, 1, -5 ], [ -3, -5, 3, 5 ], [ -2, 1, -2, 1, 3 ] -], [ (1, 1), (2, 13), (3, 2), (4, 6), (6, 2), (8, 12), (12, 12) ], [ (1, 1), (2, 13), (3, 1), (4, 9), (6, 5), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, -28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 16, 4, +], [ (1, 1), (2, 13), (3, 2), (4, 6), (6, 2), (8, 12), (12, 12) ], [ (1, 1), (2, 13), (3, 1), (4, 9), (6, 5), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, +28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 16, 4, 13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 46, 28, 43)(26, 47, 29, 44)(27, 48, 30, 45)(31, 37, 34, 40)(32, 38, 35, 41)(33, 39, 36, 42)", perm"(1, 10, 4, 7)(2, 11, -5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +5, 8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -3341,10 +3341,10 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -2, -5, 2, 5 ], [ -3, -5, 3, 5 ], [ -1, -2, -1, 2, -3 ] -], [ (1, 1), (2, 1), (3, 2), (4, 18), (6, 2), (8, 12), (12, 12) ], [ (1, 1), (2, 1), (3, 1), (4, 9), (6, 1), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, -31, 7, 25)(2, 32, 8, 26)(3, 33, 9, 27)(4, 34, 10, 28)(5, 35, 11, 29)(6, 36, 12, 30)(13, 43, 19, 37)(14, 44, 20, 38)(15, 45, 21, 39)(16, 46, 22, 40)(17, 47, 23, 41)(18, 48, 24, 42)", perm"(1, 13)(2, -14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 40)(26, 41)(27, 42)(28, 37)(29, 38)(30, 39)(31, 46)(32, 47)(33, 48)(34, 43)(35, 44)(36, 45)", perm"(1, 7)(2, 8)(3, -9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, +], [ (1, 1), (2, 1), (3, 2), (4, 18), (6, 2), (8, 12), (12, 12) ], [ (1, 1), (2, 1), (3, 1), (4, 9), (6, 1), (8, 7), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 96), ([ perm"(1, +31, 7, 25)(2, 32, 8, 26)(3, 33, 9, 27)(4, 34, 10, 28)(5, 35, 11, 29)(6, 36, 12, 30)(13, 43, 19, 37)(14, 44, 20, 38)(15, 45, 21, 39)(16, 46, 22, 40)(17, 47, 23, 41)(18, 48, 24, 42)", perm"(1, 13)(2, +14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 40)(26, 41)(27, 42)(28, 37)(29, 38)(30, 39)(31, 46)(32, 47)(33, 48)(34, 43)(35, 44)(36, 45)", perm"(1, 7)(2, 8)(3, +9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], @@ -3369,11 +3369,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ 2, -5, 2, 5 ], [ 4, -5, 4, 5 ], [ 1, 2, -1, 2, 4 ] -], [ (1, 1), (2, 7), (3, 2), (4, 24), (6, 14) ], [ (1, 1), (2, 7), (3, 1), (4, 19), (6, 7), (8, 7), (12, 11), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 27, 3, 25)(2, -28, 4, 26)(5, 31, 7, 29)(6, 32, 8, 30)(9, 35, 11, 33)(10, 36, 12, 34)(13, 39, 15, 37)(14, 40, 16, 38)(17, 43, 19, 41)(18, 44, 20, 42)(21, 47, 23, 45)(22, 48, 24, 46)", perm"(1, 14, 2, 13)(3, 16, 4, -15)(5, 18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)(25, 38, 26, 37)(27, 40, 28, 39)(29, 42, 30, 41)(31, 44, 32, 43)(33, 46, 34, 45)(35, 48, 36, 47)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, -12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, -12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, +], [ (1, 1), (2, 7), (3, 2), (4, 24), (6, 14) ], [ (1, 1), (2, 7), (3, 1), (4, 19), (6, 7), (8, 7), (12, 11), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 27, 3, 25)(2, +28, 4, 26)(5, 31, 7, 29)(6, 32, 8, 30)(9, 35, 11, 33)(10, 36, 12, 34)(13, 39, 15, 37)(14, 40, 16, 38)(17, 43, 19, 41)(18, 44, 20, 42)(21, 47, 23, 45)(22, 48, 24, 46)", perm"(1, 14, 2, 13)(3, 16, 4, +15)(5, 18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)(25, 38, 26, 37)(27, 40, 28, 39)(29, 42, 30, 41)(31, 44, 32, 43)(33, 46, 34, 45)(35, 48, 36, 47)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, +12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, +12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -3391,11 +3391,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -2, -2, 5 ], [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6), (12, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 3), (12, 7), (16, 1), (24, 3), (48, 1) ], true, false, true, true, 192), ([ perm"(1, 26, 2, -25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 39)(26, 40)(27, 37)(28, 38)(29, 43)(30, 44)(31, 41)(32, 42)(33, 47)(34, 48)(35, 45)(36, 46)", perm"(1, 9, 5)(2, 10, 6)(3, 11, -7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, -12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, +], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6), (12, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 3), (12, 7), (16, 1), (24, 3), (48, 1) ], true, false, true, true, 192), ([ perm"(1, 26, 2, +25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 39)(26, 40)(27, 37)(28, 38)(29, 43)(30, 44)(31, 41)(32, 42)(33, 47)(34, 48)(35, 45)(36, 46)", perm"(1, 9, 5)(2, 10, 6)(3, 11, +7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, +12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -3419,11 +3419,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -3, 4, 3, 4 ], [ 2, 5, 2, 5 ], [ 1, 2, -1, 2, 4 ] -], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 14), (12, 16) ], [ (1, 1), (2, 7), (3, 1), (4, 11), (6, 7), (8, 3), (12, 11), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ perm"(1, 26, 2, -25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 15, 3, 13)(2, -16, 4, 14)(5, 19, 7, 17)(6, 20, 8, 18)(9, 23, 11, 21)(10, 24, 12, 22)(25, 37, 27, 39)(26, 38, 28, 40)(29, 41, 31, 43)(30, 42, 32, 44)(33, 45, 35, 47)(34, 46, 36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, -7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, -12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, +], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 14), (12, 16) ], [ (1, 1), (2, 7), (3, 1), (4, 11), (6, 7), (8, 3), (12, 11), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ perm"(1, 26, 2, +25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 15, 3, 13)(2, +16, 4, 14)(5, 19, 7, 17)(6, 20, 8, 18)(9, 23, 11, 21)(10, 24, 12, 22)(25, 37, 27, 39)(26, 38, 28, 40)(29, 41, 31, 43)(30, 42, 32, 44)(33, 45, 35, 47)(34, 46, 36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, +7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, +12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 23)(22, 24)(25, 27)(26, 28)(29, 31)(30, 32)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -3441,11 +3441,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -2, -2, 4 ], [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6), (12, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 3), (12, 7), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ perm"(1, 28, 4, 26, +], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6), (12, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 3), (12, 7), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ perm"(1, 28, 4, 26, 2, 27, 3, 25)(5, 32, 8, 30, 6, 31, 7, 29)(9, 36, 12, 34, 10, 35, 11, 33)(13, 40, 16, 38, 14, 39, 15, 37)(17, 44, 20, 42, 18, 43, 19, 41)(21, 48, 24, 46, 22, 47, 23, 45)", perm"(1, 13)(2, 14)(3, 15)(4, -16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, -12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, -11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, +16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, +12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, +11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 2, 2 ], [ 3, 3, 3 ], @@ -3462,11 +3462,11 @@ perm"(1, 34, 10, 28, 4, 31, 7, 25)(2, 35, 11, 29, 5, 32, 8, 26)(3, 36, 12, 30, 6 [ -1, 2, 1, 2 ], [ -1, -3, 1, 3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (8, 8), (12, 8), (24, 16) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 3), (12, 3), (16, 1), (24, 3), (48, 1) ], true, false, true, true, 32), ([ -perm"(1, 28, 4, 26, 2, 27, 3, 25)(5, 32, 8, 30, 6, 31, 7, 29)(9, 36, 12, 34, 10, 35, 11, 33)(13, 40, 16, 38, 14, 39, 15, 37)(17, 44, 20, 42, 18, 43, 19, 41)(21, 48, 24, 46, 22, 47, 23, 45)", perm"(1, -13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 38)(26, 37)(27, 40)(28, 39)(29, 42)(30, 41)(31, 44)(32, 43)(33, 46)(34, 45)(35, 48)(36, 47)", perm"(1, 9, 5)(2, -10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, -7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, +], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (8, 8), (12, 8), (24, 16) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 3), (12, 3), (16, 1), (24, 3), (48, 1) ], true, false, true, true, 32), ([ +perm"(1, 28, 4, 26, 2, 27, 3, 25)(5, 32, 8, 30, 6, 31, 7, 29)(9, 36, 12, 34, 10, 35, 11, 33)(13, 40, 16, 38, 14, 39, 15, 37)(17, 44, 20, 42, 18, 43, 19, 41)(21, 48, 24, 46, 22, 47, 23, 45)", perm"(1, +13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 38)(26, 37)(27, 40)(28, 39)(29, 42)(30, 41)(31, 44)(32, 43)(33, 46)(34, 45)(35, 48)(36, 47)", perm"(1, 9, 5)(2, +10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, +7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 2, 2 ], [ 3, 3, 3 ], @@ -3485,11 +3485,11 @@ perm"(1, 28, 4, 26, 2, 27, 3, 25)(5, 32, 8, 30, 6, 31, 7, 29)(9, 36, 12, 34, 10, [ 2, -3, 2, 3 ], [ 2, -4, 2, 4 ], [ -1, 2, -1, 2, -4 ] -], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (8, 8), (12, 8), (24, 16) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 3), (12, 3), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 32), ([ -perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, -13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 39)(26, 40)(27, 38)(28, 37)(29, 43)(30, 44)(31, 42)(32, 41)(33, 47)(34, 48)(35, 46)(36, 45)", perm"(1, 9, 5)(2, -10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, -7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 27, 26, 28)(29, 31, 30, 32)(33, 35, 34, 36)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, +], [ (1, 1), (2, 3), (3, 2), (4, 4), (6, 6), (8, 8), (12, 8), (24, 16) ], [ (1, 1), (2, 3), (3, 1), (4, 3), (6, 3), (8, 3), (12, 3), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 32), ([ +perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, +13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 39)(26, 40)(27, 38)(28, 37)(29, 43)(30, 44)(31, 42)(32, 41)(33, 47)(34, 48)(35, 46)(36, 45)", perm"(1, 9, 5)(2, +10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, +7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 27, 26, 28)(29, 31, 30, 32)(33, 35, 34, 36)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -3511,11 +3511,11 @@ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, [ -3, -4, 3, 4 ], [ -4, -4, 5 ], [ 1, 2, 1, 2, 4 ] -], [ (1, 1), (2, 9), (3, 2), (4, 2), (6, 18), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 9), (3, 1), (4, 5), (6, 9), (8, 3), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ -perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, -13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 39)(26, 40)(27, 38)(28, 37)(29, 43)(30, 44)(31, 42)(32, 41)(33, 47)(34, 48)(35, 46)(36, 45)", perm"(1, 9, 5)(2, -10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, -7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 27, 26, 28)(29, 31, 30, 32)(33, 35, 34, 36)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, +], [ (1, 1), (2, 9), (3, 2), (4, 2), (6, 18), (8, 4), (12, 4), (24, 8) ], [ (1, 1), (2, 9), (3, 1), (4, 5), (6, 9), (8, 3), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ +perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, +13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 39)(26, 40)(27, 38)(28, 37)(29, 43)(30, 44)(31, 42)(32, 41)(33, 47)(34, 48)(35, 46)(36, 45)", perm"(1, 9, 5)(2, +10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, +7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 27, 26, 28)(29, 31, 30, 32)(33, 35, 34, 36)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -3539,11 +3539,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 2, -4, 2, -4 ], [ -3, -4, 3, 4 ], [ -1, 2, -1, 2, -4 ] -], [ (1, 1), (2, 5), (3, 2), (4, 6), (6, 10), (8, 4), (12, 12), (24, 8) ], [ (1, 1), (2, 5), (3, 1), (4, 5), (6, 5), (8, 3), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 32), ([ -perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, -14, 2, 13)(3, 16, 4, 15)(5, 18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)(25, 40, 26, 39)(27, 37, 28, 38)(29, 44, 30, 43)(31, 41, 32, 42)(33, 48, 34, 47)(35, 45, 36, 46)", perm"(1, 9, 5)(2, -10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, -7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 27, 26, 28)(29, 31, 30, 32)(33, 35, 34, 36)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, +], [ (1, 1), (2, 5), (3, 2), (4, 6), (6, 10), (8, 4), (12, 12), (24, 8) ], [ (1, 1), (2, 5), (3, 1), (4, 5), (6, 5), (8, 3), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 32), ([ +perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, +14, 2, 13)(3, 16, 4, 15)(5, 18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)(25, 40, 26, 39)(27, 37, 28, 38)(29, 44, 30, 43)(31, 41, 32, 42)(33, 48, 34, 47)(35, 45, 36, 46)", perm"(1, 9, 5)(2, +10, 6)(3, 11, 7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 4, 2, 3)(5, 8, 6, +7)(9, 12, 10, 11)(13, 15, 14, 16)(17, 19, 18, 20)(21, 23, 22, 24)(25, 27, 26, 28)(29, 31, 30, 32)(33, 35, 34, 36)(37, 40, 38, 39)(41, 44, 42, 43)(45, 48, 46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -3569,11 +3569,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, -4, 2, -4 ], [ -3, -4, 3, 4 ], [ -1, -2, -1, 2, -4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 10), (6, 2), (8, 4), (12, 20), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 5), (6, 1), (8, 3), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ -perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, -17, 9)(2, 18, 10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 33, 41)(26, 34, 42)(27, 35, 43)(28, 36, 44)(29, 37, 45)(30, 38, 46)(31, 39, 47)(32, 40, 48)", perm"(1, 6, 2, -5)(3, 8, 4, 7)(9, 11, 10, 12)(13, 16, 14, 15)(17, 23, 18, 24)(19, 22, 20, 21)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 45, 42, 46)(43, 47, 44, 48)", perm"(1, 4, 2, 3)(5, 7, -6, 8)(9, 16, 10, 15)(11, 13, 12, 14)(17, 21, 18, 22)(19, 23, 20, 24)(25, 30, 26, 29)(27, 32, 28, 31)(33, 35, 34, 36)(37, 40, 38, 39)(41, 47, 42, 48)(43, 46, 44, 45)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, +], [ (1, 1), (2, 1), (3, 2), (4, 10), (6, 2), (8, 4), (12, 20), (24, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 5), (6, 1), (8, 3), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, true, 64), ([ +perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, +17, 9)(2, 18, 10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 33, 41)(26, 34, 42)(27, 35, 43)(28, 36, 44)(29, 37, 45)(30, 38, 46)(31, 39, 47)(32, 40, 48)", perm"(1, 6, 2, +5)(3, 8, 4, 7)(9, 11, 10, 12)(13, 16, 14, 15)(17, 23, 18, 24)(19, 22, 20, 21)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 45, 42, 46)(43, 47, 44, 48)", perm"(1, 4, 2, 3)(5, 7, +6, 8)(9, 16, 10, 15)(11, 13, 12, 14)(17, 21, 18, 22)(19, 23, 20, 24)(25, 30, 26, 29)(27, 32, 28, 31)(33, 35, 34, 36)(37, 40, 38, 39)(41, 47, 42, 48)(43, 46, 44, 45)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2 ], @@ -3597,11 +3597,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, -3, 2, -4 ], [ -3, -4, 3, -4 ], [ 2, -3, -2, 3, -4 ] -], [ (1, 1), (2, 1), (3, 8), (4, 18), (6, 8), (8, 12) ], [ (1, 1), (2, 1), (3, 4), (4, 9), (6, 4), (8, 7), (12, 4), (16, 3), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 17, 9)(2, 18, +], [ (1, 1), (2, 1), (3, 8), (4, 18), (6, 8), (8, 12) ], [ (1, 1), (2, 1), (3, 4), (4, 9), (6, 4), (8, 7), (12, 4), (16, 3), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 17, 9)(2, 18, 10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 33, 41)(26, 34, 42)(27, 35, 43)(28, 36, 44)(29, 37, 45)(30, 38, 46)(31, 39, 47)(32, 40, 48)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, -11, 10, 12)(13, 16, 14, 15)(17, 23, 18, 24)(19, 22, 20, 21)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 45, 42, 46)(43, 47, 44, 48)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 16, 10, -15)(11, 13, 12, 14)(17, 21, 18, 22)(19, 23, 20, 24)(25, 30, 26, 29)(27, 32, 28, 31)(33, 35, 34, 36)(37, 40, 38, 39)(41, 47, 42, 48)(43, 46, 44, 45)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, +11, 10, 12)(13, 16, 14, 15)(17, 23, 18, 24)(19, 22, 20, 21)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 45, 42, 46)(43, 47, 44, 48)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 16, 10, +15)(11, 13, 12, 14)(17, 21, 18, 22)(19, 23, 20, 24)(25, 30, 26, 29)(27, 32, 28, 31)(33, 35, 34, 36)(37, 40, 38, 39)(41, 47, 42, 48)(43, 46, 44, 45)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -3623,11 +3623,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -4, 3, 3, -4 ], [ -3, -4, 3, -4 ], [ 2, -3, -2, 3, -4 ] -], [ (1, 1), (2, 13), (3, 8), (4, 6), (6, 8), (8, 12) ], [ (1, 1), (2, 13), (3, 4), (4, 9), (6, 12), (8, 7), (12, 4), (16, 3), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 37, 13, -25)(2, 38, 14, 26)(3, 39, 15, 27)(4, 40, 16, 28)(5, 41, 17, 29)(6, 42, 18, 30)(7, 43, 19, 31)(8, 44, 20, 32)(9, 45, 21, 33)(10, 46, 22, 34)(11, 47, 23, 35)(12, 48, 24, 36)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, -7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 29, 33)(26, 30, 34)(27, 31, 35)(28, 32, 36)(37, 41, 45)(38, 42, 46)(39, 43, 47)(40, 44, 48)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, -11)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)(25, 26)(27, 28)(29, 32)(30, 31)(33, 35)(34, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, +], [ (1, 1), (2, 13), (3, 8), (4, 6), (6, 8), (8, 12) ], [ (1, 1), (2, 13), (3, 4), (4, 9), (6, 12), (8, 7), (12, 4), (16, 3), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 37, 13, +25)(2, 38, 14, 26)(3, 39, 15, 27)(4, 40, 16, 28)(5, 41, 17, 29)(6, 42, 18, 30)(7, 43, 19, 31)(8, 44, 20, 32)(9, 45, 21, 33)(10, 46, 22, 34)(11, 47, 23, 35)(12, 48, 24, 36)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, +7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 29, 33)(26, 30, 34)(27, 31, 35)(28, 32, 36)(37, 41, 45)(38, 42, 46)(39, 43, 47)(40, 44, 48)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, +11)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)(25, 26)(27, 28)(29, 32)(30, 31)(33, 35)(34, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, 14)(15, 16)(17, 20)(18, 19)(21, 23)(22, 24)(25, 27)(26, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 39)(38, 40)(41, 42)(43, 44)(45, 48)(46, 47)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -3649,11 +3649,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -3, 4, 3, 5 ], [ 4, 5, 4, 5 ], [ 3, 4, -3, 4, 5 ] -], [ (1, 1), (2, 7), (3, 8), (4, 24), (6, 8) ], [ (1, 1), (2, 7), (3, 4), (4, 19), (6, 4), (8, 7), (12, 5), (16, 3), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 29, 5, 25)(2, 30, -6, 26)(3, 31, 7, 27)(4, 32, 8, 28)(9, 37, 13, 33)(10, 38, 14, 34)(11, 39, 15, 35)(12, 40, 16, 36)(17, 45, 21, 41)(18, 46, 22, 42)(19, 47, 23, 43)(20, 48, 24, 44)", perm"(1, 17, 9)(2, 18, 10)(3, 19, -11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 41, 33)(26, 42, 34)(27, 43, 35)(28, 44, 36)(29, 45, 37)(30, 46, 38)(31, 47, 39)(32, 48, 40)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, -14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)(33, 37)(34, 38)(35, 39)(36, 40)(41, 45)(42, 46)(43, 47)(44, 48)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 10)(11, 12)(13, -14)(15, 16)(17, 20)(18, 19)(21, 24)(22, 23)(25, 27)(26, 28)(29, 31)(30, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 48)(46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 12)(10, 11)(13, 16)(14, +], [ (1, 1), (2, 7), (3, 8), (4, 24), (6, 8) ], [ (1, 1), (2, 7), (3, 4), (4, 19), (6, 4), (8, 7), (12, 5), (16, 3), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 29, 5, 25)(2, 30, +6, 26)(3, 31, 7, 27)(4, 32, 8, 28)(9, 37, 13, 33)(10, 38, 14, 34)(11, 39, 15, 35)(12, 40, 16, 36)(17, 45, 21, 41)(18, 46, 22, 42)(19, 47, 23, 43)(20, 48, 24, 44)", perm"(1, 17, 9)(2, 18, 10)(3, 19, +11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 41, 33)(26, 42, 34)(27, 43, 35)(28, 44, 36)(29, 45, 37)(30, 46, 38)(31, 47, 39)(32, 48, 40)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, +14)(11, 15)(12, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)(33, 37)(34, 38)(35, 39)(36, 40)(41, 45)(42, 46)(43, 47)(44, 48)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 10)(11, 12)(13, +14)(15, 16)(17, 20)(18, 19)(21, 24)(22, 23)(25, 27)(26, 28)(29, 31)(30, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 48)(46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 12)(10, 11)(13, 16)(14, 15)(17, 19)(18, 20)(21, 23)(22, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 40)(38, 39)(41, 43)(42, 44)(45, 47)(46, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2 ], @@ -3673,11 +3673,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, 4, 2, 5 ], [ 4, 5, 4, 5 ], [ 2, 4, -2, 4, 5 ] -], [ (1, 1), (2, 7), (3, 8), (4, 8), (6, 8), (12, 16) ], [ (1, 1), (2, 7), (3, 4), (4, 11), (6, 4), (8, 7), (12, 5), (16, 1), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 17, 9)(2, 18, +], [ (1, 1), (2, 7), (3, 8), (4, 8), (6, 8), (12, 16) ], [ (1, 1), (2, 7), (3, 4), (4, 11), (6, 4), (8, 7), (12, 5), (16, 1), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 17, 9)(2, 18, 10)(3, 19, 11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 41, 33)(26, 42, 34)(27, 43, 35)(28, 44, 36)(29, 45, 37)(30, 46, 38)(31, 47, 39)(32, 48, 40)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, -12, 10, 11)(13, 15, 14, 16)(17, 24, 18, 23)(19, 21, 20, 22)(25, 30, 26, 29)(27, 32, 28, 31)(33, 36, 34, 35)(37, 39, 38, 40)(41, 48, 42, 47)(43, 45, 44, 46)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 16, 10, -15)(11, 13, 12, 14)(17, 22, 18, 21)(19, 24, 20, 23)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 46, 42, 45)(43, 48, 44, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, +12, 10, 11)(13, 15, 14, 16)(17, 24, 18, 23)(19, 21, 20, 22)(25, 30, 26, 29)(27, 32, 28, 31)(33, 36, 34, 35)(37, 39, 38, 40)(41, 48, 42, 47)(43, 45, 44, 46)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 16, 10, +15)(11, 13, 12, 14)(17, 22, 18, 21)(19, 24, 20, 23)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 46, 42, 45)(43, 48, 44, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -3699,11 +3699,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -4, 3, 3, -4 ], [ -3, -4, 3, -4 ], [ 2, -3, -2, 3, 4 ] -], [ (1, 1), (2, 3), (3, 8), (4, 12), (6, 24) ], [ (1, 1), (2, 3), (3, 4), (4, 7), (6, 12), (8, 7), (12, 4), (16, 1), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 26, 2, 25)(3, 28, -4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 17, 9)(2, 18, 10)(3, 19, -11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 41, 33)(26, 42, 34)(27, 43, 35)(28, 44, 36)(29, 45, 37)(30, 46, 38)(31, 47, 39)(32, 48, 40)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 12, 10, -11)(13, 15, 14, 16)(17, 24, 18, 23)(19, 21, 20, 22)(25, 30, 26, 29)(27, 32, 28, 31)(33, 36, 34, 35)(37, 39, 38, 40)(41, 48, 42, 47)(43, 45, 44, 46)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 16, 10, 15)(11, -13, 12, 14)(17, 22, 18, 21)(19, 24, 20, 23)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 46, 42, 45)(43, 48, 44, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, +], [ (1, 1), (2, 3), (3, 8), (4, 12), (6, 24) ], [ (1, 1), (2, 3), (3, 4), (4, 7), (6, 12), (8, 7), (12, 4), (16, 1), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 26, 2, 25)(3, 28, +4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 17, 9)(2, 18, 10)(3, 19, +11)(4, 20, 12)(5, 21, 13)(6, 22, 14)(7, 23, 15)(8, 24, 16)(25, 41, 33)(26, 42, 34)(27, 43, 35)(28, 44, 36)(29, 45, 37)(30, 46, 38)(31, 47, 39)(32, 48, 40)", perm"(1, 6, 2, 5)(3, 8, 4, 7)(9, 12, 10, +11)(13, 15, 14, 16)(17, 24, 18, 23)(19, 21, 20, 22)(25, 30, 26, 29)(27, 32, 28, 31)(33, 36, 34, 35)(37, 39, 38, 40)(41, 48, 42, 47)(43, 45, 44, 46)", perm"(1, 4, 2, 3)(5, 7, 6, 8)(9, 16, 10, 15)(11, +13, 12, 14)(17, 22, 18, 21)(19, 24, 20, 23)(25, 28, 26, 27)(29, 31, 30, 32)(33, 40, 34, 39)(35, 37, 36, 38)(41, 46, 42, 45)(43, 48, 44, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2 ], @@ -3727,11 +3727,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, -3, 2, 4 ], [ -3, -4, 3, -4 ], [ 2, -3, -2, 3, 4 ] -], [ (1, 1), (2, 7), (3, 8), (4, 8), (6, 8), (12, 16) ], [ (1, 1), (2, 7), (3, 4), (4, 7), (6, 4), (8, 7), (12, 4), (16, 1), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 28, 4, -25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 10, 4, 7)(2, 11, 5, -8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 7), (3, 8), (4, 8), (6, 8), (12, 16) ], [ (1, 1), (2, 7), (3, 4), (4, 7), (6, 4), (8, 7), (12, 4), (16, 1), (24, 1), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 28, 4, +25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 10, 4, 7)(2, 11, 5, +8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -3755,11 +3755,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -1, -5, 1, -5 ], [ 2, -5, 2, 5 ], [ -3, -5, 3, 5 ] -], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 384), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 10, 4, 7)(2, 11, 5, -8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 3), (3, 2), (4, 28), (6, 6), (12, 8) ], [ (1, 1), (2, 3), (3, 1), (4, 15), (6, 3), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 384), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 10, 4, 7)(2, 11, 5, +8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -3781,11 +3781,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 1, -5, 1, -5 ], [ 2, -5, 2, 5 ], [ -3, -5, 3, 5 ] -], [ (1, 1), (2, 15), (3, 2), (4, 16), (6, 6), (12, 8) ], [ (1, 1), (2, 15), (3, 1), (4, 27), (6, 7), (8, 19), (12, 11), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 192), ([ perm"(1, -25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, +], [ (1, 1), (2, 15), (3, 2), (4, 16), (6, 6), (12, 8) ], [ (1, 1), (2, 15), (3, 1), (4, 27), (6, 7), (8, 19), (12, 11), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 192), ([ perm"(1, +25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 10, 4, 7)(2, 11, -5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +5, 8)(3, 12, 6, 9)(13, 22, 16, 19)(14, 23, 17, 20)(15, 24, 18, 21)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -3807,10 +3807,10 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 1, -5, 1, -5 ], [ 2, -5, 2, 5 ], [ -3, -5, 3, 5 ] -], [ (1, 1), (2, 27), (3, 2), (4, 4), (6, 6), (12, 8) ], [ (1, 1), (2, 27), (3, 1), (4, 39), (6, 11), (8, 19), (12, 15), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 384), ([ perm"(1, -25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, -13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 7)(2, 8)(3, -9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 34)(26, 35)(27, 36)(28, 31)(29, 32)(30, 33)(37, 46)(38, 47)(39, 48)(40, 43)(41, 44)(42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, +], [ (1, 1), (2, 27), (3, 2), (4, 4), (6, 6), (12, 8) ], [ (1, 1), (2, 27), (3, 1), (4, 39), (6, 11), (8, 19), (12, 15), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 384), ([ perm"(1, +25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, +13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 7)(2, 8)(3, +9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 34)(26, 35)(27, 36)(28, 31)(29, 32)(30, 33)(37, 46)(38, 47)(39, 48)(40, 43)(41, 44)(42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], @@ -3833,11 +3833,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 1, -5, 1, -5 ], [ 3, -5, 3, 5 ], [ 3, 1, 2, 2, 3, 1 ] -], [ (1, 1), (2, 15), (3, 2), (4, 16), (6, 6), (12, 8) ], [ (1, 1), (2, 15), (3, 1), (4, 15), (6, 7), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, -10)(5, 11)(6, 12)(13, 22)(14, 23)(15, 24)(16, 19)(17, 20)(18, 21)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 46)(38, 47)(39, 48)(40, 43)(41, 44)(42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 15), (3, 2), (4, 16), (6, 6), (12, 8) ], [ (1, 1), (2, 15), (3, 1), (4, 15), (6, 7), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, +10)(5, 11)(6, 12)(13, 22)(14, 23)(15, 24)(16, 19)(17, 20)(18, 21)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 46)(38, 47)(39, 48)(40, 43)(41, 44)(42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -3865,10 +3865,10 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 3, -5, 3, 5 ], [ 4, -5, 4, 5 ], [ 2, 3, 2, 3, 4 ] -], [ (1, 1), (2, 23), (3, 2), (4, 8), (6, 10), (12, 4) ], [ (1, 1), (2, 23), (3, 1), (4, 39), (6, 11), (8, 19), (12, 15), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 96), ([ perm"(1, -25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, -13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 7)(2, 8)(3, -9)(4, 10)(5, 11)(6, 12)(13, 22)(14, 23)(15, 24)(16, 19)(17, 20)(18, 21)(25, 34)(26, 35)(27, 36)(28, 31)(29, 32)(30, 33)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, +], [ (1, 1), (2, 23), (3, 2), (4, 8), (6, 10), (12, 4) ], [ (1, 1), (2, 23), (3, 1), (4, 39), (6, 11), (8, 19), (12, 15), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 96), ([ perm"(1, +25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, +13)(2, 17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 7)(2, 8)(3, +9)(4, 10)(5, 11)(6, 12)(13, 22)(14, 23)(15, 24)(16, 19)(17, 20)(18, 21)(25, 34)(26, 35)(27, 36)(28, 31)(29, 32)(30, 33)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], @@ -3892,10 +3892,10 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 3, -5, 3, 5 ], [ 3, 1, 2, 2, 3, 1 ] ], [ (1, 1), (2, 11), (3, 2), (4, 20), (6, 10), (12, 4) ], [ (1, 1), (2, 11), (3, 1), (4, 15), (6, 7), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 96), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, 13)(2, -17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 10, 4, 7)(2, 11, 5, -8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, 13)(2, +17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 10, 4, 7)(2, 11, 5, +8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 34, 28, 31)(26, 35, 29, 32)(27, 36, 30, 33)(37, 43, 40, 46)(38, 44, 41, 47)(39, 45, 42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -3919,11 +3919,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, -5, 2, 5 ], [ 1, -5, 1, -5 ], [ -3, -5, 3, 5 ] -], [ (1, 1), (2, 7), (3, 2), (4, 24), (6, 2), (12, 12) ], [ (1, 1), (2, 7), (3, 1), (4, 15), (6, 3), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 288), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, 13)(2, -17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 10, 4, 7)(2, 11, 5, -8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +], [ (1, 1), (2, 7), (3, 2), (4, 24), (6, 2), (12, 12) ], [ (1, 1), (2, 7), (3, 1), (4, 15), (6, 3), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 288), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 16, 4, 13)(2, +17, 5, 14)(3, 18, 6, 15)(7, 22, 10, 19)(8, 23, 11, 20)(9, 24, 12, 21)(25, 40, 28, 37)(26, 41, 29, 38)(27, 42, 30, 39)(31, 46, 34, 43)(32, 47, 35, 44)(33, 48, 36, 45)", perm"(1, 10, 4, 7)(2, 11, 5, +8)(3, 12, 6, 9)(13, 19, 16, 22)(14, 20, 17, 23)(15, 21, 18, 24)(25, 31, 28, 34)(26, 32, 29, 35)(27, 33, 30, 36)(37, 46, 40, 43)(38, 47, 41, 44)(39, 48, 42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -3947,11 +3947,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, -5, 2, 5 ], [ 1, -5, 1, -5 ], [ -3, -5, 3, 5 ] -], [ (1, 1), (2, 19), (3, 2), (4, 12), (6, 2), (12, 12) ], [ (1, 1), (2, 19), (3, 1), (4, 15), (6, 7), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 288), ([ perm"(1, 28, +], [ (1, 1), (2, 19), (3, 2), (4, 12), (6, 2), (12, 12) ], [ (1, 1), (2, 19), (3, 1), (4, 15), (6, 7), (8, 19), (12, 7), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 288), ([ perm"(1, 28, 4, 25)(2, 29, 5, 26)(3, 30, 6, 27)(7, 34, 10, 31)(8, 35, 11, 32)(9, 36, 12, 33)(13, 40, 16, 37)(14, 41, 17, 38)(15, 42, 18, 39)(19, 46, 22, 43)(20, 47, 23, 44)(21, 48, 24, 45)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, -10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, +10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -3973,11 +3973,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -1, -5, 1, -5 ], [ 2, -5, 2, 5 ], [ 3, -5, 3, 5 ] -], [ (1, 1), (2, 7), (3, 2), (4, 24), (6, 14) ], [ (1, 1), (2, 7), (3, 1), (4, 19), (6, 7), (8, 19), (12, 11), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 1152), ([ perm"(1, 25)(2, 26)(3, -27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, -16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, -11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 34)(26, 35)(27, 36)(28, 31)(29, 32)(30, 33)(37, 46)(38, 47)(39, 48)(40, 43)(41, 44)(42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, -12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, +], [ (1, 1), (2, 7), (3, 2), (4, 24), (6, 14) ], [ (1, 1), (2, 7), (3, 1), (4, 19), (6, 7), (8, 19), (12, 11), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 1152), ([ perm"(1, 25)(2, 26)(3, +27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, +16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, +11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 34)(26, 35)(27, 36)(28, 31)(29, 32)(30, 33)(37, 46)(38, 47)(39, 48)(40, 43)(41, 44)(42, 45)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, +12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4005,11 +4005,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 3, -5, 3, 5 ], [ 4, -5, 4, 5 ], [ 1, 3, 1, 3, 4 ] -], [ (1, 1), (2, 19), (3, 2), (4, 12), (6, 14) ], [ (1, 1), (2, 19), (3, 1), (4, 31), (6, 11), (8, 19), (12, 15), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 26, 2, -25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, +], [ (1, 1), (2, 19), (3, 2), (4, 12), (6, 14) ], [ (1, 1), (2, 19), (3, 1), (4, 31), (6, 11), (8, 19), (12, 15), (16, 3), (24, 7), (48, 1) ], false, false, true, false, 192), ([ perm"(1, 26, 2, +25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, -12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, +12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -4031,11 +4031,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -1, -4, 1, 4 ], [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 14), (12, 16) ], [ (1, 1), (2, 7), (3, 1), (4, 11), (6, 7), (8, 7), (12, 11), (16, 1), (24, 7), (48, 1) ], true, false, true, true, 384), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 38)(26, 37)(27, 40)(28, 39)(29, 42)(30, 41)(31, 44)(32, 43)(33, 46)(34, 45)(35, 48)(36, 47)", perm"(1, 7)(2, 8)(3, 9)(4, +], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 14), (12, 16) ], [ (1, 1), (2, 7), (3, 1), (4, 11), (6, 7), (8, 7), (12, 11), (16, 1), (24, 7), (48, 1) ], true, false, true, true, 384), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 38)(26, 37)(27, 40)(28, 39)(29, 42)(30, 41)(31, 44)(32, 43)(33, 46)(34, 45)(35, 48)(36, 47)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, -12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, +12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4064,10 +4064,10 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -4, 5, 4, 5 ], [ 1, 2, 1, 2, 5 ] ], [ (1, 1), (2, 11), (3, 2), (4, 4), (6, 22), (12, 8) ], [ (1, 1), (2, 11), (3, 1), (4, 15), (6, 11), (8, 7), (12, 15), (16, 1), (24, 7), (48, 1) ], false, false, true, true, 128), ([ perm"(1, 26, 2, -25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 14, 2, 13)(3, -16, 4, 15)(5, 18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)(25, 37, 26, 38)(27, 39, 28, 40)(29, 41, 30, 42)(31, 43, 32, 44)(33, 45, 34, 46)(35, 47, 36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, +25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, 36, 12, 35)(13, 38, 14, 37)(15, 40, 16, 39)(17, 42, 18, 41)(19, 44, 20, 43)(21, 46, 22, 45)(23, 48, 24, 47)", perm"(1, 14, 2, 13)(3, +16, 4, 15)(5, 18, 6, 17)(7, 20, 8, 19)(9, 22, 10, 21)(11, 24, 12, 23)(25, 37, 26, 38)(27, 39, 28, 40)(29, 41, 30, 42)(31, 43, 32, 44)(33, 45, 34, 46)(35, 47, 36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, -12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, +12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -4091,11 +4091,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -1, -4, 1, 4 ], [ -2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6), (12, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 7), (12, 7), (16, 1), (24, 7), (48, 1) ], false, false, true, true, 384), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 38)(26, 37)(27, 40)(28, 39)(29, 42)(30, 41)(31, 44)(32, 43)(33, 46)(34, 45)(35, 48)(36, 47)", perm"(1, 8, 2, 7)(3, 10, 4, -9)(5, 12, 6, 11)(13, 20, 14, 19)(15, 22, 16, 21)(17, 24, 18, 23)(25, 32, 26, 31)(27, 34, 28, 33)(29, 36, 30, 35)(37, 44, 38, 43)(39, 46, 40, 45)(41, 48, 42, 47)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, -12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, +], [ (1, 1), (2, 3), (3, 2), (4, 12), (6, 6), (12, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 7), (6, 3), (8, 7), (12, 7), (16, 1), (24, 7), (48, 1) ], false, false, true, true, 384), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 38)(26, 37)(27, 40)(28, 39)(29, 42)(30, 41)(31, 44)(32, 43)(33, 46)(34, 45)(35, 48)(36, 47)", perm"(1, 8, 2, 7)(3, 10, 4, +9)(5, 12, 6, 11)(13, 20, 14, 19)(15, 22, 16, 21)(17, 24, 18, 23)(25, 32, 26, 31)(27, 34, 28, 33)(29, 36, 30, 35)(37, 44, 38, 43)(39, 46, 40, 45)(41, 48, 42, 47)", perm"(1, 5, 3)(2, 6, 4)(7, 11, 9)(8, +12, 10)(13, 17, 15)(14, 18, 16)(19, 23, 21)(20, 24, 22)(25, 29, 27)(26, 30, 28)(31, 35, 33)(32, 36, 34)(37, 41, 39)(38, 42, 40)(43, 47, 45)(44, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4117,11 +4117,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ], [ 1, 2, 1, 2, 5 ] -], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 14), (12, 16) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 7), (8, 7), (12, 7), (16, 1), (24, 7), (48, 1) ], false, false, true, true, 96), ([ perm"(1, 25)(2, -26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, -15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, -7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 29, 33)(26, 30, 34)(27, 31, 35)(28, 32, 36)(37, 41, 45)(38, 42, 46)(39, 43, 47)(40, 44, 48)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, -11)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)(25, 26)(27, 28)(29, 32)(30, 31)(33, 35)(34, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, +], [ (1, 1), (2, 7), (3, 2), (4, 8), (6, 14), (12, 16) ], [ (1, 1), (2, 7), (3, 1), (4, 7), (6, 7), (8, 7), (12, 7), (16, 1), (24, 7), (48, 1) ], false, false, true, true, 96), ([ perm"(1, 25)(2, +26)(3, 27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, +15)(4, 16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, +7)(4, 12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 29, 33)(26, 30, 34)(27, 31, 35)(28, 32, 36)(37, 41, 45)(38, 42, 46)(39, 43, 47)(40, 44, 48)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, +11)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)(25, 26)(27, 28)(29, 32)(30, 31)(33, 35)(34, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 47)(46, 48)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, 14)(15, 16)(17, 20)(18, 19)(21, 23)(22, 24)(25, 27)(26, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 39)(38, 40)(41, 42)(43, 44)(45, 48)(46, 47)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4145,11 +4145,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -3, 4, 3, 5 ], [ 4, 5, 4, 5 ], [ 3, 4, -3, 4, 5 ] -], [ (1, 1), (2, 19), (3, 8), (4, 12), (6, 8) ], [ (1, 1), (2, 19), (3, 4), (4, 31), (6, 12), (8, 19), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 25)(2, 26)(3, -27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, -16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, -12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, -11)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)(25, 27)(26, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 39)(38, 40)(41, 42)(43, 44)(45, 48)(46, 47)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, +], [ (1, 1), (2, 19), (3, 8), (4, 12), (6, 8) ], [ (1, 1), (2, 19), (3, 4), (4, 31), (6, 12), (8, 19), (12, 5), (16, 3), (24, 3), (48, 1) ], false, false, true, false, 48), ([ perm"(1, 25)(2, 26)(3, +27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, +16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 9, 5)(2, 10, 6)(3, 11, 7)(4, +12, 8)(13, 21, 17)(14, 22, 18)(15, 23, 19)(16, 24, 20)(25, 33, 29)(26, 34, 30)(27, 35, 31)(28, 36, 32)(37, 45, 41)(38, 46, 42)(39, 47, 43)(40, 48, 44)", perm"(1, 3)(2, 4)(5, 6)(7, 8)(9, 12)(10, +11)(13, 15)(14, 16)(17, 18)(19, 20)(21, 24)(22, 23)(25, 27)(26, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 39)(38, 40)(41, 42)(43, 44)(45, 48)(46, 47)", perm"(1, 2)(3, 4)(5, 8)(6, 7)(9, 11)(10, 12)(13, 14)(15, 16)(17, 20)(18, 19)(21, 23)(22, 24)(25, 26)(27, 28)(29, 32)(30, 31)(33, 35)(34, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 47)(46, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4173,11 +4173,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -3, 4, 3, 5 ], [ 4, 5, 4, 5 ], [ 3, 4, -3, 4, 5 ] -], [ (1, 1), (2, 15), (3, 8), (6, 24) ], [ (1, 1), (2, 15), (3, 4), (4, 35), (6, 12), (8, 15), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, false, 144), ([ perm"(1, 33, 17)(2, 34, 18)(3, -35, 19)(4, 36, 20)(5, 37, 21)(6, 38, 22)(7, 39, 23)(8, 40, 24)(9, 41, 25)(10, 42, 26)(11, 43, 27)(12, 44, 28)(13, 45, 29)(14, 46, 30)(15, 47, 31)(16, 48, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, -13)(6, 14)(7, 15)(8, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)(33, 45)(34, 46)(35, 47)(36, 48)(37, 41)(38, 42)(39, 43)(40, 44)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, -14)(11, 15)(12, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)(33, 41)(34, 42)(35, 43)(36, 44)(37, 45)(38, 46)(39, 47)(40, 48)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, -15)(14, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 40)(38, 39)(41, 44)(42, 43)(45, 48)(46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, +], [ (1, 1), (2, 15), (3, 8), (6, 24) ], [ (1, 1), (2, 15), (3, 4), (4, 35), (6, 12), (8, 15), (12, 5), (16, 1), (24, 3), (48, 1) ], false, false, true, false, 144), ([ perm"(1, 33, 17)(2, 34, 18)(3, +35, 19)(4, 36, 20)(5, 37, 21)(6, 38, 22)(7, 39, 23)(8, 40, 24)(9, 41, 25)(10, 42, 26)(11, 43, 27)(12, 44, 28)(13, 45, 29)(14, 46, 30)(15, 47, 31)(16, 48, 32)", perm"(1, 9)(2, 10)(3, 11)(4, 12)(5, +13)(6, 14)(7, 15)(8, 16)(17, 21)(18, 22)(19, 23)(20, 24)(25, 29)(26, 30)(27, 31)(28, 32)(33, 45)(34, 46)(35, 47)(36, 48)(37, 41)(38, 42)(39, 43)(40, 44)", perm"(1, 5)(2, 6)(3, 7)(4, 8)(9, 13)(10, +14)(11, 15)(12, 16)(17, 29)(18, 30)(19, 31)(20, 32)(21, 25)(22, 26)(23, 27)(24, 28)(33, 41)(34, 42)(35, 43)(36, 44)(37, 45)(38, 46)(39, 47)(40, 48)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, +15)(14, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 36)(34, 35)(37, 40)(38, 39)(41, 44)(42, 43)(45, 48)(46, 47)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 20)(18, 19)(21, 24)(22, 23)(25, 28)(26, 27)(29, 32)(30, 31)(33, 35)(34, 36)(37, 39)(38, 40)(41, 43)(42, 44)(45, 47)(46, 48)" ], [ [ 1, 1, 1 ], [ 2, 2 ], @@ -4203,11 +4203,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 4, 5, 4, 5 ], [ 1, 2, -1, 2, 3 ], [ 1, 4, -1, 4, 5 ] -], [ (1, 1), (2, 15), (3, 32) ], [ (1, 1), (2, 15), (3, 16), (4, 35), (8, 15), (12, 20), (16, 1), (48, 1) ], false, false, true, false, 5760), ([ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, -31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, -20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, -21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, -22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, +], [ (1, 1), (2, 15), (3, 32) ], [ (1, 1), (2, 15), (3, 16), (4, 35), (8, 15), (12, 20), (16, 1), (48, 1) ], false, false, true, false, 5760), ([ perm"(1, 25)(2, 26)(3, 27)(4, 28)(5, 29)(6, 30)(7, +31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, 16)(5, 17)(6, 18)(7, 19)(8, +20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, 11)(6, 12)(13, 19)(14, 20)(15, +21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, 12)(13, 16)(14, 17)(15, 18)(19, +22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 26, 27)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4235,11 +4235,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 2, -5, 2, 5 ], [ 3, -5, 3, 5 ], [ 4, -5, 4, 5 ] -], [ (1, 1), (2, 31), (3, 2), (6, 14) ], [ (1, 1), (2, 31), (3, 1), (4, 91), (6, 15), (8, 43), (12, 35), (16, 3), (24, 15), (48, 1) ], false, false, true, false, 8064), ([ perm"(1, 25)(2, 26)(3, -27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, -16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, -11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, -12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, +], [ (1, 1), (2, 31), (3, 2), (6, 14) ], [ (1, 1), (2, 31), (3, 1), (4, 91), (6, 15), (8, 43), (12, 35), (16, 3), (24, 15), (48, 1) ], false, false, true, false, 8064), ([ perm"(1, 25)(2, 26)(3, +27)(4, 28)(5, 29)(6, 30)(7, 31)(8, 32)(9, 33)(10, 34)(11, 35)(12, 36)(13, 37)(14, 38)(15, 39)(16, 40)(17, 41)(18, 42)(19, 43)(20, 44)(21, 45)(22, 46)(23, 47)(24, 48)", perm"(1, 13)(2, 14)(3, 15)(4, +16)(5, 17)(6, 18)(7, 19)(8, 20)(9, 21)(10, 22)(11, 23)(12, 24)(25, 37)(26, 38)(27, 39)(28, 40)(29, 41)(30, 42)(31, 43)(32, 44)(33, 45)(34, 46)(35, 47)(36, 48)", perm"(1, 7)(2, 8)(3, 9)(4, 10)(5, +11)(6, 12)(13, 19)(14, 20)(15, 21)(16, 22)(17, 23)(18, 24)(25, 31)(26, 32)(27, 33)(28, 34)(29, 35)(30, 36)(37, 43)(38, 44)(39, 45)(40, 46)(41, 47)(42, 48)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, 11)(9, +12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4267,8 +4267,8 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 2, -5, 2, 5 ], [ 3, -5, 3, 5 ], [ 4, -5, 4, 5 ] -], [ (1, 1), (2, 15), (3, 2), (6, 30) ], [ (1, 1), (2, 15), (3, 1), (4, 35), (6, 15), (8, 15), (12, 35), (16, 1), (24, 15), (48, 1) ], true, false, true, true, 40320) ], [ ([ perm"(1, 49, 42, 35, 28, -21, 14, 7, 48, 41, 34, 27, 20, 13, 6, 47, 40, 33, 26, 19, 12, 5, 46, 39, 32, 25, 18, 11, 4, 45, 38, 31, 24, 17, 10, 3, 44, 37, 30, 23, 16, 9, 2, 43, 36, 29, 22, 15, 8)", perm"(1, 7, 6, 5, 4, 3, 2)(8, +], [ (1, 1), (2, 15), (3, 2), (6, 30) ], [ (1, 1), (2, 15), (3, 1), (4, 35), (6, 15), (8, 15), (12, 35), (16, 1), (24, 15), (48, 1) ], true, false, true, true, 40320) ], [ ([ perm"(1, 49, 42, 35, 28, +21, 14, 7, 48, 41, 34, 27, 20, 13, 6, 47, 40, 33, 26, 19, 12, 5, 46, 39, 32, 25, 18, 11, 4, 45, 38, 31, 24, 17, 10, 3, 44, 37, 30, 23, 16, 9, 2, 43, 36, 29, 22, 15, 8)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)(36, 42, 41, 40, 39, 38, 37)(43, 49, 48, 47, 46, 45, 44)" ], [ [ -1, -2, 1, 2 ], [ 1, 1, 1, 1, 1, 1, 1, -2 ], @@ -4276,17 +4276,17 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, ], [ [ -1, -2, 1, 2 ], [ 1, 1, 1, 1, 1, 1, 1, -2 ] -], [ (1, 1), (7, 6), (49, 42) ], [ (1, 1), (7, 1), (49, 1) ], true, true, true, true, 42), ([ perm"(1, 43, 36, 29, 22, 15, 8)(2, 44, 37, 30, 23, 16, 9)(3, 45, 38, 31, 24, 17, 10)(4, 46, 39, 32, 25, -18, 11)(5, 47, 40, 33, 26, 19, 12)(6, 48, 41, 34, 27, 20, 13)(7, 49, 42, 35, 28, 21, 14)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, +], [ (1, 1), (7, 6), (49, 42) ], [ (1, 1), (7, 1), (49, 1) ], true, true, true, true, 42), ([ perm"(1, 43, 36, 29, 22, 15, 8)(2, 44, 37, 30, 23, 16, 9)(3, 45, 38, 31, 24, 17, 10)(4, 46, 39, 32, 25, +18, 11)(5, 47, 40, 33, 26, 19, 12)(6, 48, 41, 34, 27, 20, 13)(7, 49, 42, 35, 28, 21, 14)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)(36, 42, 41, 40, 39, 38, 37)(43, 49, 48, 47, 46, 45, 44)" ], [ [ -1, -2, 1, 2 ], [ -1, -1, -1, -1, -1, -1, -1 ], [ -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -1, -2, 1, 2 ] -], [ (1, 1), (7, 48) ], [ (1, 1), (7, 8), (49, 1) ], true, false, true, true, 2016) ], [ ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, 34)(10, 35)(11, 36)(12, 37)(13, 38)(14, -39)(15, 40)(16, 41)(17, 42)(18, 43)(19, 44)(20, 45)(21, 46)(22, 47)(23, 48)(24, 49)(25, 50)", perm"(1, 25, 20, 15, 10, 5, 24, 19, 14, 9, 4, 23, 18, 13, 8, 3, 22, 17, 12, 7, 2, 21, 16, 11, 6)(26, 31, -36, 41, 46, 27, 32, 37, 42, 47, 28, 33, 38, 43, 48, 29, 34, 39, 44, 49, 30, 35, 40, 45, 50)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 27, +], [ (1, 1), (7, 48) ], [ (1, 1), (7, 8), (49, 1) ], true, false, true, true, 2016) ], [ ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, 34)(10, 35)(11, 36)(12, 37)(13, 38)(14, +39)(15, 40)(16, 41)(17, 42)(18, 43)(19, 44)(20, 45)(21, 46)(22, 47)(23, 48)(24, 49)(25, 50)", perm"(1, 25, 20, 15, 10, 5, 24, 19, 14, 9, 4, 23, 18, 13, 8, 3, 22, 17, 12, 7, 2, 21, 16, 11, 6)(26, 31, +36, 41, 46, 27, 32, 37, 42, 47, 28, 33, 38, 43, 48, 29, 34, 39, 44, 49, 30, 35, 40, 45, 50)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)" ], [ [ 1, 1 ], [ 3, 3, 3, 3, 3 ], @@ -4299,9 +4299,9 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ], [ 2, 2, 2, 2, 2, -3 ] -], [ (1, 1), (2, 25), (5, 4), (25, 20) ], [ (1, 1), (2, 25), (5, 1), (10, 5), (25, 1), (50, 1) ], false, false, true, false, 500), ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, -34)(10, 35)(11, 36)(12, 37)(13, 38)(14, 39)(15, 40)(16, 41)(17, 42)(18, 43)(19, 44)(20, 45)(21, 46)(22, 47)(23, 48)(24, 49)(25, 50)", perm"(1, 25, 20, 15, 10, 5, 24, 19, 14, 9, 4, 23, 18, 13, 8, 3, -22, 17, 12, 7, 2, 21, 16, 11, 6)(26, 50, 45, 40, 35, 30, 49, 44, 39, 34, 29, 48, 43, 38, 33, 28, 47, 42, 37, 32, 27, 46, 41, 36, 31)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, +], [ (1, 1), (2, 25), (5, 4), (25, 20) ], [ (1, 1), (2, 25), (5, 1), (10, 5), (25, 1), (50, 1) ], false, false, true, false, 500), ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, +34)(10, 35)(11, 36)(12, 37)(13, 38)(14, 39)(15, 40)(16, 41)(17, 42)(18, 43)(19, 44)(20, 45)(21, 46)(22, 47)(23, 48)(24, 49)(25, 50)", perm"(1, 25, 20, 15, 10, 5, 24, 19, 14, 9, 4, 23, 18, 13, 8, 3, +22, 17, 12, 7, 2, 21, 16, 11, 6)(26, 50, 45, 40, 35, 30, 49, 44, 39, 34, 29, 48, 43, 38, 33, 28, 47, 42, 37, 32, 27, 46, 41, 36, 31)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 35, 34, 33, 32)(36, 40, 39, 38, 37)(41, 45, 44, 43, 42)(46, 50, 49, 48, 47)" ], [ [ 1, 1 ], [ 3, 3, 3, 3, 3 ], @@ -4314,9 +4314,9 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, -3, 2, 3 ], [ 1, -3, 1, 3 ], [ 2, 2, 2, 2, 2, -3 ] -], [ (1, 1), (2, 1), (5, 4), (10, 4), (25, 20), (50, 20) ], [ (1, 1), (2, 1), (5, 1), (10, 1), (25, 1), (50, 1) ], true, true, true, true, 20), ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, +], [ (1, 1), (2, 1), (5, 4), (10, 4), (25, 20), (50, 20) ], [ (1, 1), (2, 1), (5, 1), (10, 1), (25, 1), (50, 1) ], true, true, true, true, 20), ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, 34)(10, 35)(11, 36)(12, 37)(13, 38)(14, 39)(15, 40)(16, 41)(17, 42)(18, 43)(19, 44)(20, 45)(21, 46)(22, 47)(23, 48)(24, 49)(25, 50)", perm"(1, 21, 16, 11, 6)(2, 22, 17, 12, 7)(3, 23, 18, -13, 8)(4, 24, 19, 14, 9)(5, 25, 20, 15, 10)(26, 46, 41, 36, 31)(27, 47, 42, 37, 32)(28, 48, 43, 38, 33)(29, 49, 44, 39, 34)(30, 50, 45, 40, 35)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, +13, 8)(4, 24, 19, 14, 9)(5, 25, 20, 15, 10)(26, 46, 41, 36, 31)(27, 47, 42, 37, 32)(28, 48, 43, 38, 33)(29, 49, 44, 39, 34)(30, 50, 45, 40, 35)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)" ], [ [ 1, 1 ], [ 2, 2, 2, 2, 2 ], @@ -4328,7 +4328,7 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] -], [ (1, 1), (2, 5), (5, 24), (10, 20) ], [ (1, 1), (2, 5), (5, 6), (10, 6), (25, 1), (50, 1) ], false, false, true, false, 80), ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, +], [ (1, 1), (2, 5), (5, 24), (10, 20) ], [ (1, 1), (2, 5), (5, 6), (10, 6), (25, 1), (50, 1) ], false, false, true, false, 80), ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, 34)(10, 35)(11, 36)(12, 37)(13, 38)(14, 39)(15, 40)(16, 41)(17, 42)(18, 43)(19, 44)(20, 45)(21, 46)(22, 47)(23, 48)(24, 49)(25, 50)", perm"(1, 21, 16, 11, 6)(2, 22, 17, 12, 7)(3, 23, 18, 13, 8)(4, 24, 19, 14, 9)(5, 25, 20, 15, 10)(26, 31, 36, 41, 46)(27, 32, 37, 42, 47)(28, 33, 38, 43, 48)(29, 34, 39, 44, 49)(30, 35, 40, 45, 50)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 27, 28, 29, 30)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)" ], [ @@ -4344,7 +4344,7 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 1, -3, 1, -3 ] ], [ (1, 1), (2, 25), (5, 24) ], [ (1, 1), (2, 25), (5, 6), (10, 30), (25, 1), (50, 1) ], false, false, true, false, 12000), ([ perm"(1, 26)(2, 27)(3, 28)(4, 29)(5, 30)(6, 31)(7, 32)(8, 33)(9, 34)(10, 35)(11, 36)(12, 37)(13, 38)(14, 39)(15, 40)(16, 41)(17, 42)(18, 43)(19, 44)(20, 45)(21, 46)(22, 47)(23, 48)(24, 49)(25, 50)", perm"(1, 21, 16, 11, 6)(2, 22, 17, 12, 7)(3, 23, 18, 13, 8)(4, 24, 19, 14, -9)(5, 25, 20, 15, 10)(26, 46, 41, 36, 31)(27, 47, 42, 37, 32)(28, 48, 43, 38, 33)(29, 49, 44, 39, 34)(30, 50, 45, 40, 35)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, +9)(5, 25, 20, 15, 10)(26, 46, 41, 36, 31)(27, 47, 42, 37, 32)(28, 48, 43, 38, 33)(29, 49, 44, 39, 34)(30, 50, 45, 40, 35)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 35, 34, 33, 32)(36, 40, 39, 38, 37)(41, 45, 44, 43, 42)(46, 50, 49, 48, 47)" ], [ [ 1, 1 ], [ 2, 2, 2, 2, 2 ], @@ -4356,7 +4356,7 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, 3 ] -], [ (1, 1), (2, 1), (5, 24), (10, 24) ], [ (1, 1), (2, 1), (5, 6), (10, 6), (25, 1), (50, 1) ], true, false, true, true, 480) ], [ ([ perm"(1, 35, 18)(2, 36, 19)(3, 37, 20)(4, 38, 21)(5, 39, 22)(6, +], [ (1, 1), (2, 1), (5, 24), (10, 24) ], [ (1, 1), (2, 1), (5, 6), (10, 6), (25, 1), (50, 1) ], true, false, true, true, 480) ], [ ([ perm"(1, 35, 18)(2, 36, 19)(3, 37, 20)(4, 38, 21)(5, 39, 22)(6, 40, 23)(7, 41, 24)(8, 42, 25)(9, 43, 26)(10, 44, 27)(11, 45, 28)(12, 46, 29)(13, 47, 30)(14, 48, 31)(15, 49, 32)(16, 50, 33)(17, 51, 34)", perm"(1, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(18, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19)(35, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36)" ], [ [ 1, 1, 1 ], @@ -4365,8 +4365,8 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, ], [ [ -1, -2, 1, 2 ] ], [ (1, 1), (3, 2), (17, 16), (51, 32) ], [ (1, 1), (3, 1), (17, 1), (51, 1) ], true, true, true, true, 32) ], [ ([ perm"(1, 40, 14, 27)(2, 41, 15, 28)(3, 42, 16, 29)(4, 43, 17, 30)(5, 44, 18, 31)(6, -45, 19, 32)(7, 46, 20, 33)(8, 47, 21, 34)(9, 48, 22, 35)(10, 49, 23, 36)(11, 50, 24, 37)(12, 51, 25, 38)(13, 52, 26, 39)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, 21)(9, 22)(10, -23)(11, 24)(12, 25)(13, 26)(27, 40)(28, 41)(29, 42)(30, 43)(31, 44)(32, 45)(33, 46)(34, 47)(35, 48)(36, 49)(37, 50)(38, 51)(39, 52)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 26, 25, 24, +45, 19, 32)(7, 46, 20, 33)(8, 47, 21, 34)(9, 48, 22, 35)(10, 49, 23, 36)(11, 50, 24, 37)(12, 51, 25, 38)(13, 52, 26, 39)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, 21)(9, 22)(10, +23)(11, 24)(12, 25)(13, 26)(27, 40)(28, 41)(29, 42)(30, 43)(31, 44)(32, 45)(33, 46)(34, 47)(35, 48)(36, 49)(37, 50)(38, 51)(39, 52)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15)(27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)(40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -4376,8 +4376,8 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, ], [ [ -1, -1, 2 ], [ -1, -3, 1, -3 ] -], [ (1, 1), (2, 1), (4, 26), (13, 12), (26, 12) ], [ (1, 1), (2, 1), (4, 13), (13, 1), (26, 1), (52, 1) ], false, false, true, false, 312), ([ perm"(1, 28, 2, 27)(3, 30, 4, 29)(5, 32, 6, 31)(7, 34, -8, 33)(9, 36, 10, 35)(11, 38, 12, 37)(13, 40, 14, 39)(15, 42, 16, 41)(17, 44, 18, 43)(19, 46, 20, 45)(21, 48, 22, 47)(23, 50, 24, 49)(25, 52, 26, 51)", perm"(1, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, +], [ (1, 1), (2, 1), (4, 26), (13, 12), (26, 12) ], [ (1, 1), (2, 1), (4, 13), (13, 1), (26, 1), (52, 1) ], false, false, true, false, 312), ([ perm"(1, 28, 2, 27)(3, 30, 4, 29)(5, 32, 6, 31)(7, 34, +8, 33)(9, 36, 10, 35)(11, 38, 12, 37)(13, 40, 14, 39)(15, 42, 16, 41)(17, 44, 18, 43)(19, 46, 20, 45)(21, 48, 22, 47)(23, 50, 24, 49)(25, 52, 26, 51)", perm"(1, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3)(2, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4)(27, 51, 49, 47, 45, 43, 41, 39, 37, 35, 33, 31, 29)(28, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)(49, 50)(51, 52)" ], [ [ 1, 1, 1, 1 ], @@ -4388,8 +4388,8 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, ], [ [ -1, -1, 3 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (4, 2), (13, 12), (26, 12), (52, 24) ], [ (1, 1), (2, 1), (4, 1), (13, 1), (26, 1), (52, 1) ], true, true, true, true, 24), ([ perm"(1, 40, 14, 27)(2, 41, 15, 28)(3, 42, 16, -29)(4, 43, 17, 30)(5, 44, 18, 31)(6, 45, 19, 32)(7, 46, 20, 33)(8, 47, 21, 34)(9, 48, 22, 35)(10, 49, 23, 36)(11, 50, 24, 37)(12, 51, 25, 38)(13, 52, 26, 39)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, +], [ (1, 1), (2, 1), (4, 2), (13, 12), (26, 12), (52, 24) ], [ (1, 1), (2, 1), (4, 1), (13, 1), (26, 1), (52, 1) ], true, true, true, true, 24), ([ perm"(1, 40, 14, 27)(2, 41, 15, 28)(3, 42, 16, +29)(4, 43, 17, 30)(5, 44, 18, 31)(6, 45, 19, 32)(7, 46, 20, 33)(8, 47, 21, 34)(9, 48, 22, 35)(10, 49, 23, 36)(11, 50, 24, 37)(12, 51, 25, 38)(13, 52, 26, 39)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, 21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)(27, 40)(28, 41)(29, 42)(30, 43)(31, 44)(32, 45)(33, 46)(34, 47)(35, 48)(36, 49)(37, 50)(38, 51)(39, 52)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)(27, 32, 37, 29, 34, 39, 31, 36, 28, 33, 38, 30, 35)(40, 48, 43, 51, 46, 41, 49, 44, 52, 47, 42, 50, 45)" ], [ [ 1, 1, 1, 1 ], @@ -4402,8 +4402,8 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 2, -3, 2, -3 ], [ 1, -3, -3, -1, -3, -3, -3 ] ], [ (1, 1), (2, 13), (4, 26), (13, 12) ], [ (1, 1), (2, 13), (4, 13), (13, 1), (26, 1), (52, 1) ], false, false, true, false, 156), ([ perm"(1, 27)(2, 28)(3, 29)(4, 30)(5, 31)(6, 32)(7, 33)(8, 34)(9, -35)(10, 36)(11, 37)(12, 38)(13, 39)(14, 40)(15, 41)(16, 42)(17, 43)(18, 44)(19, 45)(20, 46)(21, 47)(22, 48)(23, 49)(24, 50)(25, 51)(26, 52)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, -21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)(27, 40)(28, 41)(29, 42)(30, 43)(31, 44)(32, 45)(33, 46)(34, 47)(35, 48)(36, 49)(37, 50)(38, 51)(39, 52)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, +35)(10, 36)(11, 37)(12, 38)(13, 39)(14, 40)(15, 41)(16, 42)(17, 43)(18, 44)(19, 45)(20, 46)(21, 47)(22, 48)(23, 49)(24, 50)(25, 51)(26, 52)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, 20)(8, +21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)(27, 40)(28, 41)(29, 42)(30, 43)(31, 44)(32, 45)(33, 46)(34, 47)(35, 48)(36, 49)(37, 50)(38, 51)(39, 52)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15)(27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)(40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4415,9 +4415,9 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 1, 2, 1, 2 ], [ 1, -3, 1, -3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 27), (13, 12), (26, 12) ], [ (1, 1), (2, 27), (4, 13), (13, 1), (26, 3), (52, 1) ], false, false, true, false, 312), ([ perm"(1, 27)(2, 28)(3, 29)(4, 30)(5, 31)(6, 32)(7, 33)(8, -34)(9, 35)(10, 36)(11, 37)(12, 38)(13, 39)(14, 40)(15, 41)(16, 42)(17, 43)(18, 44)(19, 45)(20, 46)(21, 47)(22, 48)(23, 49)(24, 50)(25, 51)(26, 52)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, -20)(8, 21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)(27, 40)(28, 41)(29, 42)(30, 43)(31, 44)(32, 45)(33, 46)(34, 47)(35, 48)(36, 49)(37, 50)(38, 51)(39, 52)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, +], [ (1, 1), (2, 27), (13, 12), (26, 12) ], [ (1, 1), (2, 27), (4, 13), (13, 1), (26, 3), (52, 1) ], false, false, true, false, 312), ([ perm"(1, 27)(2, 28)(3, 29)(4, 30)(5, 31)(6, 32)(7, 33)(8, +34)(9, 35)(10, 36)(11, 37)(12, 38)(13, 39)(14, 40)(15, 41)(16, 42)(17, 43)(18, 44)(19, 45)(20, 46)(21, 47)(22, 48)(23, 49)(24, 50)(25, 51)(26, 52)", perm"(1, 14)(2, 15)(3, 16)(4, 17)(5, 18)(6, 19)(7, +20)(8, 21)(9, 22)(10, 23)(11, 24)(12, 25)(13, 26)(27, 40)(28, 41)(29, 42)(30, 43)(31, 44)(32, 45)(33, 46)(34, 47)(35, 48)(36, 49)(37, 50)(38, 51)(39, 52)", perm"(1, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(14, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15)(27, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28)(40, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4429,14 +4429,14 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 1, 2, 1, 2 ], [ 1, -3, 1, 3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (13, 12), (26, 36) ], [ (1, 1), (2, 3), (4, 1), (13, 1), (26, 3), (52, 1) ], true, false, true, true, 72) ], [ ([ perm"(1, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, +], [ (1, 1), (2, 3), (13, 12), (26, 36) ], [ (1, 1), (2, 3), (4, 1), (13, 1), (26, 3), (52, 1) ], true, false, true, true, 72) ], [ ([ perm"(1, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ -[ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +[ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (53, 52) ], [ (1, 1), (53, 1) ], true, true, true, true, 52) ], [ ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, -42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 22, 13, 4, 25, 16, 7, 21, 12, 3, 24, 15, 6, 27, 18, 9, 20, 11, 2, 23, 14, 5, 26, 17, 8, -19, 10)(28, 37, 46, 35, 44, 53, 32, 41, 50, 29, 38, 47, 36, 45, 54, 33, 42, 51, 30, 39, 48, 34, 43, 52, 31, 40, 49)", perm"(1, 8, 5, 2, 9, 6, 3, 7, 4)(10, 17, 14, 11, 18, 15, 12, 16, 13)(19, 26, 23, -20, 27, 24, 21, 25, 22)(28, 31, 34, 30, 33, 36, 29, 32, 35)(37, 40, 43, 39, 42, 45, 38, 41, 44)(46, 49, 52, 48, 51, 54, 47, 50, 53)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, +], [], [ (1, 1), (53, 52) ], [ (1, 1), (53, 1) ], true, true, true, true, 52) ], [ ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, +42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 22, 13, 4, 25, 16, 7, 21, 12, 3, 24, 15, 6, 27, 18, 9, 20, 11, 2, 23, 14, 5, 26, 17, 8, +19, 10)(28, 37, 46, 35, 44, 53, 32, 41, 50, 29, 38, 47, 36, 45, 54, 33, 42, 51, 30, 39, 48, 34, 43, 52, 31, 40, 49)", perm"(1, 8, 5, 2, 9, 6, 3, 7, 4)(10, 17, 14, 11, 18, 15, 12, 16, 13)(19, 26, 23, +20, 27, 24, 21, 25, 22)(28, 31, 34, 30, 33, 36, 29, 32, 35)(37, 40, 43, 39, 42, 45, 38, 41, 44)(46, 49, 52, 48, 51, 54, 47, 50, 53)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 4, 4, 4 ], @@ -4447,11 +4447,11 @@ perm"(1, 26, 2, 25)(3, 28, 4, 27)(5, 30, 6, 29)(7, 32, 8, 31)(9, 34, 10, 33)(11, [ 2, 2, 2, 3 ], [ -2, 1, -2, 1 ], [ 3, 3, 3, 4 ] -], [ (1, 1), (2, 27), (3, 2), (9, 6), (27, 18) ], [ (1, 1), (2, 27), (3, 1), (6, 9), (9, 1), (18, 3), (27, 1), (54, 1) ], false, false, true, false, 486), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, -32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 27, 18, 9, -24, 15, 6, 21, 12, 3, 26, 17, 8, 23, 14, 5, 20, 11, 2, 25, 16, 7, 22, 13, 4, 19, 10)(28, 54, 45, 36, 51, 42, 33, 48, 39, 30, 53, 44, 35, 50, 41, 32, 47, 38, 29, 52, 43, 34, 49, 40, 31, 46, 37)", +], [ (1, 1), (2, 27), (3, 2), (9, 6), (27, 18) ], [ (1, 1), (2, 27), (3, 1), (6, 9), (9, 1), (18, 3), (27, 1), (54, 1) ], false, false, true, false, 486), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, +32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 27, 18, 9, +24, 15, 6, 21, 12, 3, 26, 17, 8, 23, 14, 5, 20, 11, 2, 25, 16, 7, 22, 13, 4, 19, 10)(28, 54, 45, 36, 51, 42, 33, 48, 39, 30, 53, 44, 35, 50, 41, 32, 47, 38, 29, 52, 43, 34, 49, 40, 31, 46, 37)", perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)(19, 27, 24, 21, 26, 23, 20, 25, 22)(28, 36, 33, 30, 35, 32, 29, 34, 31)(37, 45, 42, 39, 44, 41, 38, 43, 40)(46, 54, 51, 48, 53, 50, -47, 52, 49)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, +47, 52, 49)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, 50)(52, 54, 53)" ], [ [ 1, 1 ], [ 4, 4, 4 ], @@ -4462,11 +4462,11 @@ perm"(1, 9, 6, 3, 8, 5, 2, 7, 4)(10, 18, 15, 12, 17, 14, 11, 16, 13)(19, 27, 24, [ 2, 2, 2, -3 ], [ -2, 1, 2, 1 ], [ 3, 3, 3, -4 ] -], [ (1, 1), (2, 1), (3, 2), (6, 2), (9, 6), (18, 6), (27, 18), (54, 18) ], [ (1, 1), (2, 1), (3, 1), (6, 1), (9, 1), (18, 1), (27, 1), (54, 1) ], true, true, true, true, 18), ([ perm"(1, 28)(2, -29)(3, 30)(4, 31)(5, 32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", -perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, -44)(36, 54, 45)", perm"(1, 8, 5, 2, 9, 6, 3, 7, 4)(10, 17, 14, 11, 18, 15, 12, 16, 13)(19, 26, 23, 20, 27, 24, 21, 25, 22)(28, 31, 34, 30, 33, 36, 29, 32, 35)(37, 40, 43, 39, 42, 45, 38, 41, 44)(46, -49, 52, 48, 51, 54, 47, 50, 53)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, +], [ (1, 1), (2, 1), (3, 2), (6, 2), (9, 6), (18, 6), (27, 18), (54, 18) ], [ (1, 1), (2, 1), (3, 1), (6, 1), (9, 1), (18, 1), (27, 1), (54, 1) ], true, true, true, true, 18), ([ perm"(1, 28)(2, +29)(3, 30)(4, 31)(5, 32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", +perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, +44)(36, 54, 45)", perm"(1, 8, 5, 2, 9, 6, 3, 7, 4)(10, 17, 14, 11, 18, 15, 12, 16, 13)(19, 26, 23, 20, 27, 24, 21, 25, 22)(28, 31, 34, 30, 33, 36, 29, 32, 35)(37, 40, 43, 39, 42, 45, 38, 41, 44)(46, +49, 52, 48, 51, 54, 47, 50, 53)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4481,10 +4481,10 @@ perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 1 [ 1, -3, 1, -3 ], [ 3, 3, 3, 4 ] ], [ (1, 1), (2, 9), (3, 8), (6, 18), (9, 18) ], [ (1, 1), (2, 9), (3, 4), (6, 12), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, false, 108), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, -33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 25, 16, 7, 22, 13, -4, 19, 10)(2, 26, 17, 8, 23, 14, 5, 20, 11)(3, 27, 18, 9, 24, 15, 6, 21, 12)(28, 52, 43, 34, 49, 40, 31, 46, 37)(29, 53, 44, 35, 50, 41, 32, 47, 38)(30, 54, 45, 36, 51, 42, 33, 48, 39)", perm"(1, 7, -4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, 50)(48, 54, -51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, +33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 25, 16, 7, 22, 13, +4, 19, 10)(2, 26, 17, 8, 23, 14, 5, 20, 11)(3, 27, 18, 9, 24, 15, 6, 21, 12)(28, 52, 43, 34, 49, 40, 31, 46, 37)(29, 53, 44, 35, 50, 41, 32, 47, 38)(30, 54, 45, 36, 51, 42, 33, 48, 39)", perm"(1, 7, +4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, 50)(48, 54, +51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -4499,10 +4499,10 @@ perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 1 [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ] ], [ (1, 1), (2, 3), (3, 8), (6, 6), (9, 18), (18, 18) ], [ (1, 1), (2, 3), (3, 4), (6, 4), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, false, 36), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, -32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, -20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", -perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 41, 45)(38, 42, 43)(39, 40, 44)(46, 51, 53)(47, 49, -54)(48, 50, 52)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, +32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, +20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", +perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 41, 45)(38, 42, 43)(39, 40, 44)(46, 51, 53)(47, 49, +54)(48, 50, 52)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4522,10 +4522,10 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24) [ -3, -4, 3, 4 ], [ 2, -3, -2, 3, -4 ] ], [ (1, 1), (2, 9), (3, 26), (6, 18) ], [ (1, 1), (2, 9), (3, 13), (6, 21), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, false, 108), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, 33)(7, -34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, 11)(3, 21, +34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", perm"(1, 8, 5, 2, 9, -6, 3, 7, 4)(10, 16, 15, 11, 17, 13, 12, 18, 14)(19, 27, 22, 20, 25, 23, 21, 26, 24)(28, 31, 34, 30, 33, 36, 29, 32, 35)(37, 41, 45, 39, 40, 44, 38, 42, 43)(46, 51, 53, 48, 50, 52, 47, 49, 54)", -perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, +6, 3, 7, 4)(10, 16, 15, 11, 17, 13, 12, 18, 14)(19, 27, 22, 20, 25, 23, 21, 26, 24)(28, 31, 34, 30, 33, 36, 29, 32, 35)(37, 41, 45, 39, 40, 44, 38, 42, 43)(46, 51, 53, 48, 50, 52, 47, 49, 54)", +perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4541,11 +4541,11 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) [ 3, 3, 3, 4 ], [ -2, -4, 2, 4 ], [ 2, -3, -2, 3, -4 ] -], [ (1, 1), (2, 9), (3, 8), (6, 18), (9, 18) ], [ (1, 1), (2, 9), (3, 4), (6, 12), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, false, 54), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, -33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 20, 11, 2, 21, 12, -3, 19, 10)(4, 23, 14, 5, 24, 15, 6, 22, 13)(7, 26, 17, 8, 27, 18, 9, 25, 16)(28, 37, 46, 30, 39, 48, 29, 38, 47)(31, 40, 49, 33, 42, 51, 32, 41, 50)(34, 43, 52, 36, 45, 54, 35, 44, 53)", perm"(1, 7, -4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 40, 43)(38, 41, 44)(39, 42, 45)(46, 49, 52)(47, 50, 53)(48, 51, -54)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, +], [ (1, 1), (2, 9), (3, 8), (6, 18), (9, 18) ], [ (1, 1), (2, 9), (3, 4), (6, 12), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, false, 54), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, +33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 20, 11, 2, 21, 12, +3, 19, 10)(4, 23, 14, 5, 24, 15, 6, 22, 13)(7, 26, 17, 8, 27, 18, 9, 25, 16)(28, 37, 46, 30, 39, 48, 29, 38, 47)(31, 40, 49, 33, 42, 51, 32, 41, 50)(34, 43, 52, 36, 45, 54, 35, 44, 53)", perm"(1, 7, +4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 40, 43)(38, 41, 44)(39, 42, 45)(46, 49, 52)(47, 50, 53)(48, 51, +54)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -4559,11 +4559,11 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) [ -2, 1, -2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, -3 ] -], [ (1, 1), (2, 27), (3, 8), (9, 18) ], [ (1, 1), (2, 27), (3, 4), (6, 36), (9, 4), (18, 12), (27, 1), (54, 1) ], false, false, true, false, 2916), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, -33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, -11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 37, 46)(29, 38, 47)(30, 39, 48)(31, 40, 49)(32, 41, 50)(33, 42, 51)(34, 43, 52)(35, 44, 53)(36, 45, 54)", perm"(1, -7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 41, 45)(38, 42, 43)(39, 40, 44)(46, 51, 53)(47, 49, 54)(48, 50, -52)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, +], [ (1, 1), (2, 27), (3, 8), (9, 18) ], [ (1, 1), (2, 27), (3, 4), (6, 36), (9, 4), (18, 12), (27, 1), (54, 1) ], false, false, true, false, 2916), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, +33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, +11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 37, 46)(29, 38, 47)(30, 39, 48)(31, 40, 49)(32, 41, 50)(33, 42, 51)(34, 43, 52)(35, 44, 53)(36, 45, 54)", perm"(1, +7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 41, 45)(38, 42, 43)(39, 40, 44)(46, 51, 53)(47, 49, 54)(48, 50, +52)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, 50)(52, 54, 53)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4582,11 +4582,11 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) [ 1, -4, 1, 4 ], [ -3, -4, 3, 4 ], [ 2, -3, -2, 3, -4 ] -], [ (1, 1), (2, 9), (3, 26), (6, 18) ], [ (1, 1), (2, 9), (3, 13), (6, 21), (9, 4), (18, 12), (27, 1), (54, 1) ], false, false, true, false, 432), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, -33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 21, 12, 3, 20, 11, -2, 19, 10)(4, 24, 15, 6, 23, 14, 5, 22, 13)(7, 27, 18, 9, 26, 17, 8, 25, 16)(28, 48, 39, 30, 47, 38, 29, 46, 37)(31, 51, 42, 33, 50, 41, 32, 49, 40)(34, 54, 45, 36, 53, 44, 35, 52, 43)", perm"(1, 7, -4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, 50)(48, 54, -51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, +], [ (1, 1), (2, 9), (3, 26), (6, 18) ], [ (1, 1), (2, 9), (3, 13), (6, 21), (9, 4), (18, 12), (27, 1), (54, 1) ], false, false, true, false, 432), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, +33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 21, 12, 3, 20, 11, +2, 19, 10)(4, 24, 15, 6, 23, 14, 5, 22, 13)(7, 27, 18, 9, 26, 17, 8, 25, 16)(28, 48, 39, 30, 47, 38, 29, 46, 37)(31, 51, 42, 33, 50, 41, 32, 49, 40)(34, 54, 45, 36, 53, 44, 35, 52, 43)", perm"(1, 7, +4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, 50)(48, 54, +51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, 50)(52, 54, 53)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -4600,11 +4600,11 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) [ -2, 1, 2, 1 ], [ -2, -3, 2, 3 ], [ 1, -3, 1, 3 ] -], [ (1, 1), (2, 1), (3, 8), (6, 8), (9, 18), (18, 18) ], [ (1, 1), (2, 1), (3, 4), (6, 4), (9, 4), (18, 4), (27, 1), (54, 1) ], true, false, true, true, 108), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, -32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, -20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", -perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 45, 41)(38, 43, 42)(39, 44, 40)(46, 53, 51)(47, 54, -49)(48, 52, 50)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, +], [ (1, 1), (2, 1), (3, 8), (6, 8), (9, 18), (18, 18) ], [ (1, 1), (2, 1), (3, 4), (6, 4), (9, 4), (18, 4), (27, 1), (54, 1) ], true, false, true, true, 108), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, +32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, +20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", +perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 45, 41)(38, 43, 42)(39, 44, 40)(46, 53, 51)(47, 54, +49)(48, 52, 50)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, 50)(52, 54, 53)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4623,11 +4623,11 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24) [ 1, -4, 1, 4 ], [ -3, -4, 3, 4 ], [ 2, -3, -2, 3, -4 ] -], [ (1, 1), (2, 1), (3, 26), (6, 26) ], [ (1, 1), (2, 1), (3, 13), (6, 13), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, true, 432), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, 33)(7, -34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 21, 12, 3, 20, 11, 2, 19, +], [ (1, 1), (2, 1), (3, 26), (6, 26) ], [ (1, 1), (2, 1), (3, 13), (6, 13), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, true, 432), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, 33)(7, +34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 21, 12, 3, 20, 11, 2, 19, 10)(4, 24, 15, 6, 23, 14, 5, 22, 13)(7, 27, 18, 9, 26, 17, 8, 25, 16)(28, 48, 39, 30, 47, 38, 29, 46, 37)(31, 51, 42, 33, 50, 41, 32, 49, 40)(34, 54, 45, 36, 53, 44, 35, 52, 43)", perm"(1, 7, 4)(2, 8, -5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 45, 41)(38, 43, 42)(39, 44, 40)(46, 53, 51)(47, 54, 49)(48, 52, 50)", -perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, +5)(3, 9, 6)(10, 18, 14)(11, 16, 15)(12, 17, 13)(19, 26, 24)(20, 27, 22)(21, 25, 23)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 45, 41)(38, 43, 42)(39, 44, 40)(46, 53, 51)(47, 54, 49)(48, 52, 50)", +perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, 50)(52, 54, 53)" ], [ [ 1, 1 ], [ 3, 3, 3 ], @@ -4643,11 +4643,11 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) [ 1, -3, 1, 3 ], [ -3, -4, 3, 4 ], [ 3, -2, -2, -3, -2 ] -], [ (1, 1), (2, 1), (3, 8), (6, 8), (9, 18), (18, 18) ], [ (1, 1), (2, 1), (3, 4), (6, 4), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, true, 54), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, -32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, -20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", -perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, -50)(48, 54, 51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, +], [ (1, 1), (2, 1), (3, 8), (6, 8), (9, 18), (18, 18) ], [ (1, 1), (2, 1), (3, 4), (6, 4), (9, 4), (18, 4), (27, 1), (54, 1) ], false, false, true, true, 54), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, +32)(6, 33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, +20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", +perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, +50)(48, 54, 51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4666,11 +4666,11 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22) [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 3), (3, 26), (6, 24) ], [ (1, 1), (2, 3), (3, 13), (6, 13), (9, 13), (18, 7), (27, 1), (54, 1) ], false, false, true, false, 288), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, -33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, -11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", perm"(1, -7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 40, 43)(38, 41, 44)(39, 42, 45)(46, 49, 52)(47, 50, 53)(48, 51, -54)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, +], [ (1, 1), (2, 3), (3, 26), (6, 24) ], [ (1, 1), (2, 3), (3, 13), (6, 13), (9, 13), (18, 7), (27, 1), (54, 1) ], false, false, true, false, 288), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, +33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, +11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", perm"(1, +7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 40, 43)(38, 41, 44)(39, 42, 45)(46, 49, 52)(47, 50, 53)(48, 51, +54)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4689,11 +4689,11 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22) [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 9), (3, 26), (6, 18) ], [ (1, 1), (2, 9), (3, 13), (6, 21), (9, 13), (18, 13), (27, 1), (54, 1) ], false, false, true, false, 864), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, -33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, -11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 37, 46)(29, 38, 47)(30, 39, 48)(31, 40, 49)(32, 41, 50)(33, 42, 51)(34, 43, 52)(35, 44, 53)(36, 45, 54)", perm"(1, -7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 40, 43)(38, 41, 44)(39, 42, 45)(46, 49, 52)(47, 50, 53)(48, 51, -54)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, +], [ (1, 1), (2, 9), (3, 26), (6, 18) ], [ (1, 1), (2, 9), (3, 13), (6, 21), (9, 13), (18, 13), (27, 1), (54, 1) ], false, false, true, false, 864), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, +33)(7, 34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, +11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 37, 46)(29, 38, 47)(30, 39, 48)(31, 40, 49)(32, 41, 50)(33, 42, 51)(34, 43, 52)(35, 44, 53)(36, 45, 54)", perm"(1, +7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 31, 34)(29, 32, 35)(30, 33, 36)(37, 40, 43)(38, 41, 44)(39, 42, 45)(46, 49, 52)(47, 50, 53)(48, 51, +54)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 29, 30)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4712,11 +4712,11 @@ perm"(1, 7, 4)(2, 8, 5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22) [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 27), (3, 26) ], [ (1, 1), (2, 27), (3, 13), (6, 117), (9, 13), (18, 39), (27, 1), (54, 1) ], false, false, true, false, 303264), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, 33)(7, -34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, 11)(3, 21, +], [ (1, 1), (2, 27), (3, 26) ], [ (1, 1), (2, 27), (3, 13), (6, 117), (9, 13), (18, 39), (27, 1), (54, 1) ], false, false, true, false, 303264), ([ perm"(1, 28)(2, 29)(3, 30)(4, 31)(5, 32)(6, 33)(7, +34)(8, 35)(9, 36)(10, 37)(11, 38)(12, 39)(13, 40)(14, 41)(15, 42)(16, 43)(17, 44)(18, 45)(19, 46)(20, 47)(21, 48)(22, 49)(23, 50)(24, 51)(25, 52)(26, 53)(27, 54)", perm"(1, 19, 10)(2, 20, 11)(3, 21, 12)(4, 22, 13)(5, 23, 14)(6, 24, 15)(7, 25, 16)(8, 26, 17)(9, 27, 18)(28, 46, 37)(29, 47, 38)(30, 48, 39)(31, 49, 40)(32, 50, 41)(33, 51, 42)(34, 52, 43)(35, 53, 44)(36, 54, 45)", perm"(1, 7, 4)(2, 8, -5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, 50)(48, 54, 51)", -perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, +5)(3, 9, 6)(10, 16, 13)(11, 17, 14)(12, 18, 15)(19, 25, 22)(20, 26, 23)(21, 27, 24)(28, 34, 31)(29, 35, 32)(30, 36, 33)(37, 43, 40)(38, 44, 41)(39, 45, 42)(46, 52, 49)(47, 53, 50)(48, 54, 51)", +perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, 50)(52, 54, 53)" ], [ [ 1, 1 ], [ 2, 2, 2 ], @@ -4735,8 +4735,8 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) [ -2, -4, 2, 4 ], [ 1, -4, 1, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 1), (3, 26), (6, 26) ], [ (1, 1), (2, 1), (3, 13), (6, 13), (9, 13), (18, 13), (27, 1), (54, 1) ], true, false, true, true, 11232) ], [ ([ perm"(1, 45, 34, 23, 12)(2, 46, 35, 24, -13)(3, 47, 36, 25, 14)(4, 48, 37, 26, 15)(5, 49, 38, 27, 16)(6, 50, 39, 28, 17)(7, 51, 40, 29, 18)(8, 52, 41, 30, 19)(9, 53, 42, 31, 20)(10, 54, 43, 32, 21)(11, 55, 44, 33, 22)", perm"(1, 11, 10, 9, +], [ (1, 1), (2, 1), (3, 26), (6, 26) ], [ (1, 1), (2, 1), (3, 13), (6, 13), (9, 13), (18, 13), (27, 1), (54, 1) ], true, false, true, true, 11232) ], [ ([ perm"(1, 45, 34, 23, 12)(2, 46, 35, 24, +13)(3, 47, 36, 25, 14)(4, 48, 37, 26, 15)(5, 49, 38, 27, 16)(6, 50, 39, 28, 17)(7, 51, 40, 29, 18)(8, 52, 41, 30, 19)(9, 53, 42, 31, 20)(10, 54, 43, 32, 21)(11, 55, 44, 33, 22)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 19, 15, 22, 18, 14, 21, 17, 13, 20, 16)(23, 29, 24, 30, 25, 31, 26, 32, 27, 33, 28)(34, 36, 38, 40, 42, 44, 35, 37, 39, 41, 43)(45, 53, 50, 47, 55, 52, 49, 46, 54, 51, 48)" ], [ [ 1, 1, 1, 1, 1 ], @@ -4745,18 +4745,18 @@ perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20) ], [ [ 2, 1, -2, -1, 2, 2 ], [ 1, -2, -1, -1, 2, 1, -2 ] -], [ (1, 1), (5, 44), (11, 10) ], [ (1, 1), (5, 11), (11, 1), (55, 1) ], false, false, true, false, 110), ([ perm"(1, 45, 34, 23, 12)(2, 46, 35, 24, 13)(3, 47, 36, 25, 14)(4, 48, 37, 26, 15)(5, 49, -38, 27, 16)(6, 50, 39, 28, 17)(7, 51, 40, 29, 18)(8, 52, 41, 30, 19)(9, 53, 42, 31, 20)(10, 54, 43, 32, 21)(11, 55, 44, 33, 22)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, +], [ (1, 1), (5, 44), (11, 10) ], [ (1, 1), (5, 11), (11, 1), (55, 1) ], false, false, true, false, 110), ([ perm"(1, 45, 34, 23, 12)(2, 46, 35, 24, 13)(3, 47, 36, 25, 14)(4, 48, 37, 26, 15)(5, 49, +38, 27, 16)(6, 50, 39, 28, 17)(7, 51, 40, 29, 18)(8, 52, 41, 30, 19)(9, 53, 42, 31, 20)(10, 54, 43, 32, 21)(11, 55, 44, 33, 22)", perm"(1, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(12, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13)(23, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24)(34, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35)(45, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46)" ], [ [ 1, 1, 1, 1, 1 ], [ -1, -2, 1, 2 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -1, -2, 1, 2 ] -], [ (1, 1), (5, 4), (11, 10), (55, 40) ], [ (1, 1), (5, 1), (11, 1), (55, 1) ], true, true, true, true, 40) ], [ ([ perm"(1, 50, 22, 36, 8, 43, 15, 29)(2, 51, 23, 37, 9, 44, 16, 30)(3, 52, 24, 38, -10, 45, 17, 31)(4, 53, 25, 39, 11, 46, 18, 32)(5, 54, 26, 40, 12, 47, 19, 33)(6, 55, 27, 41, 13, 48, 20, 34)(7, 56, 28, 42, 14, 49, 21, 35)", perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, -11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, 28, 14, 21)(29, 50, 36, 43)(30, 51, 37, 44)(31, 52, 38, 45)(32, 53, 39, 46)(33, 54, 40, 47)(34, 55, 41, 48)(35, 56, 42, 49)", perm"(1, 8)(2, 9)(3, 10)(4, -11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", +], [ (1, 1), (5, 4), (11, 10), (55, 40) ], [ (1, 1), (5, 1), (11, 1), (55, 1) ], true, true, true, true, 40) ], [ ([ perm"(1, 50, 22, 36, 8, 43, 15, 29)(2, 51, 23, 37, 9, 44, 16, 30)(3, 52, 24, 38, +10, 45, 17, 31)(4, 53, 25, 39, 11, 46, 18, 32)(5, 54, 26, 40, 12, 47, 19, 33)(6, 55, 27, 41, 13, 48, 20, 34)(7, 56, 28, 42, 14, 49, 21, 35)", perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, +11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, 28, 14, 21)(29, 50, 36, 43)(30, 51, 37, 44)(31, 52, 38, 45)(32, 53, 39, 46)(33, 54, 40, 47)(34, 55, 41, 48)(35, 56, 42, 49)", perm"(1, 8)(2, 9)(3, 10)(4, +11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)(43, 44, 45, 46, 47, 48, 49)(50, 51, 52, 53, 54, 55, 56)" ], [ [ 2, 2, 2, 2 ], @@ -4770,10 +4770,10 @@ perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16) [ 2, 1, 1, 3 ], [ -1, -4, 1, -4 ] ], [ (1, 1), (2, 1), (4, 2), (7, 6), (8, 28), (14, 6), (28, 12) ], [ (1, 1), (2, 1), (4, 1), (7, 1), (8, 7), (14, 1), (28, 1), (56, 1) ], false, false, true, false, 168), ([ perm"(1, 32, 4, 30, 2, 31, -3, 29)(5, 36, 8, 34, 6, 35, 7, 33)(9, 40, 12, 38, 10, 39, 11, 37)(13, 44, 16, 42, 14, 43, 15, 41)(17, 48, 20, 46, 18, 47, 19, 45)(21, 52, 24, 50, 22, 51, 23, 49)(25, 56, 28, 54, 26, 55, 27, 53)", +3, 29)(5, 36, 8, 34, 6, 35, 7, 33)(9, 40, 12, 38, 10, 39, 11, 37)(13, 44, 16, 42, 14, 43, 15, 41)(17, 48, 20, 46, 18, 47, 19, 45)(21, 52, 24, 50, 22, 51, 23, 49)(25, 56, 28, 54, 26, 55, 27, 53)", perm"(1, 25, 21, 17, 13, 9, 5)(2, 26, 22, 18, 14, 10, 6)(3, 27, 23, 19, 15, 11, 7)(4, 28, 24, 20, 16, 12, 8)(29, 53, 49, 45, 41, 37, 33)(30, 54, 50, 46, 42, 38, 34)(31, 55, 51, 47, 43, 39, 35)(32, 56, -52, 48, 44, 40, 36)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, -48, 46, 47)(49, 52, 50, 51)(53, 56, 54, 55)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, +52, 48, 44, 40, 36)", perm"(1, 4, 2, 3)(5, 8, 6, 7)(9, 12, 10, 11)(13, 16, 14, 15)(17, 20, 18, 19)(21, 24, 22, 23)(25, 28, 26, 27)(29, 32, 30, 31)(33, 36, 34, 35)(37, 40, 38, 39)(41, 44, 42, 43)(45, +48, 46, 47)(49, 52, 50, 51)(53, 56, 54, 55)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)(49, 50)(51, 52)(53, 54)(55, 56)" ], [ [ 3, 3, 3, 3 ], [ 4, 4 ], @@ -4785,11 +4785,11 @@ perm"(1, 25, 21, 17, 13, 9, 5)(2, 26, 22, 18, 14, 10, 6)(3, 27, 23, 19, 15, 11, [ -1, -1, 3 ], [ 3, 1, 1, 4 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (2, 1), (4, 2), (7, 6), (8, 4), (14, 6), (28, 12), (56, 24) ], [ (1, 1), (2, 1), (4, 1), (7, 1), (8, 1), (14, 1), (28, 1), (56, 1) ], true, true, true, true, 24), ([ perm"(1, 36, 8, +], [ (1, 1), (2, 1), (4, 2), (7, 6), (8, 4), (14, 6), (28, 12), (56, 24) ], [ (1, 1), (2, 1), (4, 1), (7, 1), (8, 1), (14, 1), (28, 1), (56, 1) ], true, true, true, true, 24), ([ perm"(1, 36, 8, 29)(2, 37, 9, 30)(3, 38, 10, 31)(4, 39, 11, 32)(5, 40, 12, 33)(6, 41, 13, 34)(7, 42, 14, 35)(15, 50, 22, 43)(16, 51, 23, 44)(17, 52, 24, 45)(18, 53, 25, 46)(19, 54, 26, 47)(20, 55, 27, 48)(21, 56, 28, -49)", perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, 28, 14, 21)(29, 43, 36, 50)(30, 44, 37, 51)(31, 45, 38, 52)(32, 46, 39, 53)(33, 47, 40, 54)(34, -48, 41, 55)(35, 49, 42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, -50)(44, 51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, +49)", perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, 28, 14, 21)(29, 43, 36, 50)(30, 44, 37, 51)(31, 45, 38, 52)(32, 46, 39, 53)(33, 47, 40, 54)(34, +48, 41, 55)(35, 49, 42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, +50)(44, 51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)(43, 44, 45, 46, 47, 48, 49)(50, 51, 52, 53, 54, 55, 56)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -4806,11 +4806,11 @@ perm"(1, 25, 21, 17, 13, 9, 5)(2, 26, 22, 18, 14, 10, 6)(3, 27, 23, 19, 15, 11, [ -1, -2, 1, -2 ], [ -1, -4, 1, -4 ], [ -2, -4, 2, 4 ] -], [ (1, 1), (2, 1), (4, 30), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 1), (4, 15), (7, 1), (8, 7), (14, 1), (28, 3), (56, 1) ], false, false, true, false, 336), ([ perm"(1, 29)(2, 30)(3, 31)(4, -32)(5, 33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", +], [ (1, 1), (2, 1), (4, 30), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 1), (4, 15), (7, 1), (8, 7), (14, 1), (28, 3), (56, 1) ], false, false, true, false, 336), ([ perm"(1, 29)(2, 30)(3, 31)(4, +32)(5, 33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, 28, 14, 21)(29, 50, 36, 43)(30, 51, 37, 44)(31, 52, 38, 45)(32, 53, 39, 46)(33, 54, 40, 47)(34, 55, 41, -48)(35, 56, 42, 49)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, -51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, +48)(35, 56, 42, 49)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, +51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)(43, 44, 45, 46, 47, 48, 49)(50, 51, 52, 53, 54, 55, 56)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -4825,11 +4825,11 @@ perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6 [ -2, 1, 2, 1 ], [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ] -], [ (1, 1), (2, 15), (4, 16), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 15), (4, 15), (7, 1), (8, 7), (14, 3), (28, 3), (56, 1) ], false, false, true, false, 168), ([ perm"(1, 29)(2, 30)(3, 31)(4, -32)(5, 33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", +], [ (1, 1), (2, 15), (4, 16), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 15), (4, 15), (7, 1), (8, 7), (14, 3), (28, 3), (56, 1) ], false, false, true, false, 168), ([ perm"(1, 29)(2, 30)(3, 31)(4, +32)(5, 33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6, 27, 13, 20)(7, 28, 14, 21)(29, 43, 36, 50)(30, 44, 37, 51)(31, 45, 38, 52)(32, 46, 39, 53)(33, 47, 40, 54)(34, 48, 41, -55)(35, 49, 42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, -51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, +55)(35, 49, 42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, +51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)(43, 44, 45, 46, 47, 48, 49)(50, 51, 52, 53, 54, 55, 56)" ], [ [ 1, 1 ], [ 2, 2, 2, 2 ], @@ -4844,11 +4844,11 @@ perm"(1, 22, 8, 15)(2, 23, 9, 16)(3, 24, 10, 17)(4, 25, 11, 18)(5, 26, 12, 19)(6 [ -2, 1, -2, 1 ], [ -2, -4, 2, 4 ], [ 1, -4, 1, -4 ] -], [ (1, 1), (2, 29), (4, 2), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 29), (4, 15), (7, 1), (8, 7), (14, 5), (28, 3), (56, 1) ], false, false, true, false, 336), ([ perm"(1, 36, 8, 29)(2, 37, 9, -30)(3, 38, 10, 31)(4, 39, 11, 32)(5, 40, 12, 33)(6, 41, 13, 34)(7, 42, 14, 35)(15, 50, 22, 43)(16, 51, 23, 44)(17, 52, 24, 45)(18, 53, 25, 46)(19, 54, 26, 47)(20, 55, 27, 48)(21, 56, 28, 49)", +], [ (1, 1), (2, 29), (4, 2), (7, 6), (14, 6), (28, 12) ], [ (1, 1), (2, 29), (4, 15), (7, 1), (8, 7), (14, 5), (28, 3), (56, 1) ], false, false, true, false, 336), ([ perm"(1, 36, 8, 29)(2, 37, 9, +30)(3, 38, 10, 31)(4, 39, 11, 32)(5, 40, 12, 33)(6, 41, 13, 34)(7, 42, 14, 35)(15, 50, 22, 43)(16, 51, 23, 44)(17, 52, 24, 45)(18, 53, 25, 46)(19, 54, 26, 47)(20, 55, 27, 48)(21, 56, 28, 49)", perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 43)(30, 44)(31, 45)(32, 46)(33, 47)(34, 48)(35, 49)(36, 50)(37, 51)(38, 52)(39, 53)(40, -54)(41, 55)(42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, -51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, +54)(41, 55)(42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, +51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)(43, 44, 45, 46, 47, 48, 49)(50, 51, 52, 53, 54, 55, 56)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -4863,11 +4863,11 @@ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, [ -1, 2, 1, 2 ], [ -1, -4, 1, -4 ], [ 2, -4, 2, 4 ] -], [ (1, 1), (2, 3), (4, 28), (7, 6), (14, 18) ], [ (1, 1), (2, 3), (4, 15), (7, 1), (8, 7), (14, 3), (28, 3), (56, 1) ], false, false, true, false, 336), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, -33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, -15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 50)(30, 51)(31, 52)(32, 53)(33, 54)(34, 55)(35, 56)(36, 43)(37, 44)(38, 45)(39, 46)(40, 47)(41, -48)(42, 49)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, -52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, +], [ (1, 1), (2, 3), (4, 28), (7, 6), (14, 18) ], [ (1, 1), (2, 3), (4, 15), (7, 1), (8, 7), (14, 3), (28, 3), (56, 1) ], false, false, true, false, 336), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, +33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, +15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 50)(30, 51)(31, 52)(32, 53)(33, 54)(34, 55)(35, 56)(36, 43)(37, 44)(38, 45)(39, 46)(40, 47)(41, +48)(42, 49)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, +52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)(43, 44, 45, 46, 47, 48, 49)(50, 51, 52, 53, 54, 55, 56)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4887,10 +4887,10 @@ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, [ 3, -4, 3, 4 ], [ 1, 2, 1, 2, 3 ] ], [ (1, 1), (2, 17), (4, 14), (7, 6), (14, 18) ], [ (1, 1), (2, 17), (4, 15), (7, 1), (8, 7), (14, 5), (28, 3), (56, 1) ], false, false, true, false, 168), ([ perm"(1, 30, 2, 29)(3, 32, 4, 31)(5, 34, -6, 33)(7, 36, 8, 35)(9, 38, 10, 37)(11, 40, 12, 39)(13, 42, 14, 41)(15, 44, 16, 43)(17, 46, 18, 45)(19, 48, 20, 47)(21, 50, 22, 49)(23, 52, 24, 51)(25, 54, 26, 53)(27, 56, 28, 55)", perm"(1, 15)(2, +6, 33)(7, 36, 8, 35)(9, 38, 10, 37)(11, 40, 12, 39)(13, 42, 14, 41)(15, 44, 16, 43)(17, 46, 18, 45)(19, 48, 20, 47)(21, 50, 22, 49)(23, 52, 24, 51)(25, 54, 26, 53)(27, 56, 28, 55)", perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 43)(30, 44)(31, 45)(32, 46)(33, 47)(34, 48)(35, 49)(36, 50)(37, 51)(38, 52)(39, 53)(40, 54)(41, 55)(42, -56)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)(29, 41, 39, 37, 35, 33, 31)(30, 42, 40, 38, 36, 34, 32)(43, 55, 53, 51, 49, 47, -45)(44, 56, 54, 52, 50, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, +56)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)(29, 41, 39, 37, 35, 33, 31)(30, 42, 40, 38, 36, 34, 32)(43, 55, 53, 51, 49, 47, +45)(44, 56, 54, 52, 50, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)(49, 50)(51, 52)(53, 54)(55, 56)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -4905,11 +4905,11 @@ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, [ -1, 2, 1, 2 ], [ -1, -3, 1, 3 ], [ 2, -3, 2, 3 ] -], [ (1, 1), (2, 3), (4, 4), (7, 6), (14, 18), (28, 24) ], [ (1, 1), (2, 3), (4, 3), (7, 1), (8, 1), (14, 3), (28, 3), (56, 1) ], true, false, true, true, 48), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, -33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, -15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 44)(30, 43)(31, 46)(32, 45)(33, 48)(34, 47)(35, 50)(36, 49)(37, 52)(38, 51)(39, 54)(40, 53)(41, -56)(42, 55)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)(29, 41, 39, 37, 35, 33, 31)(30, 42, 40, 38, 36, 34, 32)(43, 55, 53, 51, 49, -47, 45)(44, 56, 54, 52, 50, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, +], [ (1, 1), (2, 3), (4, 4), (7, 6), (14, 18), (28, 24) ], [ (1, 1), (2, 3), (4, 3), (7, 1), (8, 1), (14, 3), (28, 3), (56, 1) ], true, false, true, true, 48), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, +33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, +15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 44)(30, 43)(31, 46)(32, 45)(33, 48)(34, 47)(35, 50)(36, 49)(37, 52)(38, 51)(39, 54)(40, 53)(41, +56)(42, 55)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)(29, 41, 39, 37, 35, 33, 31)(30, 42, 40, 38, 36, 34, 32)(43, 55, 53, 51, 49, +47, 45)(44, 56, 54, 52, 50, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)(49, 50)(51, 52)(53, 54)(55, 56)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -4929,10 +4929,10 @@ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, [ -3, 4, 3, 4 ], [ 1, 2, 1, 2, 4 ] ], [ (1, 1), (2, 5), (4, 2), (7, 6), (14, 30), (28, 12) ], [ (1, 1), (2, 5), (4, 3), (7, 1), (8, 1), (14, 5), (28, 3), (56, 1) ], false, false, true, true, 48), ([ perm"(1, 30, 2, 29)(3, 32, 4, 31)(5, -34, 6, 33)(7, 36, 8, 35)(9, 38, 10, 37)(11, 40, 12, 39)(13, 42, 14, 41)(15, 44, 16, 43)(17, 46, 18, 45)(19, 48, 20, 47)(21, 50, 22, 49)(23, 52, 24, 51)(25, 54, 26, 53)(27, 56, 28, 55)", perm"(1, 16, -2, 15)(3, 18, 4, 17)(5, 20, 6, 19)(7, 22, 8, 21)(9, 24, 10, 23)(11, 26, 12, 25)(13, 28, 14, 27)(29, 43, 30, 44)(31, 45, 32, 46)(33, 47, 34, 48)(35, 49, 36, 50)(37, 51, 38, 52)(39, 53, 40, 54)(41, 55, -42, 56)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)(29, 41, 39, 37, 35, 33, 31)(30, 42, 40, 38, 36, 34, 32)(43, 55, 53, 51, 49, 47, -45)(44, 56, 54, 52, 50, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, +34, 6, 33)(7, 36, 8, 35)(9, 38, 10, 37)(11, 40, 12, 39)(13, 42, 14, 41)(15, 44, 16, 43)(17, 46, 18, 45)(19, 48, 20, 47)(21, 50, 22, 49)(23, 52, 24, 51)(25, 54, 26, 53)(27, 56, 28, 55)", perm"(1, 16, +2, 15)(3, 18, 4, 17)(5, 20, 6, 19)(7, 22, 8, 21)(9, 24, 10, 23)(11, 26, 12, 25)(13, 28, 14, 27)(29, 43, 30, 44)(31, 45, 32, 46)(33, 47, 34, 48)(35, 49, 36, 50)(37, 51, 38, 52)(39, 53, 40, 54)(41, 55, +42, 56)", perm"(1, 13, 11, 9, 7, 5, 3)(2, 14, 12, 10, 8, 6, 4)(15, 27, 25, 23, 21, 19, 17)(16, 28, 26, 24, 22, 20, 18)(29, 41, 39, 37, 35, 33, 31)(30, 42, 40, 38, 36, 34, 32)(43, 55, 53, 51, 49, 47, +45)(44, 56, 54, 52, 50, 48, 46)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)(49, 50)(51, 52)(53, 54)(55, 56)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], @@ -4949,11 +4949,11 @@ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, [ -1, -2, 1, -2 ], [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] -], [ (1, 1), (2, 1), (4, 6), (7, 6), (14, 6), (28, 36) ], [ (1, 1), (2, 1), (4, 3), (7, 1), (8, 1), (14, 1), (28, 3), (56, 1) ], false, false, true, true, 144), ([ perm"(1, 49, 41, 33, 25, 17, 9)(2, -50, 42, 34, 26, 18, 10)(3, 51, 43, 35, 27, 19, 11)(4, 52, 44, 36, 28, 20, 12)(5, 53, 45, 37, 29, 21, 13)(6, 54, 46, 38, 30, 22, 14)(7, 55, 47, 39, 31, 23, 15)(8, 56, 48, 40, 32, 24, 16)", perm"(1, -5)(2, 6)(3, 7)(4, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 30)(26, 29)(27, 32)(28, 31)(33, 40)(34, 39)(35, 38)(36, 37)(41, 47)(42, 48)(43, 45)(44, 46)(49, 52)(50, 51)(53, -56)(54, 55)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 32)(26, 31)(27, 30)(28, 29)(33, 39)(34, 40)(35, 37)(36, 38)(41, 44)(42, 43)(45, 48)(46, -47)(49, 53)(50, 54)(51, 55)(52, 56)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 14)(10, 13)(11, 16)(12, 15)(17, 24)(18, 23)(19, 22)(20, 21)(25, 31)(26, 32)(27, 29)(28, 30)(33, 36)(34, 35)(37, 40)(38, 39)(41, +], [ (1, 1), (2, 1), (4, 6), (7, 6), (14, 6), (28, 36) ], [ (1, 1), (2, 1), (4, 3), (7, 1), (8, 1), (14, 1), (28, 3), (56, 1) ], false, false, true, true, 144), ([ perm"(1, 49, 41, 33, 25, 17, 9)(2, +50, 42, 34, 26, 18, 10)(3, 51, 43, 35, 27, 19, 11)(4, 52, 44, 36, 28, 20, 12)(5, 53, 45, 37, 29, 21, 13)(6, 54, 46, 38, 30, 22, 14)(7, 55, 47, 39, 31, 23, 15)(8, 56, 48, 40, 32, 24, 16)", perm"(1, +5)(2, 6)(3, 7)(4, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 30)(26, 29)(27, 32)(28, 31)(33, 40)(34, 39)(35, 38)(36, 37)(41, 47)(42, 48)(43, 45)(44, 46)(49, 52)(50, 51)(53, +56)(54, 55)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 22)(18, 21)(19, 24)(20, 23)(25, 32)(26, 31)(27, 30)(28, 29)(33, 39)(34, 40)(35, 37)(36, 38)(41, 44)(42, 43)(45, 48)(46, +47)(49, 53)(50, 54)(51, 55)(52, 56)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 14)(10, 13)(11, 16)(12, 15)(17, 24)(18, 23)(19, 22)(20, 21)(25, 31)(26, 32)(27, 29)(28, 30)(33, 36)(34, 35)(37, 40)(38, 39)(41, 45)(42, 46)(43, 47)(44, 48)(49, 51)(50, 52)(53, 55)(54, 56)" ], [ [ 2, 2 ], [ 3, 3 ], @@ -4970,10 +4970,10 @@ perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, [ 2, 3, 2, 3 ], [ 2, 4, 2, 4 ], [ 1, 2, -1, 3, 4 ] -], [ (1, 1), (2, 7), (7, 48) ], [ (1, 1), (2, 7), (4, 7), (7, 8), (8, 1), (56, 1) ], false, false, true, false, 168), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, 33)(6, 34)(7, 35)(8, 36)(9, 37)(10, +], [ (1, 1), (2, 7), (7, 48) ], [ (1, 1), (2, 7), (4, 7), (7, 8), (8, 1), (56, 1) ], false, false, true, false, 168), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, 33)(6, 34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, -21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 43)(30, 44)(31, 45)(32, 46)(33, 47)(34, 48)(35, 49)(36, 50)(37, 51)(38, 52)(39, 53)(40, 54)(41, 55)(42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, -11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", +21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 43)(30, 44)(31, 45)(32, 46)(33, 47)(34, 48)(35, 49)(36, 50)(37, 51)(38, 52)(39, 53)(40, 54)(41, 55)(42, 56)", perm"(1, 8)(2, 9)(3, 10)(4, +11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, 52)(46, 53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 30, 31, 32, 33, 34, 35)(36, 37, 38, 39, 40, 41, 42)(43, 44, 45, 46, 47, 48, 49)(50, 51, 52, 53, 54, 55, 56)" ], [ [ 1, 1 ], @@ -4993,11 +4993,11 @@ perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16) [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 31), (7, 6), (14, 18) ], [ (1, 1), (2, 31), (4, 43), (7, 1), (8, 7), (14, 7), (28, 7), (56, 1) ], false, false, true, false, 1008), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, 33)(6, -34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, 15)(2, +], [ (1, 1), (2, 31), (7, 6), (14, 18) ], [ (1, 1), (2, 31), (4, 43), (7, 1), (8, 7), (14, 7), (28, 7), (56, 1) ], false, false, true, false, 1008), ([ perm"(1, 29)(2, 30)(3, 31)(4, 32)(5, 33)(6, +34)(7, 35)(8, 36)(9, 37)(10, 38)(11, 39)(12, 40)(13, 41)(14, 42)(15, 43)(16, 44)(17, 45)(18, 46)(19, 47)(20, 48)(21, 49)(22, 50)(23, 51)(24, 52)(25, 53)(26, 54)(27, 55)(28, 56)", perm"(1, 15)(2, 16)(3, 17)(4, 18)(5, 19)(6, 20)(7, 21)(8, 22)(9, 23)(10, 24)(11, 25)(12, 26)(13, 27)(14, 28)(29, 43)(30, 44)(31, 45)(32, 46)(33, 47)(34, 48)(35, 49)(36, 50)(37, 51)(38, 52)(39, 53)(40, 54)(41, 55)(42, -56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, 52)(46, -53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)(36, 42, 41, 40, 39, 38, 37)(43, +56)", perm"(1, 8)(2, 9)(3, 10)(4, 11)(5, 12)(6, 13)(7, 14)(15, 22)(16, 23)(17, 24)(18, 25)(19, 26)(20, 27)(21, 28)(29, 36)(30, 37)(31, 38)(32, 39)(33, 40)(34, 41)(35, 42)(43, 50)(44, 51)(45, 52)(46, +53)(47, 54)(48, 55)(49, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)(36, 42, 41, 40, 39, 38, 37)(43, 49, 48, 47, 46, 45, 44)(50, 56, 55, 54, 53, 52, 51)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -5016,9 +5016,9 @@ perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16) [ 1, -4, 1, 4 ], [ 2, -4, 2, 4 ], [ 3, -4, 3, 4 ] -], [ (1, 1), (2, 7), (7, 6), (14, 42) ], [ (1, 1), (2, 7), (4, 7), (7, 1), (8, 1), (14, 7), (28, 7), (56, 1) ], true, false, true, true, 1008) ], [ ([ perm"(1, 39, 20)(2, 40, 21)(3, 41, 22)(4, 42, -23)(5, 43, 24)(6, 44, 25)(7, 45, 26)(8, 46, 27)(9, 47, 28)(10, 48, 29)(11, 49, 30)(12, 50, 31)(13, 51, 32)(14, 52, 33)(15, 53, 34)(16, 54, 35)(17, 55, 36)(18, 56, 37)(19, 57, 38)", perm"(1, 19, 18, -17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(20, 32, 25, 37, 30, 23, 35, 28, 21, 33, 26, 38, 31, 24, 36, 29, 22, 34, 27)(39, 47, 55, 44, 52, 41, 49, 57, 46, 54, 43, 51, 40, 48, 56, 45, 53, +], [ (1, 1), (2, 7), (7, 6), (14, 42) ], [ (1, 1), (2, 7), (4, 7), (7, 1), (8, 1), (14, 7), (28, 7), (56, 1) ], true, false, true, true, 1008) ], [ ([ perm"(1, 39, 20)(2, 40, 21)(3, 41, 22)(4, 42, +23)(5, 43, 24)(6, 44, 25)(7, 45, 26)(8, 46, 27)(9, 47, 28)(10, 48, 29)(11, 49, 30)(12, 50, 31)(13, 51, 32)(14, 52, 33)(15, 53, 34)(16, 54, 35)(17, 55, 36)(18, 56, 37)(19, 57, 38)", perm"(1, 19, 18, +17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(20, 32, 25, 37, 30, 23, 35, 28, 21, 33, 26, 38, 31, 24, 36, 29, 22, 34, 27)(39, 47, 55, 44, 52, 41, 49, 57, 46, 54, 43, 51, 40, 48, 56, 45, 53, 42, 50)" ], [ [ 1, 1, 1 ], [ -2, -1, -2, -1, -2, -1 ], @@ -5028,7 +5028,7 @@ perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16) [ -2, -1, -2, -1, -2, -1 ], [ -2, 1, -2, 1, -2, 1 ], [ 1, -2, -2, -1, 2, 2, 2 ] -], [ (1, 1), (3, 38), (19, 18) ], [ (1, 1), (3, 19), (19, 1), (57, 1) ], false, false, true, false, 342), ([ perm"(1, 39, 20)(2, 40, 21)(3, 41, 22)(4, 42, 23)(5, 43, 24)(6, 44, 25)(7, 45, 26)(8, 46, +], [ (1, 1), (3, 38), (19, 18) ], [ (1, 1), (3, 19), (19, 1), (57, 1) ], false, false, true, false, 342), ([ perm"(1, 39, 20)(2, 40, 21)(3, 41, 22)(4, 42, 23)(5, 43, 24)(6, 44, 25)(7, 45, 26)(8, 46, 27)(9, 47, 28)(10, 48, 29)(11, 49, 30)(12, 50, 31)(13, 51, 32)(14, 52, 33)(15, 53, 34)(16, 54, 35)(17, 55, 36)(18, 56, 37)(19, 57, 38)", perm"(1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(20, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21)(39, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40)" ], [ [ 1, 1, 1 ], @@ -5036,31 +5036,31 @@ perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16) [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -1, -2, 1, 2 ] -], [ (1, 1), (3, 2), (19, 18), (57, 36) ], [ (1, 1), (3, 1), (19, 1), (57, 1) ], true, true, true, true, 36) ], [ ([ perm"(1, 30)(2, 31)(3, 32)(4, 33)(5, 34)(6, 35)(7, 36)(8, 37)(9, 38)(10, 39)(11, -40)(12, 41)(13, 42)(14, 43)(15, 44)(16, 45)(17, 46)(18, 47)(19, 48)(20, 49)(21, 50)(22, 51)(23, 52)(24, 53)(25, 54)(26, 55)(27, 56)(28, 57)(29, 58)", perm"(1, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, +], [ (1, 1), (3, 2), (19, 18), (57, 36) ], [ (1, 1), (3, 1), (19, 1), (57, 1) ], true, true, true, true, 36) ], [ ([ perm"(1, 30)(2, 31)(3, 32)(4, 33)(5, 34)(6, 35)(7, 36)(8, 37)(9, 38)(10, 39)(11, +40)(12, 41)(13, 42)(14, 43)(15, 44)(16, 45)(17, 46)(18, 47)(19, 48)(20, 49)(21, 50)(22, 51)(23, 52)(24, 53)(25, 54)(26, 55)(27, 56)(28, 57)(29, 58)", perm"(1, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58)" ], [ [ 1, 1 ], [ -2, 1, -2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 29), (29, 28) ], [ (1, 1), (2, 29), (29, 1), (58, 1) ], false, false, true, false, 812), ([ perm"(1, 30)(2, 31)(3, 32)(4, 33)(5, 34)(6, 35)(7, 36)(8, 37)(9, 38)(10, 39)(11, 40)(12, -41)(13, 42)(14, 43)(15, 44)(16, 45)(17, 46)(18, 47)(19, 48)(20, 49)(21, 50)(22, 51)(23, 52)(24, 53)(25, 54)(26, 55)(27, 56)(28, 57)(29, 58)", perm"(1, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, +], [ (1, 1), (2, 29), (29, 28) ], [ (1, 1), (2, 29), (29, 1), (58, 1) ], false, false, true, false, 812), ([ perm"(1, 30)(2, 31)(3, 32)(4, 33)(5, 34)(6, 35)(7, 36)(8, 37)(9, 38)(10, 39)(11, 40)(12, +41)(13, 42)(14, 43)(15, 44)(16, 45)(17, 46)(18, 47)(19, 48)(20, 49)(21, 50)(22, 51)(23, 52)(24, 53)(25, 54)(26, 55)(27, 56)(28, 57)(29, 58)", perm"(1, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(30, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (29, 28), (58, 28) ], [ (1, 1), (2, 1), (29, 1), (58, 1) ], true, true, true, true, 28) ], [ ([ perm"(1, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, +], [ (1, 1), (2, 1), (29, 28), (58, 28) ], [ (1, 1), (2, 1), (29, 1), (58, 1) ], true, true, true, true, 28) ], [ ([ perm"(1, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ -[ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +[ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (59, 58) ], [ (1, 1), (59, 1) ], true, true, true, true, 58) ], [ ([ perm"(1, 34, 4, 31)(2, 35, 5, 32)(3, 36, 6, 33)(7, 40, 10, 37)(8, 41, 11, 38)(9, 42, 12, 39)(13, 46, 16, 43)(14, +], [], [ (1, 1), (59, 58) ], [ (1, 1), (59, 1) ], true, true, true, true, 58) ], [ ([ perm"(1, 34, 4, 31)(2, 35, 5, 32)(3, 36, 6, 33)(7, 40, 10, 37)(8, 41, 11, 38)(9, 42, 12, 39)(13, 46, 16, 43)(14, 47, 17, 44)(15, 48, 18, 45)(19, 52, 22, 49)(20, 53, 23, 50)(21, 54, 24, 51)(25, 58, 28, 55)(26, 59, 29, 56)(27, 60, 30, 57)", perm"(1, 25, 19, 13, 7)(2, 26, 20, 14, 8)(3, 27, 21, 15, 9)(4, 28, 22, 16, -10)(5, 29, 23, 17, 11)(6, 30, 24, 18, 12)(31, 55, 49, 43, 37)(32, 56, 50, 44, 38)(33, 57, 51, 45, 39)(34, 58, 52, 46, 40)(35, 59, 53, 47, 41)(36, 60, 54, 48, 42)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, -11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)(49, 52)(50, 53)(51, 54)(55, 58)(56, 59)(57, -60)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, +10)(5, 29, 23, 17, 11)(6, 30, 24, 18, 12)(31, 55, 49, 43, 37)(32, 56, 50, 44, 38)(33, 57, 51, 45, 39)(34, 58, 52, 46, 40)(35, 59, 53, 47, 41)(36, 60, 54, 48, 42)", perm"(1, 4)(2, 5)(3, 6)(7, 10)(8, +11)(9, 12)(13, 16)(14, 17)(15, 18)(19, 22)(20, 23)(21, 24)(25, 28)(26, 29)(27, 30)(31, 34)(32, 35)(33, 36)(37, 40)(38, 41)(39, 42)(43, 46)(44, 47)(45, 48)(49, 52)(50, 53)(51, 54)(55, 58)(56, 59)(57, +60)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)(55, 56, 57)(58, 59, 60)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2, 2 ], @@ -5075,12 +5075,12 @@ perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16) [ -1, -2, 1, 2 ], [ -1, -4, 1, -4 ], [ -2, -4, 2, 4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 6), (5, 4), (6, 2), (10, 4), (15, 8), (20, 24), (30, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 3), (5, 1), (6, 1), (10, 1), (12, 1), (15, 1), (20, 3), (30, 1), (60, 1) ], -false, false, true, false, 48), ([ perm"(1, 36, 6, 31)(2, 37, 7, 32)(3, 38, 8, 33)(4, 39, 9, 34)(5, 40, 10, 35)(11, 46, 16, 41)(12, 47, 17, 42)(13, 48, 18, 43)(14, 49, 19, 44)(15, 50, 20, 45)(21, 56, -26, 51)(22, 57, 27, 52)(23, 58, 28, 53)(24, 59, 29, 54)(25, 60, 30, 55)", perm"(1, 21, 11)(2, 22, 12)(3, 23, 13)(4, 24, 14)(5, 25, 15)(6, 26, 16)(7, 27, 17)(8, 28, 18)(9, 29, 19)(10, 30, 20)(31, 51, -41)(32, 52, 42)(33, 53, 43)(34, 54, 44)(35, 55, 45)(36, 56, 46)(37, 57, 47)(38, 58, 48)(39, 59, 49)(40, 60, 50)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, -26)(22, 27)(23, 28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)(41, 46)(42, 47)(43, 48)(44, 49)(45, 50)(51, 56)(52, 57)(53, 58)(54, 59)(55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, -15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)(51, 52, 53, 54, 55)(56, 57, 58, 59, 60)" ], +], [ (1, 1), (2, 1), (3, 2), (4, 6), (5, 4), (6, 2), (10, 4), (15, 8), (20, 24), (30, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 3), (5, 1), (6, 1), (10, 1), (12, 1), (15, 1), (20, 3), (30, 1), (60, 1) ], +false, false, true, false, 48), ([ perm"(1, 36, 6, 31)(2, 37, 7, 32)(3, 38, 8, 33)(4, 39, 9, 34)(5, 40, 10, 35)(11, 46, 16, 41)(12, 47, 17, 42)(13, 48, 18, 43)(14, 49, 19, 44)(15, 50, 20, 45)(21, 56, +26, 51)(22, 57, 27, 52)(23, 58, 28, 53)(24, 59, 29, 54)(25, 60, 30, 55)", perm"(1, 21, 11)(2, 22, 12)(3, 23, 13)(4, 24, 14)(5, 25, 15)(6, 26, 16)(7, 27, 17)(8, 28, 18)(9, 29, 19)(10, 30, 20)(31, 51, +41)(32, 52, 42)(33, 53, 43)(34, 54, 44)(35, 55, 45)(36, 56, 46)(37, 57, 47)(38, 58, 48)(39, 59, 49)(40, 60, 50)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, +26)(22, 27)(23, 28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, 40)(41, 46)(42, 47)(43, 48)(44, 49)(45, 50)(51, 56)(52, 57)(53, 58)(54, 59)(55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, +15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)(51, 52, 53, 54, 55)(56, 57, 58, 59, 60)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2 ], @@ -5095,12 +5095,12 @@ false, false, true, false, 48), ([ perm"(1, 36, 6, 31)(2, 37, 7, 32)(3, 38, 8, 3 [ -1, -2, 1, 2 ], [ -1, -4, 1, -4 ], [ -2, -4, 2, 4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 10), (5, 4), (6, 2), (10, 4), (12, 20), (15, 8), (30, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 5), (5, 1), (6, 1), (10, 1), (12, 5), (15, 1), (20, 1), (30, 1), (60, 1) ], -false, false, true, false, 80), ([ perm"(1, 46, 16, 31)(2, 47, 17, 32)(3, 48, 18, 33)(4, 49, 19, 34)(5, 50, 20, 35)(6, 51, 21, 36)(7, 52, 22, 37)(8, 53, 23, 38)(9, 54, 24, 39)(10, 55, 25, 40)(11, 56, -26, 41)(12, 57, 27, 42)(13, 58, 28, 43)(14, 59, 29, 44)(15, 60, 30, 45)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, -46)(32, 47)(33, 48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, -22)(18, 28, 23)(19, 29, 24)(20, 30, 25)(31, 36, 41)(32, 37, 42)(33, 38, 43)(34, 39, 44)(35, 40, 45)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, -7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)(51, 52, 53, 54, 55)(56, 57, 58, 59, +], [ (1, 1), (2, 1), (3, 2), (4, 10), (5, 4), (6, 2), (10, 4), (12, 20), (15, 8), (30, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 5), (5, 1), (6, 1), (10, 1), (12, 5), (15, 1), (20, 1), (30, 1), (60, 1) ], +false, false, true, false, 80), ([ perm"(1, 46, 16, 31)(2, 47, 17, 32)(3, 48, 18, 33)(4, 49, 19, 34)(5, 50, 20, 35)(6, 51, 21, 36)(7, 52, 22, 37)(8, 53, 23, 38)(9, 54, 24, 39)(10, 55, 25, 40)(11, 56, +26, 41)(12, 57, 27, 42)(13, 58, 28, 43)(14, 59, 29, 44)(15, 60, 30, 45)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, +46)(32, 47)(33, 48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, +22)(18, 28, 23)(19, 29, 24)(20, 30, 25)(31, 36, 41)(32, 37, 42)(33, 38, 43)(34, 39, 44)(35, 40, 45)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, +7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)(51, 52, 53, 54, 55)(56, 57, 58, 59, 60)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -5115,12 +5115,12 @@ false, false, true, false, 80), ([ perm"(1, 46, 16, 31)(2, 47, 17, 32)(3, 48, 18 [ -1, -3, 1, -3 ], [ -1, -4, 1, -4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 1), (3, 2), (4, 30), (5, 4), (6, 2), (10, 4), (15, 8), (30, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 15), (5, 1), (6, 1), (10, 1), (12, 5), (15, 1), (20, 3), (30, 1), (60, 1) ], false, -false, true, false, 240), ([ perm"(1, 32, 2, 31)(3, 34, 4, 33)(5, 36, 6, 35)(7, 38, 8, 37)(9, 40, 10, 39)(11, 42, 12, 41)(13, 44, 14, 43)(15, 46, 16, 45)(17, 48, 18, 47)(19, 50, 20, 49)(21, 52, 22, -51)(23, 54, 24, 53)(25, 56, 26, 55)(27, 58, 28, 57)(29, 60, 30, 59)", perm"(1, 21, 11)(2, 22, 12)(3, 23, 13)(4, 24, 14)(5, 25, 15)(6, 26, 16)(7, 27, 17)(8, 28, 18)(9, 29, 19)(10, 30, 20)(31, 51, -41)(32, 52, 42)(33, 53, 43)(34, 54, 44)(35, 55, 45)(36, 56, 46)(37, 57, 47)(38, 58, 48)(39, 59, 49)(40, 60, 50)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, -27, 25, 23)(22, 30, 28, 26, 24)(31, 39, 37, 35, 33)(32, 40, 38, 36, 34)(41, 49, 47, 45, 43)(42, 50, 48, 46, 44)(51, 59, 57, 55, 53)(52, 60, 58, 56, 54)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, -12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)(49, 50)(51, 52)(53, 54)(55, 56)(57, 58)(59, 60)" ], +], [ (1, 1), (2, 1), (3, 2), (4, 30), (5, 4), (6, 2), (10, 4), (15, 8), (30, 8) ], [ (1, 1), (2, 1), (3, 1), (4, 15), (5, 1), (6, 1), (10, 1), (12, 5), (15, 1), (20, 3), (30, 1), (60, 1) ], false, +false, true, false, 240), ([ perm"(1, 32, 2, 31)(3, 34, 4, 33)(5, 36, 6, 35)(7, 38, 8, 37)(9, 40, 10, 39)(11, 42, 12, 41)(13, 44, 14, 43)(15, 46, 16, 45)(17, 48, 18, 47)(19, 50, 20, 49)(21, 52, 22, +51)(23, 54, 24, 53)(25, 56, 26, 55)(27, 58, 28, 57)(29, 60, 30, 59)", perm"(1, 21, 11)(2, 22, 12)(3, 23, 13)(4, 24, 14)(5, 25, 15)(6, 26, 16)(7, 27, 17)(8, 28, 18)(9, 29, 19)(10, 30, 20)(31, 51, +41)(32, 52, 42)(33, 53, 43)(34, 54, 44)(35, 55, 45)(36, 56, 46)(37, 57, 47)(38, 58, 48)(39, 59, 49)(40, 60, 50)", perm"(1, 9, 7, 5, 3)(2, 10, 8, 6, 4)(11, 19, 17, 15, 13)(12, 20, 18, 16, 14)(21, 29, +27, 25, 23)(22, 30, 28, 26, 24)(31, 39, 37, 35, 33)(32, 40, 38, 36, 34)(41, 49, 47, 45, 43)(42, 50, 48, 46, 44)(51, 59, 57, 55, 53)(52, 60, 58, 56, 54)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, +12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 22)(23, 24)(25, 26)(27, 28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 42)(43, 44)(45, 46)(47, 48)(49, 50)(51, 52)(53, 54)(55, 56)(57, 58)(59, 60)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2 ], @@ -5136,19 +5136,19 @@ false, true, false, 240), ([ perm"(1, 32, 2, 31)(3, 34, 4, 33)(5, 36, 6, 35)(7, [ -1, -3, 1, 3 ], [ -2, -3, 2, 3 ] ], [ (1, 1), (2, 1), (3, 2), (4, 2), (5, 4), (6, 2), (10, 4), (12, 4), (15, 8), (20, 8), (30, 8), (60, 16) ], [ (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (10, 1), (12, 1), (15, 1), (20, 1), (30, -1), (60, 1) ], true, true, true, true, 16), ([ perm"(1, 2, 4, 8, 15)(3, 6, 12, 22, 36)(5, 10, 19, 31, 46)(7, 14, 25, 9, 17)(11, 21, 34, 16, 28)(13, 23, 35, 48, 54)(18, 30, 40, 27, 41)(20, 32, 45, 55, -59)(24, 29, 43, 37, 49)(26, 39, 44, 52, 58)(33, 42, 53, 47, 38)(50, 57, 60, 56, 51)", perm"(1, 3, 7)(2, 5, 11)(4, 9, 18)(6, 13, 24)(8, 16, 12)(10, 20, 33)(14, 26, 40)(15, 27, 19)(17, 29, 44)(21, 35, +1), (60, 1) ], true, true, true, true, 16), ([ perm"(1, 2, 4, 8, 15)(3, 6, 12, 22, 36)(5, 10, 19, 31, 46)(7, 14, 25, 9, 17)(11, 21, 34, 16, 28)(13, 23, 35, 48, 54)(18, 30, 40, 27, 41)(20, 32, 45, 55, +59)(24, 29, 43, 37, 49)(26, 39, 44, 52, 58)(33, 42, 53, 47, 38)(50, 57, 60, 56, 51)", perm"(1, 3, 7)(2, 5, 11)(4, 9, 18)(6, 13, 24)(8, 16, 12)(10, 20, 33)(14, 26, 40)(15, 27, 19)(17, 29, 44)(21, 35, 36)(22, 37, 25)(23, 38, 50)(28, 42, 54)(30, 45, 46)(31, 47, 34)(32, 39, 51)(41, 52, 59)(43, 48, 56)(49, 57, 58)(53, 55, 60)" ], [ [ 1, 1, 1, 1, 1 ], [ 2, 2, 2 ], [ 1, 2, 1, 1, 2, 1 ] ], [ [ 1, 2, 1, 1, 2, 1 ] -], [ (1, 1), (2, 15), (3, 20), (5, 24) ], [ (1, 1), (2, 15), (3, 10), (4, 5), (5, 6), (6, 10), (10, 6), (12, 5), (60, 1) ], false, false, false, false, 120), ([ perm"(1, 36, 6, 31)(2, 37, 7, 32)(3, -38, 8, 33)(4, 39, 9, 34)(5, 40, 10, 35)(11, 46, 16, 41)(12, 47, 17, 42)(13, 48, 18, 43)(14, 49, 19, 44)(15, 50, 20, 45)(21, 56, 26, 51)(22, 57, 27, 52)(23, 58, 28, 53)(24, 59, 29, 54)(25, 60, 30, -55)", perm"(1, 21, 11)(2, 22, 12)(3, 23, 13)(4, 24, 14)(5, 25, 15)(6, 26, 16)(7, 27, 17)(8, 28, 18)(9, 29, 19)(10, 30, 20)(31, 51, 41)(32, 52, 42)(33, 53, 43)(34, 54, 44)(35, 55, 45)(36, 56, 46)(37, -57, 47)(38, 58, 48)(39, 59, 49)(40, 60, 50)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, -40)(41, 46)(42, 47)(43, 48)(44, 49)(45, 50)(51, 56)(52, 57)(53, 58)(54, 59)(55, 60)", perm"(1, 5, 4, 3, 2)(6, 7, 8, 9, 10)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, 25, 24, 23, 22)(26, 27, 28, 29, +], [ (1, 1), (2, 15), (3, 20), (5, 24) ], [ (1, 1), (2, 15), (3, 10), (4, 5), (5, 6), (6, 10), (10, 6), (12, 5), (60, 1) ], false, false, false, false, 120), ([ perm"(1, 36, 6, 31)(2, 37, 7, 32)(3, +38, 8, 33)(4, 39, 9, 34)(5, 40, 10, 35)(11, 46, 16, 41)(12, 47, 17, 42)(13, 48, 18, 43)(14, 49, 19, 44)(15, 50, 20, 45)(21, 56, 26, 51)(22, 57, 27, 52)(23, 58, 28, 53)(24, 59, 29, 54)(25, 60, 30, +55)", perm"(1, 21, 11)(2, 22, 12)(3, 23, 13)(4, 24, 14)(5, 25, 15)(6, 26, 16)(7, 27, 17)(8, 28, 18)(9, 29, 19)(10, 30, 20)(31, 51, 41)(32, 52, 42)(33, 53, 43)(34, 54, 44)(35, 55, 45)(36, 56, 46)(37, +57, 47)(38, 58, 48)(39, 59, 49)(40, 60, 50)", perm"(1, 6)(2, 7)(3, 8)(4, 9)(5, 10)(11, 16)(12, 17)(13, 18)(14, 19)(15, 20)(21, 26)(22, 27)(23, 28)(24, 29)(25, 30)(31, 36)(32, 37)(33, 38)(34, 39)(35, +40)(41, 46)(42, 47)(43, 48)(44, 49)(45, 50)(51, 56)(52, 57)(53, 58)(54, 59)(55, 60)", perm"(1, 5, 4, 3, 2)(6, 7, 8, 9, 10)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, 25, 24, 23, 22)(26, 27, 28, 29, 30)(31, 34, 32, 35, 33)(36, 38, 40, 37, 39)(41, 44, 42, 45, 43)(46, 48, 50, 47, 49)(51, 54, 52, 55, 53)(56, 58, 60, 57, 59)" ], [ [ 1, 1, 1, 1 ], [ 2, 2, 2 ], @@ -5165,11 +5165,11 @@ false, true, false, 240), ([ perm"(1, 32, 2, 31)(3, 34, 4, 33)(5, 36, 6, 35)(7, [ -2, -4, 2, 4 ], [ 3, -4, 3, -4 ], [ 1, -4, -1, -4, -4 ] -], [ (1, 1), (2, 5), (3, 2), (4, 10), (5, 4), (6, 10), (12, 20), (15, 8) ], [ (1, 1), (2, 5), (3, 1), (4, 5), (5, 1), (6, 5), (10, 1), (12, 5), (15, 1), (20, 1), (30, 1), (60, 1) ], false, false, -true, false, 40), ([ perm"(1, 46, 16, 31)(2, 47, 17, 32)(3, 48, 18, 33)(4, 49, 19, 34)(5, 50, 20, 35)(6, 51, 21, 36)(7, 52, 22, 37)(8, 53, 23, 38)(9, 54, 24, 39)(10, 55, 25, 40)(11, 56, 26, 41)(12, -57, 27, 42)(13, 58, 28, 43)(14, 59, 29, 44)(15, 60, 30, 45)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, -48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, -29, 24)(20, 30, 25)(31, 36, 41)(32, 37, 42)(33, 38, 43)(34, 39, 44)(35, 40, 45)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, +], [ (1, 1), (2, 5), (3, 2), (4, 10), (5, 4), (6, 10), (12, 20), (15, 8) ], [ (1, 1), (2, 5), (3, 1), (4, 5), (5, 1), (6, 5), (10, 1), (12, 5), (15, 1), (20, 1), (30, 1), (60, 1) ], false, false, +true, false, 40), ([ perm"(1, 46, 16, 31)(2, 47, 17, 32)(3, 48, 18, 33)(4, 49, 19, 34)(5, 50, 20, 35)(6, 51, 21, 36)(7, 52, 22, 37)(8, 53, 23, 38)(9, 54, 24, 39)(10, 55, 25, 40)(11, 56, 26, 41)(12, +57, 27, 42)(13, 58, 28, 43)(14, 59, 29, 44)(15, 60, 30, 45)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, +48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, +29, 24)(20, 30, 25)(31, 36, 41)(32, 37, 42)(33, 38, 43)(34, 39, 44)(35, 40, 45)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 17, 18, 19, 20)(21, 22, 23, 24, 25)(26, 27, 28, 29, 30)(31, 33, 35, 32, 34)(36, 38, 40, 37, 39)(41, 43, 45, 42, 44)(46, 49, 47, 50, 48)(51, 54, 52, 55, 53)(56, 59, 57, 60, 58)" ], [ [ 1, 1, 1, 1 ], [ 2, 2 ], @@ -5186,11 +5186,11 @@ true, false, 40), ([ perm"(1, 46, 16, 31)(2, 47, 17, 32)(3, 48, 18, 33)(4, 49, 1 [ 2, -4, 2, -4 ], [ -3, -4, 3, 4 ], [ 1, -4, -1, 4, 4 ] -], [ (1, 1), (2, 5), (3, 2), (4, 30), (5, 4), (6, 10), (15, 8) ], [ (1, 1), (2, 5), (3, 1), (4, 15), (5, 1), (6, 5), (10, 1), (12, 5), (15, 1), (20, 3), (30, 1), (60, 1) ], false, false, true, false, -120), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, 53)(24, -54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, 48)(34, -49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 21, 26)(17, 22, 27)(18, 23, 28)(19, 24, -29)(20, 25, 30)(31, 41, 36)(32, 42, 37)(33, 43, 38)(34, 44, 39)(35, 45, 40)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, +], [ (1, 1), (2, 5), (3, 2), (4, 30), (5, 4), (6, 10), (15, 8) ], [ (1, 1), (2, 5), (3, 1), (4, 15), (5, 1), (6, 5), (10, 1), (12, 5), (15, 1), (20, 3), (30, 1), (60, 1) ], false, false, true, false, +120), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, 53)(24, +54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, 48)(34, +49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 21, 26)(17, 22, 27)(18, 23, 28)(19, 24, +29)(20, 25, 30)(31, 41, 36)(32, 42, 37)(33, 43, 38)(34, 44, 39)(35, 45, 40)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)(51, 52, 53, 54, 55)(56, 57, 58, 59, 60)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -5209,11 +5209,11 @@ true, false, 40), ([ perm"(1, 46, 16, 31)(2, 47, 17, 32)(3, 48, 18, 33)(4, 49, 1 [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 23), (3, 2), (5, 4), (6, 10), (10, 12), (15, 8) ], [ (1, 1), (2, 23), (3, 1), (4, 15), (5, 1), (6, 11), (10, 7), (12, 5), (15, 1), (20, 3), (30, 3), (60, 1) ], false, false, true, +], [ (1, 1), (2, 23), (3, 2), (5, 4), (6, 10), (10, 12), (15, 8) ], [ (1, 1), (2, 23), (3, 1), (4, 15), (5, 1), (6, 11), (10, 7), (12, 5), (15, 1), (20, 3), (30, 3), (60, 1) ], false, false, true, false, 120), ([ perm"(1, 41, 21)(2, 42, 22)(3, 43, 23)(4, 44, 24)(5, 45, 25)(6, 46, 26)(7, 47, 27)(8, 48, 28)(9, 49, 29)(10, 50, 30)(11, 51, 31)(12, 52, 32)(13, 53, 33)(14, 54, 34)(15, 55, 35)(16, 56, -36)(17, 57, 37)(18, 58, 38)(19, 59, 39)(20, 60, 40)", perm"(1, 17, 13, 9, 5)(2, 18, 14, 10, 6)(3, 19, 15, 11, 7)(4, 20, 16, 12, 8)(21, 37, 33, 29, 25)(22, 38, 34, 30, 26)(23, 39, 35, 31, 27)(24, 40, -36, 32, 28)(41, 57, 53, 49, 45)(42, 58, 54, 50, 46)(43, 59, 55, 51, 47)(44, 60, 56, 52, 48)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 22)(23, 24)(25, 26)(27, -28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 48)(46, 47)(49, 52)(50, 51)(53, 56)(54, 55)(57, 60)(58, 59)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, +36)(17, 57, 37)(18, 58, 38)(19, 59, 39)(20, 60, 40)", perm"(1, 17, 13, 9, 5)(2, 18, 14, 10, 6)(3, 19, 15, 11, 7)(4, 20, 16, 12, 8)(21, 37, 33, 29, 25)(22, 38, 34, 30, 26)(23, 39, 35, 31, 27)(24, 40, +36, 32, 28)(41, 57, 53, 49, 45)(42, 58, 54, 50, 46)(43, 59, 55, 51, 47)(44, 60, 56, 52, 48)", perm"(1, 3)(2, 4)(5, 7)(6, 8)(9, 11)(10, 12)(13, 15)(14, 16)(17, 19)(18, 20)(21, 22)(23, 24)(25, 26)(27, +28)(29, 30)(31, 32)(33, 34)(35, 36)(37, 38)(39, 40)(41, 44)(42, 43)(45, 48)(46, 47)(49, 52)(50, 51)(53, 56)(54, 55)(57, 60)(58, 59)", perm"(1, 2)(3, 4)(5, 6)(7, 8)(9, 10)(11, 12)(13, 14)(15, 16)(17, 18)(19, 20)(21, 24)(22, 23)(25, 28)(26, 27)(29, 32)(30, 31)(33, 36)(34, 35)(37, 40)(38, 39)(41, 43)(42, 44)(45, 47)(46, 48)(49, 51)(50, 52)(53, 55)(54, 56)(57, 59)(58, 60)" ], [ [ 1, 1, 1 ], [ 2, 2, 2, 2, 2 ], @@ -5230,11 +5230,11 @@ false, 120), ([ perm"(1, 41, 21)(2, 42, 22)(3, 43, 23)(4, 44, 24)(5, 45, 25)(6, [ -2, 3, 2, 3 ], [ 3, 4, 3, 4 ], [ 1, 3, -1, 3, 4 ] -], [ (1, 1), (2, 3), (3, 8), (5, 4), (10, 12), (15, 32) ], [ (1, 1), (2, 3), (3, 4), (4, 1), (5, 1), (10, 3), (12, 1), (15, 4), (20, 1), (60, 1) ], false, false, true, false, 96), ([ perm"(1, 31)(2, +], [ (1, 1), (2, 3), (3, 8), (5, 4), (10, 12), (15, 32) ], [ (1, 1), (2, 3), (3, 4), (4, 1), (5, 1), (10, 3), (12, 1), (15, 4), (20, 1), (60, 1) ], false, false, true, false, 96), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, 53)(24, 54)(25, 55)(26, 56)(27, 57)(28, -58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, 48)(34, 49)(35, 50)(36, 51)(37, 52)(38, -53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, 29, 24)(20, 30, 25)(31, 41, 36)(32, 42, -37)(33, 43, 38)(34, 44, 39)(35, 45, 40)(46, 56, 51)(47, 57, 52)(48, 58, 53)(49, 59, 54)(50, 60, 55)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, +58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, 48)(34, 49)(35, 50)(36, 51)(37, 52)(38, +53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, 29, 24)(20, 30, 25)(31, 41, 36)(32, 42, +37)(33, 43, 38)(34, 44, 39)(35, 45, 40)(46, 56, 51)(47, 57, 52)(48, 58, 53)(49, 59, 54)(50, 60, 55)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)(51, 52, 53, 54, 55)(56, 57, 58, 59, 60)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -5253,11 +5253,11 @@ false, 120), ([ perm"(1, 41, 21)(2, 42, 22)(3, 43, 23)(4, 44, 24)(5, 45, 25)(6, [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 11), (3, 2), (5, 4), (6, 22), (10, 4), (15, 8), (30, 8) ], [ (1, 1), (2, 11), (3, 1), (4, 5), (5, 1), (6, 11), (10, 3), (12, 5), (15, 1), (20, 1), (30, 3), (60, 1) ], false, false, -true, false, 80), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, -53)(24, 54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, -48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 13, 10, 7, 4)(2, 14, 11, 8, 5)(3, 15, 12, 9, 6)(16, 28, 25, 22, 19)(17, 29, 26, 23, -20)(18, 30, 27, 24, 21)(31, 43, 40, 37, 34)(32, 44, 41, 38, 35)(33, 45, 42, 39, 36)(46, 58, 55, 52, 49)(47, 59, 56, 53, 50)(48, 60, 57, 54, 51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, +], [ (1, 1), (2, 11), (3, 2), (5, 4), (6, 22), (10, 4), (15, 8), (30, 8) ], [ (1, 1), (2, 11), (3, 1), (4, 5), (5, 1), (6, 11), (10, 3), (12, 5), (15, 1), (20, 1), (30, 3), (60, 1) ], false, false, +true, false, 80), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, +53)(24, 54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, +48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 13, 10, 7, 4)(2, 14, 11, 8, 5)(3, 15, 12, 9, 6)(16, 28, 25, 22, 19)(17, 29, 26, 23, +20)(18, 30, 27, 24, 21)(31, 43, 40, 37, 34)(32, 44, 41, 38, 35)(33, 45, 42, 39, 36)(46, 58, 55, 52, 49)(47, 59, 56, 53, 50)(48, 60, 57, 54, 51)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 32, 33)(34, 35, 36)(37, 38, 39)(40, 41, 42)(43, 44, 45)(46, 47, 48)(49, 50, 51)(52, 53, 54)(55, 56, 57)(58, 59, 60)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -5277,10 +5277,10 @@ true, false, 80), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 3 [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] ], [ (1, 1), (2, 7), (3, 2), (5, 4), (6, 2), (10, 28), (15, 8), (30, 8) ], [ (1, 1), (2, 7), (3, 1), (4, 3), (5, 1), (6, 3), (10, 7), (12, 1), (15, 1), (20, 3), (30, 3), (60, 1) ], false, false, true, -false, 48), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, 53)(24, -54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, 48)(34, -49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, 29, -24)(20, 30, 25)(31, 36, 41)(32, 37, 42)(33, 38, 43)(34, 39, 44)(35, 40, 45)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, +false, 48), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, 53)(24, +54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, 48)(34, +49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, 29, +24)(20, 30, 25)(31, 36, 41)(32, 37, 42)(33, 38, 43)(34, 39, 44)(35, 40, 45)(46, 51, 56)(47, 52, 57)(48, 53, 58)(49, 54, 59)(50, 55, 60)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 32, 33, 34, 35)(36, 37, 38, 39, 40)(41, 42, 43, 44, 45)(46, 47, 48, 49, 50)(51, 52, 53, 54, 55)(56, 57, 58, 59, 60)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -5299,11 +5299,11 @@ false, 48), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, [ 1, -4, 1, -4 ], [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] -], [ (1, 1), (2, 31), (3, 2), (5, 4), (6, 2), (10, 4), (15, 8), (30, 8) ], [ (1, 1), (2, 31), (3, 1), (4, 15), (5, 1), (6, 11), (10, 7), (12, 5), (15, 1), (20, 3), (30, 3), (60, 1) ], false, false, -true, false, 240), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, -53)(24, 54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, -48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, -29, 24)(20, 30, 25)(31, 41, 36)(32, 42, 37)(33, 43, 38)(34, 44, 39)(35, 45, 40)(46, 56, 51)(47, 57, 52)(48, 58, 53)(49, 59, 54)(50, 60, 55)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, +], [ (1, 1), (2, 31), (3, 2), (5, 4), (6, 2), (10, 4), (15, 8), (30, 8) ], [ (1, 1), (2, 31), (3, 1), (4, 15), (5, 1), (6, 11), (10, 7), (12, 5), (15, 1), (20, 3), (30, 3), (60, 1) ], false, false, +true, false, 240), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, 38)(9, 39)(10, 40)(11, 41)(12, 42)(13, 43)(14, 44)(15, 45)(16, 46)(17, 47)(18, 48)(19, 49)(20, 50)(21, 51)(22, 52)(23, +53)(24, 54)(25, 55)(26, 56)(27, 57)(28, 58)(29, 59)(30, 60)", perm"(1, 16)(2, 17)(3, 18)(4, 19)(5, 20)(6, 21)(7, 22)(8, 23)(9, 24)(10, 25)(11, 26)(12, 27)(13, 28)(14, 29)(15, 30)(31, 46)(32, 47)(33, +48)(34, 49)(35, 50)(36, 51)(37, 52)(38, 53)(39, 54)(40, 55)(41, 56)(42, 57)(43, 58)(44, 59)(45, 60)", perm"(1, 11, 6)(2, 12, 7)(3, 13, 8)(4, 14, 9)(5, 15, 10)(16, 26, 21)(17, 27, 22)(18, 28, 23)(19, +29, 24)(20, 30, 25)(31, 41, 36)(32, 42, 37)(33, 43, 38)(34, 44, 39)(35, 45, 40)(46, 56, 51)(47, 57, 52)(48, 58, 53)(49, 59, 54)(50, 60, 55)", perm"(1, 5, 4, 3, 2)(6, 10, 9, 8, 7)(11, 15, 14, 13, 12)(16, 20, 19, 18, 17)(21, 25, 24, 23, 22)(26, 30, 29, 28, 27)(31, 35, 34, 33, 32)(36, 40, 39, 38, 37)(41, 45, 44, 43, 42)(46, 50, 49, 48, 47)(51, 55, 54, 53, 52)(56, 60, 59, 58, 57)" ], [ [ 1, 1 ], [ 2, 2 ], @@ -5323,31 +5323,31 @@ true, false, 240), ([ perm"(1, 31)(2, 32)(3, 33)(4, 34)(5, 35)(6, 36)(7, 37)(8, [ 2, -4, 2, 4 ], [ -3, -4, 3, 4 ] ], [ (1, 1), (2, 3), (3, 2), (5, 4), (6, 6), (10, 12), (15, 8), (30, 24) ], [ (1, 1), (2, 3), (3, 1), (4, 1), (5, 1), (6, 3), (10, 3), (12, 1), (15, 1), (20, 1), (30, 3), (60, 1) ], true, false, true, -true, 48) ], [ ([ perm"(1, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, +true, 48) ], [ ([ perm"(1, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)" ], [ -[ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +[ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ] -], [], [ (1, 1), (61, 60) ], [ (1, 1), (61, 1) ], true, true, true, true, 60) ], [ ([ perm"(1, 32)(2, 33)(3, 34)(4, 35)(5, 36)(6, 37)(7, 38)(8, 39)(9, 40)(10, 41)(11, 42)(12, 43)(13, 44)(14, 45)(15, -46)(16, 47)(17, 48)(18, 49)(19, 50)(20, 51)(21, 52)(22, 53)(23, 54)(24, 55)(25, 56)(26, 57)(27, 58)(28, 59)(29, 60)(30, 61)(31, 62)", perm"(1, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, +], [], [ (1, 1), (61, 60) ], [ (1, 1), (61, 1) ], true, true, true, true, 60) ], [ ([ perm"(1, 32)(2, 33)(3, 34)(4, 35)(5, 36)(6, 37)(7, 38)(8, 39)(9, 40)(10, 41)(11, 42)(12, 43)(13, 44)(14, 45)(15, +46)(16, 47)(17, 48)(18, 49)(19, 50)(20, 51)(21, 52)(22, 53)(23, 54)(24, 55)(25, 56)(26, 57)(27, 58)(28, 59)(29, 60)(30, 61)(31, 62)", perm"(1, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62)" ], [ [ 1, 1 ], [ -2, 1, -2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, -2, 1 ] -], [ (1, 1), (2, 31), (31, 30) ], [ (1, 1), (2, 31), (31, 1), (62, 1) ], false, false, true, false, 930), ([ perm"(1, 32)(2, 33)(3, 34)(4, 35)(5, 36)(6, 37)(7, 38)(8, 39)(9, 40)(10, 41)(11, 42)(12, -43)(13, 44)(14, 45)(15, 46)(16, 47)(17, 48)(18, 49)(19, 50)(20, 51)(21, 52)(22, 53)(23, 54)(24, 55)(25, 56)(26, 57)(27, 58)(28, 59)(29, 60)(30, 61)(31, 62)", perm"(1, 31, 30, 29, 28, 27, 26, 25, 24, -23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(32, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, +], [ (1, 1), (2, 31), (31, 30) ], [ (1, 1), (2, 31), (31, 1), (62, 1) ], false, false, true, false, 930), ([ perm"(1, 32)(2, 33)(3, 34)(4, 35)(5, 36)(6, 37)(7, 38)(8, 39)(9, 40)(10, 41)(11, 42)(12, +43)(13, 44)(14, 45)(15, 46)(16, 47)(17, 48)(18, 49)(19, 50)(20, 51)(21, 52)(22, 53)(23, 54)(24, 55)(25, 56)(26, 57)(27, 58)(28, 59)(29, 60)(30, 61)(31, 62)", perm"(1, 31, 30, 29, 28, 27, 26, 25, 24, +23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2)(32, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33)" ], [ [ 1, 1 ], [ -2, 1, 2, 1 ], [ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 ] ], [ [ -2, 1, 2, 1 ] -], [ (1, 1), (2, 1), (31, 30), (62, 30) ], [ (1, 1), (2, 1), (31, 1), (62, 1) ], true, true, true, true, 30) ], [ ([ perm"(1, 57, 36, 15, 50, 29, 8, 43, 22)(2, 58, 37, 16, 51, 30, 9, 44, 23)(3, 59, -38, 17, 52, 31, 10, 45, 24)(4, 60, 39, 18, 53, 32, 11, 46, 25)(5, 61, 40, 19, 54, 33, 12, 47, 26)(6, 62, 41, 20, 55, 34, 13, 48, 27)(7, 63, 42, 21, 56, 35, 14, 49, 28)", perm"(1, 15, 8)(2, 16, 9)(3, -17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)(43, 57, 50)(44, 58, 51)(45, 59, 52)(46, 60, 53)(47, 61, 54)(48, -62, 55)(49, 63, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 27, 25, 23, 28, 26, 24)(29, 34, 32, 30, 35, 33, 31)(36, 41, 39, 37, 42, 40, 38)(43, 46, 49, +], [ (1, 1), (2, 1), (31, 30), (62, 30) ], [ (1, 1), (2, 1), (31, 1), (62, 1) ], true, true, true, true, 30) ], [ ([ perm"(1, 57, 36, 15, 50, 29, 8, 43, 22)(2, 58, 37, 16, 51, 30, 9, 44, 23)(3, 59, +38, 17, 52, 31, 10, 45, 24)(4, 60, 39, 18, 53, 32, 11, 46, 25)(5, 61, 40, 19, 54, 33, 12, 47, 26)(6, 62, 41, 20, 55, 34, 13, 48, 27)(7, 63, 42, 21, 56, 35, 14, 49, 28)", perm"(1, 15, 8)(2, 16, 9)(3, +17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)(43, 57, 50)(44, 58, 51)(45, 59, 52)(46, 60, 53)(47, 61, 54)(48, +62, 55)(49, 63, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 27, 25, 23, 28, 26, 24)(29, 34, 32, 30, 35, 33, 31)(36, 41, 39, 37, 42, 40, 38)(43, 46, 49, 45, 48, 44, 47)(50, 53, 56, 52, 55, 51, 54)(57, 60, 63, 59, 62, 58, 61)" ], [ [ 2, 2, 2 ], [ 1, 1, 1, -2 ], @@ -5358,9 +5358,9 @@ true, 48) ], [ ([ perm"(1, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 4 [ -2, -3, 2, 3 ], [ -3, -3, -1, 3, 1 ] ], [ (1, 1), (3, 2), (7, 6), (9, 42), (21, 12) ], [ (1, 1), (3, 1), (7, 1), (9, 7), (21, 1), (63, 1) ], false, false, true, false, 126), ([ perm"(1, 45, 24, 3, 44, 23, 2, 43, 22)(4, 48, 27, 6, 47, 26, -5, 46, 25)(7, 51, 30, 9, 50, 29, 8, 49, 28)(10, 54, 33, 12, 53, 32, 11, 52, 31)(13, 57, 36, 15, 56, 35, 14, 55, 34)(16, 60, 39, 18, 59, 38, 17, 58, 37)(19, 63, 42, 21, 62, 41, 20, 61, 40)", perm"(1, -19, 16, 13, 10, 7, 4)(2, 20, 17, 14, 11, 8, 5)(3, 21, 18, 15, 12, 9, 6)(22, 40, 37, 34, 31, 28, 25)(23, 41, 38, 35, 32, 29, 26)(24, 42, 39, 36, 33, 30, 27)(43, 61, 58, 55, 52, 49, 46)(44, 62, 59, 56, -53, 50, 47)(45, 63, 60, 57, 54, 51, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, +5, 46, 25)(7, 51, 30, 9, 50, 29, 8, 49, 28)(10, 54, 33, 12, 53, 32, 11, 52, 31)(13, 57, 36, 15, 56, 35, 14, 55, 34)(16, 60, 39, 18, 59, 38, 17, 58, 37)(19, 63, 42, 21, 62, 41, 20, 61, 40)", perm"(1, +19, 16, 13, 10, 7, 4)(2, 20, 17, 14, 11, 8, 5)(3, 21, 18, 15, 12, 9, 6)(22, 40, 37, 34, 31, 28, 25)(23, 41, 38, 35, 32, 29, 26)(24, 42, 39, 36, 33, 30, 27)(43, 61, 58, 55, 52, 49, 46)(44, 62, 59, 56, +53, 50, 47)(45, 63, 60, 57, 54, 51, 48)", perm"(1, 3, 2)(4, 6, 5)(7, 9, 8)(10, 12, 11)(13, 15, 14)(16, 18, 17)(19, 21, 20)(22, 24, 23)(25, 27, 26)(28, 30, 29)(31, 33, 32)(34, 36, 35)(37, 39, 38)(40, 42, 41)(43, 45, 44)(46, 48, 47)(49, 51, 50)(52, 54, 53)(55, 57, 56)(58, 60, 59)(61, 63, 62)" ], [ [ 3, 3, 3 ], [ 1, 1, 1, -3 ], @@ -5369,10 +5369,10 @@ true, 48) ], [ ([ perm"(1, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 4 ], [ [ 1, 1, 1, -3 ], [ -1, -2, 1, 2 ] -], [ (1, 1), (3, 2), (7, 6), (9, 6), (21, 12), (63, 36) ], [ (1, 1), (3, 1), (7, 1), (9, 1), (21, 1), (63, 1) ], true, true, true, true, 36), ([ perm"(1, 43, 22)(2, 44, 23)(3, 45, 24)(4, 46, 25)(5, -47, 26)(6, 48, 27)(7, 49, 28)(8, 50, 29)(9, 51, 30)(10, 52, 31)(11, 53, 32)(12, 54, 33)(13, 55, 34)(14, 56, 35)(15, 57, 36)(16, 58, 37)(17, 59, 38)(18, 60, 39)(19, 61, 40)(20, 62, 41)(21, 63, 42)", -perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)(43, 57, 50)(44, 58, 51)(45, 59, -52)(46, 60, 53)(47, 61, 54)(48, 62, 55)(49, 63, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 27, 25, 23, 28, 26, 24)(29, 34, 32, 30, 35, 33, 31)(36, 41, +], [ (1, 1), (3, 2), (7, 6), (9, 6), (21, 12), (63, 36) ], [ (1, 1), (3, 1), (7, 1), (9, 1), (21, 1), (63, 1) ], true, true, true, true, 36), ([ perm"(1, 43, 22)(2, 44, 23)(3, 45, 24)(4, 46, 25)(5, +47, 26)(6, 48, 27)(7, 49, 28)(8, 50, 29)(9, 51, 30)(10, 52, 31)(11, 53, 32)(12, 54, 33)(13, 55, 34)(14, 56, 35)(15, 57, 36)(16, 58, 37)(17, 59, 38)(18, 60, 39)(19, 61, 40)(20, 62, 41)(21, 63, 42)", +perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)(43, 57, 50)(44, 58, 51)(45, 59, +52)(46, 60, 53)(47, 61, 54)(48, 62, 55)(49, 63, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 27, 25, 23, 28, 26, 24)(29, 34, 32, 30, 35, 33, 31)(36, 41, 39, 37, 42, 40, 38)(43, 46, 49, 45, 48, 44, 47)(50, 53, 56, 52, 55, 51, 54)(57, 60, 63, 59, 62, 58, 61)" ], [ [ 1, 1, 1 ], [ 2, 2, 2 ], @@ -5384,9 +5384,9 @@ perm"(1, 15, 8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14) [ -2, -3, 2, 3 ], [ -3, -3, -1, 3, 1 ] ], [ (1, 1), (3, 44), (7, 6), (21, 12) ], [ (1, 1), (3, 22), (7, 1), (9, 7), (21, 4), (63, 1) ], false, false, true, false, 252), ([ perm"(1, 43, 22)(2, 44, 23)(3, 45, 24)(4, 46, 25)(5, 47, 26)(6, 48, -27)(7, 49, 28)(8, 50, 29)(9, 51, 30)(10, 52, 31)(11, 53, 32)(12, 54, 33)(13, 55, 34)(14, 56, 35)(15, 57, 36)(16, 58, 37)(17, 59, 38)(18, 60, 39)(19, 61, 40)(20, 62, 41)(21, 63, 42)", perm"(1, 15, -8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)(43, 57, 50)(44, 58, 51)(45, 59, 52)(46, 60, -53)(47, 61, 54)(48, 62, 55)(49, 63, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)(36, 42, 41, 40, 39, +27)(7, 49, 28)(8, 50, 29)(9, 51, 30)(10, 52, 31)(11, 53, 32)(12, 54, 33)(13, 55, 34)(14, 56, 35)(15, 57, 36)(16, 58, 37)(17, 59, 38)(18, 60, 39)(19, 61, 40)(20, 62, 41)(21, 63, 42)", perm"(1, 15, +8)(2, 16, 9)(3, 17, 10)(4, 18, 11)(5, 19, 12)(6, 20, 13)(7, 21, 14)(22, 36, 29)(23, 37, 30)(24, 38, 31)(25, 39, 32)(26, 40, 33)(27, 41, 34)(28, 42, 35)(43, 57, 50)(44, 58, 51)(45, 59, 52)(46, 60, +53)(47, 61, 54)(48, 62, 55)(49, 63, 56)", perm"(1, 7, 6, 5, 4, 3, 2)(8, 14, 13, 12, 11, 10, 9)(15, 21, 20, 19, 18, 17, 16)(22, 28, 27, 26, 25, 24, 23)(29, 35, 34, 33, 32, 31, 30)(36, 42, 41, 40, 39, 38, 37)(43, 49, 48, 47, 46, 45, 44)(50, 56, 55, 54, 53, 52, 51)(57, 63, 62, 61, 60, 59, 58)" ], [ [ 1, 1, 1 ], [ 2, 2, 2 ], diff --git a/src/GrpAb/ChainComplex.jl b/src/GrpAb/ChainComplex.jl index 544016009b..41683dfe0b 100644 --- a/src/GrpAb/ChainComplex.jl +++ b/src/GrpAb/ChainComplex.jl @@ -11,7 +11,7 @@ export chain_complex, isexact, homology, free_resolution V F <- H psi - and Im(phi) subset Im(psi), then G -> H can be constructed + and Im(phi) subset Im(psi), then G -> H can be constructed =# @doc Markdown.doc""" @@ -157,7 +157,7 @@ getindex(C::ChainComplex{T}, u::UnitRange) where {T} = ChainComplex(T, C.maps[u] @doc Markdown.doc""" isexact(C::ChainComplex) -> Bool -Tests is the complex $A_i: G_i \to G_{i+1}$ +Tests is the complex $A_i: G_i \to G_{i+1}$ is exact, ie. if $\Im(A_i) = \Kern(A_{i+1})$. """ function isexact(C::ChainComplex) @@ -166,7 +166,7 @@ end @doc Markdown.doc""" free_resolution(G::GrpAbFinGen) -> ChainComplex{GrpAbFinGen} -A free resultion for $G$, ie. a chain complex terminating in +A free resultion for $G$, ie. a chain complex terminating in $G \to \{0\}$ that is exact. """ function free_resolution(G::GrpAbFinGen) @@ -264,7 +264,7 @@ function hom(G::T, C::ChainComplex{T}) where {T} g = elem_type(obj_type(C))[] for h = gens(B) phi = H[i][2](h) # G -> E - psi = phi * C.maps[i] + psi = phi * C.maps[i] push!(g, preimage(H[i+1][2], psi)) end push!(R, hom(B, A, g)) @@ -274,7 +274,7 @@ end @doc Markdown.doc""" homology(C::ChainComplex{GrpAbFinGen}) -> Vector{GrpAbFinGen} -Given a complex $A_i: G_i \to G_{i+1}$, +Given a complex $A_i: G_i \to G_{i+1}$, compute the homology, ie. the modules $H_i = \Kern A_{i+1}/\Im A_i$ """ function homology(C::ChainComplex) diff --git a/src/GrpAb/Dual.jl b/src/GrpAb/Dual.jl index ece5a70fd7..8df1c5b604 100644 --- a/src/GrpAb/Dual.jl +++ b/src/GrpAb/Dual.jl @@ -147,7 +147,7 @@ lift(a::QmodnZElem) = a.elt mutable struct GrpAbFinGenToQmodnZ <: Map{GrpAbFinGen, QmodnZ, HeckeMap, GrpAbFinGenToQmodnZ} header::MapHeader{GrpAbFinGen, QmodnZ} - + function GrpAbFinGenToQmodnZ(G::GrpAbFinGen, QZ::QmodnZ, image) z = new() z.header = MapHeader(G, QZ, image) @@ -195,7 +195,7 @@ function dual(G::GrpAbFinGen, u::QmodnZElem) R::GrpAbFinGen ex = MapFromFunc(x -> x[1]*u, y -> H(fmpz[numerator(y.elt) * div(o, denominator(y.elt))]), H, parent(u)) local mu - let phi = phi, G = G, QZ = QZ, u = u + let phi = phi, G = G, QZ = QZ, u = u function mu(r::GrpAbFinGenElem) f = phi(r) return GrpAbFinGenToQmodnZ(G, QZ, x -> f(x)[1]*u) diff --git a/src/GrpAb/GrpAbFinGen.jl b/src/GrpAb/GrpAbFinGen.jl index ad9d14e00e..c511b4d616 100644 --- a/src/GrpAb/GrpAbFinGen.jl +++ b/src/GrpAb/GrpAbFinGen.jl @@ -68,7 +68,7 @@ Creates the abelian group with relation matrix `M`. That is, the group will have `ncols(M)` generators and each row of `M` describes one relation. """ function abelian_group(M::fmpz_mat; name::String = "") - if issnf(M) && nrows(M) > 0 && ncols(M) > 0 && !isone(M[1, 1]) + if issnf(M) && nrows(M) > 0 && ncols(M) > 0 && !isone(M[1, 1]) N = fmpz[M[i, i] for i = 1:min(nrows(M), ncols(M))] if ncols(M) > nrows(M) N = vcat(N, fmpz[0 for i = 1:ncols(M)-nrows(M)]) @@ -116,7 +116,7 @@ function _issnf(N::Vector{T}) where T <: Union{Integer, fmpz} return false end for i = 1:length(N)-1 - if isone(abs(N[i])) + if isone(abs(N[i])) return false end if iszero(N[i]) @@ -395,7 +395,7 @@ function snf(G::GrpAbFinGen) else S, _, T = snf_with_transform(G.rels, false, true) end - + m = min(nrows(S), ncols(S)) if m > 0 && nrows(S) >= ncols(S) e = S[m, m] @@ -530,7 +530,7 @@ order_gen(A::GrpAbFinGen) = order(snf(A)[1]) Returns the exponent of $A$. It is assumed that $A$ is finite. """ function exponent(A::GrpAbFinGen) - if issnf(A) + if issnf(A) res = exponent_snf(A) if !iszero(res) A.exponent = res @@ -1007,7 +1007,7 @@ end function _sub_integer_snf(G::GrpAbFinGen, n::fmpz, add_to_lattice::Bool = true, L::GrpAbLattice = GroupLattice) ind = 1 - while ind <= ngens(G) && gcd(n, G.snf[ind]) == G.snf[ind] + while ind <= ngens(G) && gcd(n, G.snf[ind]) == G.snf[ind] ind += 1 end if ind == ngens(G) && gcd(n, G.snf[ind]) == G.snf[ind] @@ -1035,7 +1035,7 @@ function _sub_integer_snf(G::GrpAbFinGen, n::fmpz, add_to_lattice::Bool = true, end if isdefined(G, :exponent) Gnew.exponent = G.exponent - end + end mp = hom(Gnew, G, mat_map) if add_to_lattice append!(L, mp) @@ -1142,7 +1142,7 @@ function quo(G::GrpAbFinGen, M::fmpz_mat, Q = abelian_group(m) if isdefined(G, :exponent) Q.exponent = G.exponent - end + end I = identity_matrix(FlintZZ, ngens(G)) m = hom(G, Q, I, I, check = false) if add_to_lattice @@ -1181,7 +1181,7 @@ function quo_snf(G::GrpAbFinGen, n::Union{fmpz, Integer}, Q.exponent = gcd(G.exponent, n) else Q.exponent = n - end + end m = hom(G, Q, I, I, check = false) if add_to_lattice append!(L, m) @@ -1321,7 +1321,7 @@ function issubgroup(G::GrpAbFinGen, H::GrpAbFinGen, L::GrpAbLattice = GroupLatti end end -#checks if the image of mG contains the image of mH +#checks if the image of mG contains the image of mH #cannot define == as this produces problems elsewhere... need some thought @@ -1892,8 +1892,8 @@ id(G::GrpAbFinGen) = G(zeros(fmpz, ngens(G))) ################################################################################ -#Given a subgroup H of a group G, I want to find generators $g_1, dots, g_s$ of -#G such that H = \sum H \cap and the relation matrix of $G$ is diagonal. +#Given a subgroup H of a group G, I want to find generators $g_1, dots, g_s$ of +#G such that H = \sum H \cap and the relation matrix of $G$ is diagonal. function isdiagonalisable(mH::GrpAbFinGenMap) H = domain(mH) diff --git a/src/GrpAb/Lattice.jl b/src/GrpAb/Lattice.jl index c9455f6800..98be436b82 100644 --- a/src/GrpAb/Lattice.jl +++ b/src/GrpAb/Lattice.jl @@ -89,7 +89,7 @@ function Base.append!(G::Graph{T, M}, e::Tuple{T, T}, data::M) where {T, M} else G.new_low_degrees[e[1]] = nothing end - + if G.degrees[e[2]] > 1 delete!(G.new_low_degrees, e[2]) else @@ -273,7 +273,7 @@ function find_common(G::Graph{T, M}, root1::T, root2::T) where {T, M} end end end - + while length(Q2) > 0 && found == false current = pop!(Q2) if current in S1 @@ -291,7 +291,7 @@ function find_common(G::Graph{T, M}, root1::T, root2::T) where {T, M} if found target = current - + path1 = [ target ] while current != root1 @@ -303,7 +303,7 @@ function find_common(G::Graph{T, M}, root1::T, root2::T) where {T, M} end end end - + path2 = [ target ] current = target @@ -339,7 +339,7 @@ end # Here is the most important rule: # # A vertex in the lattice of groups is allowed to be removed only if -# the degree is < 2. +# the degree is < 2. # # We achieve this by keeping an additional dictionary L.block_gc, which # contains the groups which must not be gc'ed. @@ -450,7 +450,7 @@ function update!(L::RelLattice) #end delete_from_lattice!(L, L.to_delete) #L.to_delete = UInt[] - + for k in keys(L.graph.new_low_degrees) @assert haskey(L.graph.degrees, k) # TODO: Why does it crash without the following? @@ -512,7 +512,7 @@ function can_map_into_overstructure(L::RelLattice{T, D}, G::T, H::T) where {T, D @assert pG[1] == pH[1] M = L.weak_vertices_rev[pG[1]].value::T @assert M != nothing - + mG = eval_path(L, M, pG) mH = eval_path(L, M, pH) diff --git a/src/GrpAb/Map.jl b/src/GrpAb/Map.jl index ec73266089..0a03a243c4 100644 --- a/src/GrpAb/Map.jl +++ b/src/GrpAb/Map.jl @@ -147,7 +147,7 @@ function hom(A::Vector{GrpAbFinGenElem}, B::Vector{GrpAbFinGenElem}; check::Bool if ngens(GB) == 0 return hom(GA, GB, matrix(FlintZZ, ngens(GA), 0, fmpz[]), check = check) end - + M = vcat([hcat(A[i].coeff, B[i].coeff) for i = 1:length(A)]) RA = rels(GA) M = vcat(M, hcat(RA, zero_matrix(FlintZZ, nrows(RA), ncols(B[1].coeff)))) diff --git a/src/GrpAb/SubgroupEnum.jl b/src/GrpAb/SubgroupEnum.jl index 5741902cf4..a1b5e17bd2 100644 --- a/src/GrpAb/SubgroupEnum.jl +++ b/src/GrpAb/SubgroupEnum.jl @@ -115,7 +115,7 @@ function index_to_group(s::IndexPSubgroups, i::UInt) end function Base.iterate(s::IndexPSubgroups, i::UInt = UInt(0)) - if i + 1 > s.n + if i + 1 > s.n return nothing end @@ -186,14 +186,14 @@ function Base.iterate(F::yIterator, i::Vector{Int}) for j in 1:length(i) if i[j] != F.x[j] - done = false + done = false end end if done return nothing end - + if i[1] < F.x[1] i[1] = i[1] + 1 else # the first one is as large as possible @@ -216,7 +216,7 @@ function Base.iterate(F::yIterator, i::Vector{Int}) return copy(F.res), i end -function Base.iterate(F::yIterator) +function Base.iterate(F::yIterator) i = ones(Int, F.t) if F.t == 0 @@ -226,7 +226,7 @@ function Base.iterate(F::yIterator) @inbounds if F.t > 0 i[1] = 0 end - + @inbounds if i[1] < F.x[1] i[1] = i[1] + 1 else # the first one is as large as possible @@ -430,7 +430,7 @@ function _subgroup_type_iterator(x, y, p) t = something(findlast(!iszero, y), 0) # have to treat the empty y separately - + if any(y[i] > x[i] for i in 1:length(x)) return (x for x in 1:-1) @@ -686,7 +686,7 @@ function pSubgroupIterator(G::GrpAbFinGen, p::Union{fmpz, Integer}; it = _psubgroups(G, p; subtype = subtype, quotype = quotype, fun = fun, index = index, order = order) end - + E = Core.Compiler.return_type(fun, (GrpAbFinGen, Vector{GrpAbFinGenElem})) z = pSubgroupIterator{typeof(fun), typeof(it), E}(G, fmpz(p), subtype, [-1], diff --git a/src/GrpAb/stable_sub.jl b/src/GrpAb/stable_sub.jl index bdab4a0af5..8f22bfdef8 100644 --- a/src/GrpAb/stable_sub.jl +++ b/src/GrpAb/stable_sub.jl @@ -164,7 +164,7 @@ function dual_module(M::ZpnGModule) end -function _dualize(M::nmod_mat, V::GrpAbFinGen, v::Vector{fmpz}) +function _dualize(M::nmod_mat, V::GrpAbFinGen, v::Vector{fmpz}) # First, compute the kernel of the corresponding homomorphisms K = abelian_group(fmpz[V.snf[end] for j=1:nrows(M)]) A = lift(transpose(M)) @@ -610,7 +610,7 @@ function _submodules_with_struct_main(M::ZpnGModule, typesub::Vector{Int}) diag = typesub - new_typesub1 Gtest = snf(abelian_group(Int[p^x for x in diag]))[1] order_test = order(Gtest) - for x in list + for x in list L, _ = quo(M, x) newlist = _submodules_with_struct(L, new_typesub) @vprint :StabSub 1 "Candidates to be added at this step: $(length(newlist)) \n" @@ -920,7 +920,7 @@ function _stable_subgroup_snf(R::GrpAbFinGen, act::Vector{GrpAbFinGenMap}; quoty G, mG = psylow_subgroup(R, p, false) S, mS = snf(G) comp = mS*mG - + #We need to distinguish between FqGModule and ZpnGModule (in the first case the algorithm is more efficient) if x1 == 1 @@ -1018,7 +1018,7 @@ function _lift_and_construct(A::Zmodn_mat, mp::GrpAbFinGenMap) y = view(A, i:i, 1:ncols(A)) el = GrpAbFinGenElem(G, lift(y)) push!(newsub, mp(el)) - end + end end return newsub end diff --git a/src/Hecke.jl b/src/Hecke.jl index 4a6224d12b..4591719551 100644 --- a/src/Hecke.jl +++ b/src/Hecke.jl @@ -358,7 +358,7 @@ function conjugate_data_arb_roots(K::AnticNumberField, p::Int) rcomplex = Vector{acb}(undef, div(degree(K), 2)) while true R = ArbField(pstart, cached = false) - # We need to pair them + # We need to pair them _rall = Tuple{arb, arb}[ sincospi(fmpq(2*k, f), R) for k in 1:f if gcd(f, k) == 1] if all(x -> radiuslttwopower(x[1], -p) && radiuslttwopower(x[2], -p), _rall) CC = AcbField(pstart, cached = false) @@ -464,7 +464,7 @@ if VERSION >= v"1.4" global VERSION_NUMBER = "building" end else - ver = Pkg.API.__installed(PKGMODE_MANIFEST)["Hecke"] + ver = Pkg.API.__installed(PKGMODE_MANIFEST)["Hecke"] dir = dirname(@__DIR__) if occursin("/dev/", dir) global VERSION_NUMBER = VersionNumber("$(ver)-dev") @@ -499,7 +499,7 @@ end abstract type HeckeMap <: SetMap end #needed here for the hasspecial stuff #maybe move to Maps? -import AbstractAlgebra: get_special, set_special, @show_name, @show_special, +import AbstractAlgebra: get_special, set_special, @show_name, @show_special, @show_special_elem, @declare_other, extra_name, set_name!, find_name function hasspecial(G::T) where T <: Map{<:Any, <:Any, HeckeMap, <:Any} diff --git a/src/LargeField/FB.jl b/src/LargeField/FB.jl index b654ff8c6f..1a60418737 100644 --- a/src/LargeField/FB.jl +++ b/src/LargeField/FB.jl @@ -31,10 +31,10 @@ end @doc Markdown.doc""" induce_action(primes::Vector{NfOrdIdl}, A::Map) -> Perm{Int} -Given a set of prime ideals invariant under the action of $A$, this function +Given a set of prime ideals invariant under the action of $A$, this function returns the corresponding permutation induced by $A$. """ -function induce_action(primes::Vector{NfOrdIdl}, A::Map) +function induce_action(primes::Vector{NfOrdIdl}, A::Map) K = domain(A) f = A(gen(K)) # essentially a polynomial in the primitive element @@ -54,7 +54,7 @@ function induce_action(primes::Vector{NfOrdIdl}, A::Map) for (i, j) in prm_p push!(prm, (indices[i], indices[j])) end - end + end sort!(prm, by = a -> a[1]) return G([x[2] for x = prm]) end @@ -82,7 +82,7 @@ function _induce_action_p(lp::Vector{NfOrdIdl}, A::Map) break end end - @assert !iszero(id) + @assert !iszero(id) push!(prm, (i, id)) end else @@ -94,7 +94,7 @@ function _induce_action_p(lp::Vector{NfOrdIdl}, A::Map) # an irreducible factor of gpx (Kummer/ Dedekind) # an ideal is divisible by P iff the canonical 2nd generator of the prime ideal # divides the 2nd generator of the target (CRT) - # so + # so lpols = gfp_poly[gcd(px(K(P.gen_two)), gpx) for P in lp] # this makes lp canonical (should be doing nothing actually) @@ -105,7 +105,7 @@ function _induce_action_p(lp::Vector{NfOrdIdl}, A::Map) else im = compose_mod(hp, fpx, gpx) # the image, directly mod p... - end + end im = Hecke.gcd!(im, gpx, im) # canonical push!(prm, (i, findfirst(isequal(im), lpols))) @@ -117,7 +117,7 @@ end -function induce(FB::Hecke.NfFactorBase, A::Map) +function induce(FB::Hecke.NfFactorBase, A::Map) K = domain(A) f = A(gen(K)) # essentially a polynomial in the primitive element @@ -145,7 +145,7 @@ end Algo 4: Dimino Tested for cyclic groups - unfortunately only. I still need to generate other input -=# +=# #function orbit_in_FB(op::Vector{Tuple{Map, Generic.Perm}}, a::nf_elem, s::SRow) function orbit_in_FB(op::Array, a::nf_elem, s::SRow) function op_smat(n::SRow, p::Generic.Perm) @@ -166,7 +166,7 @@ function orbit_in_FB(op::Array, a::nf_elem, s::SRow) b = op[1][1](b) end - for i=2:length(op) + for i=2:length(op) bb = op[i][1](a) if haskey(Ss, bb) continue @@ -207,7 +207,7 @@ function generated_subgroup(op::Array) #pairs: permutations and Map push!(elt, c_g) # g = (x->op[1][1](c_g[1](x)), op[1][2]*c_g[2]) g = (x->op[1][1](c_g[1](x)), c_g[2]*op[1][2]) - end + end end ord = length(elt) @@ -233,7 +233,7 @@ function generated_subgroup(op::Array) #pairs: permutations and Map if g[2] in [x[2] for x=elt] continue end - end + end let c_g = g push!(elt, c_g) for j = 2:pord @@ -241,11 +241,11 @@ function generated_subgroup(op::Array) #pairs: permutations and Map # push!(elt, (x->elt[c_j][1](c_g[1](x)), elt[c_j][2]*c_g[2])) push!(elt, (x->elt[c_j][1](c_g[1](x)), c_g[2]*elt[c_j][2])) end - end + end ord = length(elt) end rpos += pord - if rpos > length(elt) + if rpos > length(elt) break end end diff --git a/src/LargeField/basis.jl b/src/LargeField/basis.jl index 42a2c51086..9b471aeca3 100644 --- a/src/LargeField/basis.jl +++ b/src/LargeField/basis.jl @@ -32,11 +32,11 @@ end # return q #end -function bkz_basis(A::NfOrdIdl, bs::Int; +function bkz_basis(A::NfOrdIdl, bs::Int; v::fmpz_mat = zero_matrix(FlintZZ, 1, 1), prec::Int = 100) - + K = nf(order(A)) c = minkowski_matrix(K, prec) @@ -65,10 +65,10 @@ function bkz_basis(A::NfOrdIdl, bs::Int; return q end -function fplll_basis(rt_c::Hecke.roots_ctx, A::NfOrdIdl, bs::Int; +function fplll_basis(rt_c::Hecke.roots_ctx, A::NfOrdIdl, bs::Int; v::fmpz_mat = zero_matrix(FlintZZ, 1,1), prec::Int = 100) - + K = nf(order(A)) c = minkowski_matrix(rt_c, K, prec) @@ -141,15 +141,15 @@ function auto_simplify(A::Map, K::AnticNumberField) return hom(K, K, b, check = false) end -function auto_power(A::Map, n::Int) - if n==1 +function auto_power(A::Map, n::Int) + if n==1 return A end; B = x->A(A(x)); C = auto_power(B, div(n, 2)) if n%2==0 return C - else + else return x-> A(C(x)) end end diff --git a/src/LargeField/misc2.jl b/src/LargeField/misc2.jl index d0b9a99924..f664ee04bc 100644 --- a/src/LargeField/misc2.jl +++ b/src/LargeField/misc2.jl @@ -17,7 +17,7 @@ function basis_rels(b::Vector{nf_elem}, c; bd::fmpz = fmpz(10^35), no_b::Int = 2 end iszero(a) && continue n = norm_div(a, one, no_b) - if cmpabs(numerator(n), bd) <= 0 + if cmpabs(numerator(n), bd) <= 0 if no_id != 0 g = gcd(no_id, numerator(n)) if g==1 || gcd(div(numerator(n), g), g) == 1 @@ -29,7 +29,7 @@ function basis_rels(b::Vector{nf_elem}, c; bd::fmpz = fmpz(10^35), no_b::Int = 2 if class_group_add_relation(c, a, n, one) a = b[1].parent() end - end + end end end end @@ -67,7 +67,7 @@ function basis_rels_2(b::Vector{nf_elem}, bd::fmpz = fmpz(10^35), no_b::Int = 25 if smooth != 0 !issmooth(smooth, numerator(n))[1] && continue end - if cmpabs(numerator(n), bd) <= 0 + if cmpabs(numerator(n), bd) <= 0 if no_id != 0 g = gcd(no_id, numerator(n)) if g==1 || gcd(div(numerator(n), g), g) == 1 @@ -79,7 +79,7 @@ function basis_rels_2(b::Vector{nf_elem}, bd::fmpz = fmpz(10^35), no_b::Int = 25 rels[i] = deepcopy(a) i = i + 1 println(i) - end + end end end return rels @@ -201,7 +201,7 @@ function basis_rels_4(b::Vector{nf_elem}, no_b::Int = 250, no_rel::Int = 10000, end nb = length(b) - + rels = Dict{fmpz, Vector{Int}}() i = 1 ll = 0 @@ -231,8 +231,8 @@ function basis_rels_4(b::Vector{nf_elem}, no_b::Int = 250, no_rel::Int = 10000, # println(local_norm(sum(b[lc]), lpx[j])) # @assert local_norm(sum(b[lc]), lpx[j]) == np[j] end - - + + no = Hecke.crt_signed(np, crt_env) sum_nb += nbits(no) # println("testing $no") @@ -321,7 +321,7 @@ function basis_rels_5(b::Vector{nf_elem}, no_b::Int = 250, no_rel::Int = 10000, end nb = length(b) - + rels = Dict{fmpz, Vector{Int}}() i = 1 ll = 0 @@ -358,8 +358,8 @@ function basis_rels_5(b::Vector{nf_elem}, no_b::Int = 250, no_rel::Int = 10000, end if zero continue; end - - + + no = crt_signed(np, crt_env) # @assert no == norm(sum(b[lc])) sum_nb += nbits(no) @@ -431,7 +431,7 @@ function rels_stat(b::Vector{Hecke.nf_elem}; no_b = 250, no_rel::Int = 10000, no one = fmpz(1) stat = Dict{Int, Int}() - if fixed != 0 + if fixed != 0 stat[-1] = 0 end if smooth != 0 @@ -464,7 +464,7 @@ function rels_stat(b::Vector{Hecke.nf_elem}; no_b = 250, no_rel::Int = 10000, no stat[-2] += 1 push!(all_g, a) a = a = b[1].parent() - end + end end return stat, all_g end @@ -491,7 +491,7 @@ function int_fb_max_real(f::Int, B::Int) else pp *= p end - end + end end p = next_prime(p) end @@ -535,7 +535,7 @@ end # If M is upper-triangular with more columns then rows, # this function returns the non-pivot column indices. function _find_missing_pivot(M::SMat) - return setdiff(Set(1:ncols(M)), Set([y.pos[1] for y = M.rows ])) + return setdiff(Set(1:ncols(M)), Set([y.pos[1] for y = M.rows ])) end function res_degree_in_max_real(p::Int, n::Int) diff --git a/src/LinearAlgebra/FakeFmpqMat.jl b/src/LinearAlgebra/FakeFmpqMat.jl index 0f014aaa9f..1569c8d68c 100644 --- a/src/LinearAlgebra/FakeFmpqMat.jl +++ b/src/LinearAlgebra/FakeFmpqMat.jl @@ -31,7 +31,7 @@ ncols(x::FakeFmpqMat) = ncols(x.num) function simplify_content!(x::FakeFmpqMat) c = content(x.num) gcd!(c, c, x.den) - if !isone(c) + if !isone(c) divexact!(x.num, x.num, c) divexact!(x.den, x.den, c) end @@ -83,10 +83,10 @@ function -(x::FakeFmpqMat) return FakeFmpqMat(-x.num, x.den, true) end -#TODO: may be possible to simplify more efficiently. +#TODO: may be possible to simplify more efficiently. #The content of the numerator of the inverse may be non trivial! function inv(x::FakeFmpqMat) - i, d_i = pseudo_inv(x.num) + i, d_i = pseudo_inv(x.num) g = gcd(d_i, x.den) if isone(g) return FakeFmpqMat(i * x.den, d_i) @@ -327,7 +327,7 @@ end function det(x::FakeFmpqMat) nrows(x) != ncols(x) && error("Matrix must be square") - + return det(x.num)//(x.den)^nrows(x) end diff --git a/src/LinearAlgebra/Howell.jl b/src/LinearAlgebra/Howell.jl index 22ad3c6fe3..0eff43ab87 100644 --- a/src/LinearAlgebra/Howell.jl +++ b/src/LinearAlgebra/Howell.jl @@ -26,8 +26,8 @@ if Nemo.version() > v"0.15.1" # # for the in-place function, the number of rows must be at least equal to the number of columns # - function howell_form!(A::Generic.Mat{Nemo.fmpz_mod}) - + function howell_form!(A::Generic.Mat{Nemo.fmpz_mod}) + R = base_ring(A) A1 = lift(A) ccall((:fmpz_mat_howell_form_mod, libflint), Nothing, @@ -45,9 +45,9 @@ if Nemo.version() > v"0.15.1" n=R.modulus # - # Get an upper triangular matrix + # Get an upper triangular matrix # - + for j=1:ncols(A) for i=j+1:ncols(A) g,s,t,u,v = _xxgcd(A[j,j].data,A[i,j].data,n) @@ -82,7 +82,7 @@ else # # for the in-place function, the number of rows must be at least equal to the number of columns # - function howell_form!(A::Generic.Mat{Nemo.Generic.Res{Nemo.fmpz}}) + function howell_form!(A::Generic.Mat{Nemo.Generic.Res{Nemo.fmpz}}) R = base_ring(A) A1 = lift(A) @@ -101,7 +101,7 @@ else n=R.modulus # - # Get an upper triangular matrix + # Get an upper triangular matrix # for j=1:ncols(A) diff --git a/src/LinearAlgebra/LatEnum.jl b/src/LinearAlgebra/LatEnum.jl index abb56638f0..f186af69b0 100644 --- a/src/LinearAlgebra/LatEnum.jl +++ b/src/LinearAlgebra/LatEnum.jl @@ -52,11 +52,11 @@ function show(io::IO, E::enum_ctx) println(io, "EnumCtx") if isdefined(E, :c) println(io, "curr. length ", E.c, " elt ", E.x, "(", (typeof(E.x), typeof(E.C), typeof(E.U)), ")") - end + end end #need to only compute the top l x l submatrix when using limited enum -function pseudo_cholesky(G::fmpz_mat, den=1; +function pseudo_cholesky(G::fmpz_mat, den=1; TC::Type=Rational{BigInt}, limit = nrows(G)) n = ncols(G) @hassert :LatEnum 1 nrows(G) == n @@ -69,7 +69,7 @@ function pseudo_cholesky(G::fmpz_mat, den=1; C[i,j] = TC(t//den) end end - for i = 1:limit-1 + for i = 1:limit-1 for j = i+1:limit C[j,i] = C[i,j] C[i,j] = C[i,j]/C[i,i] @@ -101,8 +101,8 @@ end function enum_ctx_from_gram(G::FakeFmpqMat; Tx = BigInt, TC = Rational{BigInt}, TU = Rational{BigInt}, limit = nrows(G)) return enum_ctx_from_gram(numerator(G), denominator(G), Tx=Tx, TC=TC, TU=TU, limit = limit) -end - +end + function enum_ctx_from_basis(B::fmpz_mat, den::fmpz = fmpz(1); Tx::Type = BigInt, TC::Type = Rational{BigInt}, TU::Type = Rational{BigInt}, limit = nrows(B)) G = gram(B) return enum_ctx_from_gram(G, den*den, Tx=Tx, TC=TC, TU=TU, limit = limit) @@ -112,7 +112,7 @@ function enum_ctx_from_gram(G::fmpz_mat, den = 1; Tx = BigInt, TC = Rational{Big E = enum_ctx{Tx, TC, TU}() E.G = G n = nrows(G) - E.n = n + E.n = n limit = min(limit, n) E.limit = limit E.d = den @@ -138,7 +138,7 @@ function enum_ctx_local_bound(a::Rational{T}, b::Rational{T}) where T L = Base.ceil(a-(i+1)//d) U = Base.floor(a+(i+1)//d) # @show L, U, Base.ceil(BigFloat(a) - sqrt(BigFloat(b))), Base.floor(BigFloat(a) + sqrt(BigFloat(b))) - if (a-L)^2 >b + if (a-L)^2 >b L +=1 end if (a-U)^2>b @@ -187,7 +187,7 @@ function enum_ctx_start(E::enum_ctx{A,B,C}, x::fmpz_mat; eps::Float64=1.0) where E.x = x for i=E.limit-1:-1:1 E.tail[i] = sum(E.C[i, j]*C(E.x[1,j]) for j=i+1:E.limit) - end + end b = sum(E.C[i,i]*(C(E.x[1,i]) + E.tail[i])^2 for i=1:E.limit) #curr. length #@show b, C((x*E.G*x')[1,1]) #@assert b == C((x*E.G*x')[1,1]) @@ -216,7 +216,7 @@ end #@inline function fmpz_mat_entry(a::fmpz_mat, r::Int, c::Int) #return unsafe_load(reinterpret(Ptr{Ptr{fmpz}}, a.rows), r)+(c-1)*sizeof(Ptr) end - + @inline function fmpz_mat_entry_incref!(a::fmpz_mat, r::Int, c::Int) z = ccall((:fmpz_mat_entry, libflint), Ptr{fmpz}, (Ref{fmpz_mat}, Int, Int), a, r - 1, c - 1) @@ -265,7 +265,7 @@ function enum_ctx_next(E::enum_ctx{A,B,C}) where {A,B,C} n = E.limit i=1 t = fmpz() - while true + while true enum_ctx_advance_level(E, i) getindex!(t, E.x, 1, i) if E.L[i] <= A(t) <= E.U[i] #coordinate is valid @@ -306,12 +306,12 @@ function enum_ctx_next(E::enum_ctx{A,B,C}) where {A,B,C} # @hassert :LatEnum 1 typeof(L) == C E.L[i] = L E.U[i] = U - + x = A(Base.ceil((E.L[i] +E.U[i])/2)) E.x[1, i] = x if -E.L[i] == E.U[i] && E.last_non_zero == i+1 E.last_non_zero = i -# @hassert :LatEnum 1 x == 0 +# @hassert :LatEnum 1 x == 0 end if x <= E.U[i] # coordinate is valid i -= 1 # go further up @@ -364,7 +364,7 @@ end function pseudo_cholesky(G::arb_mat) n = ncols(G) C = deepcopy(G) - for i = 1:n-1 + for i = 1:n-1 for j = i+1:n C[j,i] = C[i,j] C[i,j] = C[i,j]//C[i,i] @@ -450,7 +450,7 @@ function _enumerate(E::EnumCtxArb, c::arb, i::Int, x::fmpz_mat) ub = -CC + C tr_ptr = ccall((:arb_rad_ptr, libarb), Ptr{Nemo.mag_struct}, (Ref{arb}, ), lb) - + tm_ptr = ccall((:arb_mid_ptr, libarb), Ptr{arf_struct}, (Ref{arb}, ), lb) u = arf_struct(0, 0, 0, 0) ccall((:arf_init, libarb), Nothing, (Ref{arf_struct}, ), u) @@ -499,7 +499,7 @@ function _enumerate(E::EnumCtxArb, c::arb, i::Int, x::fmpz_mat) x[1,i] = j l = _enumerate(E, t, i - 1, x) for k in 1:length(l) - if n == length(l[k]) + 1 && iszero(j) && all(iszero, l[k]) + if n == length(l[k]) + 1 && iszero(j) && all(iszero, l[k]) continue end push!(A, push!(l[k], fmpz(j))) diff --git a/src/LocalField/Completions.jl b/src/LocalField/Completions.jl index c33cc3e697..98b6ca3dfd 100644 --- a/src/LocalField/Completions.jl +++ b/src/LocalField/Completions.jl @@ -137,7 +137,7 @@ function generic_completion(K::AnticNumberField, P::NfOrdIdl, precision::Int = 6 for j = 1:f push!(els, el*pows_gq[j]) end - mul!(el, el, u) + mul!(el, el, u) end append!(els, map(elem_in_nf, basis(P^precision, copy = false))) MK = basis_matrix(els, FakeFmpqMat) @@ -213,7 +213,7 @@ function setprecision!(f::CompletionMap{LocalField{qadic, EisensteinLocalField}, for j = 1:f push!(els, mod(el*pows_gq[j], modulo)) end - mul!(el, el, u) + mul!(el, el, u) end MK = basis_matrix(els) bK = basis_matrix(nf_elem[_powermod(u, e, modulo), gen(K)]) @@ -254,7 +254,7 @@ end @doc Markdown.doc""" totally_ramified_completion(K::AnticNumberField, P::NfOrdIdl, precision::Int) -> LocalField, CompletionMap -The completion of $K$ wrt to the topology induced by the valuation at a totally ramified prime ideal $P$, +The completion of $K$ wrt to the topology induced by the valuation at a totally ramified prime ideal $P$, presented as a Eisenstein extension of $Q_p$. The map giving the embedding of $K$ into the completion, admits a pointwise pre-image to obtain a lift. Note, that the map is not well defined by this data: $K$ will have $\deg P$ many embeddings. @@ -264,7 +264,7 @@ function totally_ramified_completion(K::AnticNumberField, P::NfOrdIdl, precision OK = order(P) @assert isprime(P) @assert nf(OK) == K - @assert isone(degree(P)) + @assert isone(degree(P)) e = ramification_index(P) Qp = PadicField(minimum(P), precision) Zp = maximal_order(Qp) @@ -320,7 +320,7 @@ function setprecision!(f::CompletionMap{LocalField{padic, EisensteinLocalField}, u = f.inv_img[2] Kp = codomain(f) ex, r = divrem(new_prec, ramification_index(P)) - if r > 0 + if r > 0 ex += 1 end Qp = PadicField(prime(Kp), div(new_prec, e)+1) @@ -363,7 +363,7 @@ end @doc Markdown.doc""" unramified_completion(K::AnticNumberField, P::NfOrdIdl, precision::Int) -> QadicField, CompletionMap -The completion of $K$ wrt to the topology induced by the valuation at an unramified prime ideal $P$, presented +The completion of $K$ wrt to the topology induced by the valuation at an unramified prime ideal $P$, presented as a QadicField. The map giving the embedding of $K$ into the completion, admits a pointwise pre-image to obtain a lift. Note, that the map is not well defined by this data: $K$ will have $\deg P$ many embeddings. diff --git a/src/LocalField/Elem.jl b/src/LocalField/Elem.jl index d257f271ed..dc4088eb0a 100644 --- a/src/LocalField/Elem.jl +++ b/src/LocalField/Elem.jl @@ -119,12 +119,12 @@ function O(K::LocalField, prec::T) where T <: Union{Integer, fmpz} return K(O(base_field(K), d)) end -function zero(K::LocalField) +function zero(K::LocalField) a = zero(parent(defining_polynomial(K))) return setprecision(K(a), precision(K)) end -(K::LocalField)() = zero(K) +(K::LocalField)() = zero(K) function one(K::LocalField) a = one(parent(defining_polynomial(K))) @@ -153,25 +153,25 @@ end # ################################################################################ -function (K::LocalField{S, T})(a::Integer) where {S <: FieldElem, T <: LocalFieldParameter} +function (K::LocalField{S, T})(a::Integer) where {S <: FieldElem, T <: LocalFieldParameter} el = K(parent(defining_polynomial(K))(a)) return setprecision!(el, precision(K)) end -function (K::LocalField{S, T})(a::Union{fmpz, fmpq}) where {S <: FieldElem, T <: LocalFieldParameter} +function (K::LocalField{S, T})(a::Union{fmpz, fmpq}) where {S <: FieldElem, T <: LocalFieldParameter} el = K(parent(defining_polynomial(K))(a)) return setprecision!(el, precision(K)) end function (K::LocalField{S, T})(a::U) where {U <: Union{padic, qadic}, S <: FieldElem, T <: LocalFieldParameter} - return K(parent(defining_polynomial(K))(a)) + return K(parent(defining_polynomial(K))(a)) end -function (K::LocalField{S, T})(a::LocalFieldElem{S, T}) where {S <: FieldElem, T <: LocalFieldParameter} +function (K::LocalField{S, T})(a::LocalFieldElem{S, T}) where {S <: FieldElem, T <: LocalFieldParameter} return a end -function (K::LocalField{S, T})(a::LocalFieldElem{U, V}) where {S <: FieldElem, U <: FieldElem, T <: LocalFieldParameter, V <: LocalFieldParameter} +function (K::LocalField{S, T})(a::LocalFieldElem{U, V}) where {S <: FieldElem, U <: FieldElem, T <: LocalFieldParameter, V <: LocalFieldParameter} if parent(a) === K return a elseif base_field(K) === parent(a) @@ -182,7 +182,7 @@ function (K::LocalField{S, T})(a::LocalFieldElem{U, V}) where {S <: FieldElem, U end end -function (K::LocalField{S, T})(p::Generic.Poly{S}) where {S <: FieldElem, T <: LocalFieldParameter} +function (K::LocalField{S, T})(p::Generic.Poly{S}) where {S <: FieldElem, T <: LocalFieldParameter} if degree(p) >= degree(K) p = mod(p, defining_polynomial(K)) end @@ -251,7 +251,7 @@ function valuation(a::LocalFieldElem{S, UnramifiedLocalField}) where S <: FieldE end v = valuation(c) for j = i+1:degree(K) - c = coeff(a, j) + c = coeff(a, j) vc = valuation(c) if vc < v v = vc @@ -539,7 +539,7 @@ function exp(a::LocalFieldElem) res = one(K) res = setprecision(res, N) el = one(K) - res = res + res = res den = setprecision!(one(Qp), N) max_i = fmpq(N)//(valuation(a) - fmpq(1, p-1)) + 1 bound = Int(floor(fmpz, max_i)) @@ -565,7 +565,7 @@ extended so that $log(p) = 0$. function log(a::LocalFieldElem) K = parent(a) va = valuation(a) - if iszero(va) && valuation(a-1) > 0 + if iszero(va) && valuation(a-1) > 0 return _log_one_units(a) end e = absolute_ramification_index(K) @@ -622,7 +622,7 @@ function _log_one_units(a::LocalFieldElem) else num = el den = d - end + end end return _log_one_units_fast(num)//den end @@ -640,7 +640,7 @@ function _log_one_units_fast(a::LocalFieldElem) res = setprecision!(res, N) e = absolute_ramification_index(K) bound1 = div(N, numerator(vb*e)) - + l = 1 left = p*vb*e right = N + e diff --git a/src/LocalField/LocalField.jl b/src/LocalField/LocalField.jl index ed74bf1ed4..f06c63fdf5 100644 --- a/src/LocalField/LocalField.jl +++ b/src/LocalField/LocalField.jl @@ -59,7 +59,7 @@ isinfinite(K::LocalField) = isinfinite(base_field(K)) ################################################################################ # -# Generating polynomials properties +# Generating polynomials properties # ################################################################################ @@ -295,7 +295,7 @@ end function unramified_extension(L::LocalField, n::Int, prec::Int, s::String = "z") K, mK = ResidueField(L) f = find_irreducible_polynomial(K, n) - coeffs = + coeffs = return local end =# diff --git a/src/LocalField/Poly.jl b/src/LocalField/Poly.jl index b6610a3388..07e01fe1b8 100644 --- a/src/LocalField/Poly.jl +++ b/src/LocalField/Poly.jl @@ -177,7 +177,7 @@ function fun_factor(f::Generic.Poly{S}) where S <: Union{qadic, LocalFieldElem} ind -= 1 end g = setprecision_fixed_precision(Kt(S[coeff(f, i) for i = ind:degree(f)]), 1) - h = setprecision_fixed_precision(Kt(S[divexact(coeff(f, i), coeff(f, ind)) for i = 0:ind]), 1) + h = setprecision_fixed_precision(Kt(S[divexact(coeff(f, i), coeff(f, ind)) for i = 0:ind]), 1) s = setprecision_fixed_precision(Kt(inv(coeff(g, 0))), 2) t = setprecision_fixed_precision(zero(Kt), 2) ch = Int[v] @@ -930,17 +930,17 @@ function _factor(f::Generic.Poly{T}) where T <: Union{padic, qadic, LocalFieldEl if degree(facts[1]) > 1 #Extend the base field F, gF = unramified_extension(K, degree(facts[1]), precision(K)) - fF = map_coefficients(F, f) + fF = map_coefficients(F, f) lf = Hensel_factorization(fF) fnew = first(values(lf)) lfF = _factor() end end - + end - - + + end diff --git a/src/LocalField/Ring.jl b/src/LocalField/Ring.jl index e1a264cb2f..2c57db456e 100644 --- a/src/LocalField/Ring.jl +++ b/src/LocalField/Ring.jl @@ -1,7 +1,7 @@ ################################################################################ # # (q/p)adic integers -# +# # complete enough to support hnf ################################################################################ # CHECK precision!!! @@ -15,7 +15,7 @@ mutable struct QadicRing{S, T} <: Generic.Ring z.Q = x return z end - + end function Base.show(io::IO, Q::QadicRing) @@ -46,7 +46,7 @@ end function Base.show(io::IO, a::QadicRingElem) print(io, a.x) end - + *(a::QadicRingElem, b::QadicRingElem) = QadicRingElem(a.P, a.x*b.x) +(a::QadicRingElem, b::QadicRingElem) = QadicRingElem(a.P, a.x+b.x) -(a::QadicRingElem, b::QadicRingElem) = QadicRingElem(a.P, a.x-b.x) @@ -54,12 +54,12 @@ end ^(a::QadicRingElem, b::QadicRingElem) = QadicRingElem(a.P, a.x^b.x) ^(a::T, b::QadicRingElem{S, T}) where {S, T} = a^b.x -function inv(a::QadicRingElem) +function inv(a::QadicRingElem) valuation(a.x) == 0 || error("The element is not invertible!") return QadicRingElem(a.P, inv(a.x)) end -==(a::QadicRingElem, b::QadicRingElem) = a.x == b.x +==(a::QadicRingElem, b::QadicRingElem) = a.x == b.x function divexact(a::QadicRingElem, b::QadicRingElem) @assert !iszero(b.x) @@ -70,7 +70,7 @@ end function Base.divrem(a::QadicRingElem, b::QadicRingElem) if valuation(a.x) < valuation(b.x) - return setprecision(a.P(0), precision(a)), a + return setprecision(a.P(0), precision(a)), a end q = divexact(a, b) return q, a-q*b @@ -96,7 +96,7 @@ one(Q::QadicRing) = QadicRingElem(Q, Q.Q(1)) (Q::QadicRing)(a::Integer) = QadicRingElem(Q, Q.Q(a)) (Q::QadicRing)(a::fmpz) = QadicRingElem(Q, Q.Q(a)) -function (Q::QadicRing)(a::fmpq) +function (Q::QadicRing)(a::fmpq) p = prime(Q.Q) if iszero(mod(denominator(a), p)) error("The element is not in the ring!") @@ -182,7 +182,7 @@ Base.isone(a::QadicRingElem) = isone(a.x) Base.precision(Q::QadicRing) = precision(Q.Q) Base.precision(a::QadicRingElem) = precision(a.x) -function setprecision!(Q::QadicRing, n::Int) +function setprecision!(Q::QadicRing, n::Int) setprecision!(Q.Q, n) end diff --git a/src/LocalField/Types.jl b/src/LocalField/Types.jl index 0ebea63cb5..e10c73158a 100644 --- a/src/LocalField/Types.jl +++ b/src/LocalField/Types.jl @@ -37,8 +37,8 @@ mutable struct CompletionMap{S, T} <: Map{AnticNumberField, S, HeckeMap, Complet inv_img::Tuple{nf_elem, nf_elem} precision::Int - function CompletionMap(K::AnticNumberField, L::LocalField{qadic, EisensteinLocalField}, - img::LocalFieldElem{qadic, EisensteinLocalField}, + function CompletionMap(K::AnticNumberField, L::LocalField{qadic, EisensteinLocalField}, + img::LocalFieldElem{qadic, EisensteinLocalField}, inv_img::Tuple{nf_elem, nf_elem}, precision::Int) z = new{LocalField{qadic, EisensteinLocalField}, LocalFieldElem{qadic, EisensteinLocalField}}() z.header = MapHeader(K, L) @@ -48,8 +48,8 @@ mutable struct CompletionMap{S, T} <: Map{AnticNumberField, S, HeckeMap, Complet return z end - function CompletionMap(K::AnticNumberField, L::LocalField{padic, EisensteinLocalField}, - img::LocalFieldElem{padic, EisensteinLocalField}, + function CompletionMap(K::AnticNumberField, L::LocalField{padic, EisensteinLocalField}, + img::LocalFieldElem{padic, EisensteinLocalField}, inv_img::nf_elem, precision::Int) z = new{LocalField{padic, EisensteinLocalField}, LocalFieldElem{padic, EisensteinLocalField}}() z.header = MapHeader(K, L) @@ -59,8 +59,8 @@ mutable struct CompletionMap{S, T} <: Map{AnticNumberField, S, HeckeMap, Complet return z end - function CompletionMap(K::AnticNumberField, L::FlintQadicField, - img::qadic, + function CompletionMap(K::AnticNumberField, L::FlintQadicField, + img::qadic, inv_img::nf_elem, precision::Int) z = new{FlintQadicField, qadic}() z.header = MapHeader(K, L) diff --git a/src/LocalField/qAdic.jl b/src/LocalField/qAdic.jl index 5f85646d62..c9e8cceb54 100644 --- a/src/LocalField/qAdic.jl +++ b/src/LocalField/qAdic.jl @@ -71,7 +71,7 @@ function norm(r::qadic) end function setcoeff!(x::fq_nmod, n::Int, u::UInt) - ccall((:nmod_poly_set_coeff_ui, libflint), Nothing, + ccall((:nmod_poly_set_coeff_ui, libflint), Nothing, (Ref{fq_nmod}, Int, UInt), x, n, u) end @@ -82,7 +82,7 @@ function (Rx::Generic.PolyRing{padic})(a::qadic) coeffs = Vector{padic}(undef, degree(Qq)) for i = 1:length(coeffs) c = R() - ccall((:padic_poly_get_coeff_padic, libflint), Nothing, + ccall((:padic_poly_get_coeff_padic, libflint), Nothing, (Ref{padic}, Ref{qadic}, Int, Ref{FlintQadicField}), c, a, i-1, parent(a)) coeffs[i] = c end @@ -93,20 +93,20 @@ end function coeff(x::qadic, i::Int) R = FlintPadicField(prime(parent(x)), parent(x).prec_max) c = R() - ccall((:padic_poly_get_coeff_padic, libflint), Nothing, + ccall((:padic_poly_get_coeff_padic, libflint), Nothing, (Ref{padic}, Ref{qadic}, Int, Ref{FlintQadicField}), c, x, i, parent(x)) - return c + return c end function setcoeff!(x::qadic, i::Int, y::padic) - ccall((:padic_poly_set_coeff_padic, libflint), Nothing, + ccall((:padic_poly_set_coeff_padic, libflint), Nothing, (Ref{qadic}, Int, Ref{padic}, Ref{FlintQadicField}), x, i, y, parent(x)) end function setcoeff!(x::qadic, i::Int, y::UInt) R = FlintPadicField(prime(parent(x)), parent(x).prec_max) Y = R(fmpz(y)) - ccall((:padic_poly_set_coeff_padic, libflint), Nothing, + ccall((:padic_poly_set_coeff_padic, libflint), Nothing, (Ref{qadic}, Int, Ref{padic}, Ref{FlintQadicField}), x, i, Y, parent(x)) end @@ -175,7 +175,7 @@ function lift_reco(::FlintRationalField, a::padic; reco::Bool = false) R = parent(a) fl, c, d = rational_reconstruction(u, prime(R, N-v)) !fl && return nothing - + x = FlintQQ(c, d) if v < 0 return x//prime(R, -v) diff --git a/src/Map/FiniteField.jl b/src/Map/FiniteField.jl index 8433fff411..e5f437a7fc 100644 --- a/src/Map/FiniteField.jl +++ b/src/Map/FiniteField.jl @@ -36,7 +36,7 @@ function hom(F::FinField, K::FinField, a::FinFieldElem; check::Bool = true) M[i, j] = coeff(el, j-1) end end - + aux = zero_matrix(Kp, 1, degree(F)) aux1 = zero_matrix(Kp, 1, degree(K)) function img(x::FinFieldElem) @@ -47,7 +47,7 @@ function hom(F::FinField, K::FinField, a::FinFieldElem; check::Bool = true) mul!(aux1, aux, M) pol = Kpx(elem_type(Kp)[aux1[1, j] for j = 1:degree(K)]) return K(pol) - end + end function preimg(x::FinFieldElem) diff --git a/src/Map/GrpAb.jl b/src/Map/GrpAb.jl index a9ef995b49..1d38339b46 100644 --- a/src/Map/GrpAb.jl +++ b/src/Map/GrpAb.jl @@ -206,7 +206,7 @@ mutable struct GrpAbFinGenToAbsOrdMap{S, T} <: Map{GrpAbFinGen, S, HeckeMap, Grp generators::Vector{T} discrete_logarithm::Function modulus # this can be anything, for which powermod(::T, ::fmpz, modulus) is defined - + disc_log::GrpAbFinGenElem #Needed in the conductor computation function GrpAbFinGenToAbsOrdMap{S, T}(G::GrpAbFinGen, O::S, generators::Vector{T}, disc_log::Function, modulus...) where {S, T} @@ -293,7 +293,7 @@ mutable struct GrpAbFinGenToAbsOrdQuoRingMultMap{S, T, U} <: Map{GrpAbFinGen, Ab # Multiplicative group, wild part wild::Dict{T, GrpAbFinGenToAbsOrdMap{S, U}} - + function GrpAbFinGenToAbsOrdQuoRingMultMap{S, T, U}(G::GrpAbFinGen, Q::AbsOrdQuoRing{S, T}, generators::Vector{AbsOrdQuoRingElem{S, T, U}}, disc_log::Function) where {S, T, U} @assert ngens(G) == length(generators) diff --git a/src/Map/Map.jl b/src/Map/Map.jl index 7887f19ba0..f062e6dd1d 100644 --- a/src/Map/Map.jl +++ b/src/Map/Map.jl @@ -105,7 +105,7 @@ function _allow_cache!(M::Map, lim::Int, ::Type{D}, ::Type{C}, ::Type{De}, ::Typ M.header.cache.old_pr = M.header.preimage M.header.cache.old_im = M.header.image end - + if length(methods(M.header.image)) > 1 println("Cannot do image cache, too many types") else diff --git a/src/Map/MapType.jl b/src/Map/MapType.jl index d367753da7..7f5adff28e 100644 --- a/src/Map/MapType.jl +++ b/src/Map/MapType.jl @@ -1,5 +1,5 @@ ########################################################### -## +## ## MAPS ## ## maps between residue rings of polynomials and in general @@ -38,7 +38,7 @@ mutable struct MapCache{D, C, De, Ce} im::Dict{De, Ce} imStat::Dict{De, Int} - pr::Dict{Ce, De} + pr::Dict{Ce, De} prStat::Dict{Ce, Int} old_im::Function @@ -210,7 +210,7 @@ function Base.show(io::IO, M::MapFromFunc) io = IOContext(io, :compact => true) # println(io, "Map from the $(M.f) julia-function") println(io, "Map from") - show(io, domain(M)) + show(io, domain(M)) print(io, " to ") show(io, codomain(M)) print(io, " defined by a julia-function") diff --git a/src/Map/NfOrd.jl b/src/Map/NfOrd.jl index 2cd491e01f..f2ae3e33b9 100644 --- a/src/Map/NfOrd.jl +++ b/src/Map/NfOrd.jl @@ -10,7 +10,7 @@ mutable struct NfOrdToFqNmodMor <: Map{NfOrd, FqNmodFiniteField, HeckeMap, NfOrd poly_of_the_field::gfp_poly P::NfOrdIdl powers::Vector{nf_elem} - + function NfOrdToFqNmodMor() r = new() r.header = MapHeader{NfOrd, FqNmodFiniteField}() @@ -64,7 +64,7 @@ mutable struct NfOrdToFqNmodMor <: Map{NfOrd, FqNmodFiniteField, HeckeMap, NfOrd z.header = MapHeader{NfOrd, FqNmodFiniteField}(O, F, _image, _preimage) return z end - + function NfOrdToFqNmodMor(O::NfOrd, P::NfOrdIdl) z = NfOrdToFqNmodMor() z.P = P @@ -80,7 +80,7 @@ mutable struct NfOrdToFqNmodMor <: Map{NfOrd, FqNmodFiniteField, HeckeMap, NfOrd powers = Vector{nf_elem}(undef, d) c = Rx() for i in 1:n - ib = F() + ib = F() @assert d == ncols(b[i]) for j in 1:d setcoeff!(c, j - 1, b[i][1, j]) @@ -316,7 +316,7 @@ function NfOrdToFqMor(O::NfOrd, P::NfOrdIdl)#, g::fmpz_poly, a::NfOrdElem, b::Ve c = Rx() for i in 1:n - ib = F() + ib = F() @assert d == ncols(b[i]) for j in 1:d setcoeff!(c, j - 1, b[i][1, j]) @@ -410,7 +410,7 @@ mutable struct NfOrdToGFMor <: Map{NfOrd, GaloisField, HeckeMap, NfOrdToFqNmodMo header::MapHeader{NfOrd, GaloisField} poly_of_the_field::gfp_poly P::NfOrdIdl - + function NfOrdToGFMor() r = new() r.header = MapHeader{NfOrd, GaloisField}() @@ -438,7 +438,7 @@ mutable struct NfOrdToGFMor <: Map{NfOrd, GaloisField, HeckeMap, NfOrdToFqNmodMo z.header = MapHeader{NfOrd, GaloisField}(O, F, _image) return z end - + function NfOrdToGFMor(O::NfOrd, P::NfOrdIdl) z = NfOrdToGFMor() z.P = P @@ -481,7 +481,7 @@ mutable struct NfOrdToGFFmpzMor <: Map{NfOrd, Nemo.GaloisFmpzField, HeckeMap, Nf header::MapHeader{NfOrd, Nemo.GaloisFmpzField} poly_of_the_field::gfp_fmpz_poly P::NfOrdIdl - + function NfOrdToGFFmpzMor() r = new() return r @@ -506,7 +506,7 @@ mutable struct NfOrdToGFFmpzMor <: Map{NfOrd, Nemo.GaloisFmpzField, HeckeMap, Nf z.header = MapHeader{NfOrd, Nemo.GaloisFmpzField}(O, F, _image) return z end - + function NfOrdToGFFmpzMor(O::NfOrd, P::NfOrdIdl) z = NfOrdToGFFmpzMor() z.P = P @@ -550,7 +550,7 @@ Mor(O::NfOrd, F::Nemo.GaloisFmpzField, h::gfp_fmpz_poly) = NfOrdToGFFmpzMor(O, F # ################################################################################ -mutable struct NfToFinFldMor{T} <: Map{AnticNumberField, T, HeckeMap, NfToFinFldMor{T}} +mutable struct NfToFinFldMor{T} <: Map{AnticNumberField, T, HeckeMap, NfToFinFldMor{T}} header::MapHeader{AnticNumberField, T} function NfToFinFldMor{T}() where T @@ -613,7 +613,7 @@ evaluated using `image(map, elem)`. The resulting map can be applied to * `nf_elem` * `FacElem{nf_elem}` -Will throw a `BadPrime` exception if applied to an element in the +Will throw a `BadPrime` exception if applied to an element in the field with a $p$ in the denominator. In the case of `FacElem`, zero is also not permitted (and will produce a `BadPrime` error). """ @@ -659,7 +659,7 @@ function image(mF::NfToFqMor_easy, a::FacElem{nf_elem, AnticNumberField}, quo::I for (k, v) = a.fac vv = v if quo != 0 - vv = v % quo + vv = v % quo if vv < 0 vv += quo end @@ -726,7 +726,7 @@ function image(mF::NfToFqNmodMor_easy, a::FacElem{nf_elem, AnticNumberField}, qu for (k, v) = a.fac # I want to map k^v to F. I can reduce mod q (reduction modulo q - 1 is # done by the power function itself. - + inver = false if v < 0 @@ -782,7 +782,7 @@ function image(mF::NfToFqNmodMor_easy, a::FacElem{nf_elem, AnticNumberField}, D: for (k, v) in a.fac i += 1 - + inver = false if v < 0 @@ -847,7 +847,7 @@ function image(mF::NfToFqNmodMor_easy, a::FacElem{nf_elem, AnticNumberField}, D: if iszero(s) throw(BadPrime(1)) end - + if inver ccall((:fq_nmod_inv, libflint), Nothing, (Ref{fq_nmod}, Ref{fq_nmod}, Ref{FqNmodFiniteField}), s, s, Fq) end @@ -916,7 +916,7 @@ function image(mF::NfToGFMor_easy, a::FacElem{nf_elem, AnticNumberField}, quo::I for (k, v) = a.fac vv = v if quo != 0 - vv = v %quo + vv = v %quo if vv < 0 vv += quo end @@ -1027,7 +1027,7 @@ function image(mF::NfToGFMor_easy, a::nf_elem, D::Vector, cached::Bool, n_quo::I Fq = mF.Fq p = mF.defining_pol t = mF.t - + @assert ismonic(p) evaluateat = -coeff(p, 0) @@ -1075,7 +1075,7 @@ function image(mF::NfToGFFmpzMor_easy, a::FacElem{nf_elem, AnticNumberField}, qu for (k, v) = a.fac vv = v if quo != 0 - vv = v %quo + vv = v %quo if vv < 0 vv += quo end diff --git a/src/Map/NumField.jl b/src/Map/NumField.jl index 606a3a9edf..076fbefd48 100644 --- a/src/Map/NumField.jl +++ b/src/Map/NumField.jl @@ -88,13 +88,13 @@ # hom(::NfRelNS{nf_elem}, AnticNumberField, nf_elem, Vector{nf_elem})) # - a homorphism base_field(K) -> base_field(L) # hom(K, L, ::Vector{elem_type(L)}) -# - this assumes that the base_field of K embeds naturally into L +# - this assumes that the base_field of K embeds naturally into L # # We also get a nice syntax to create inverses for free: # # hom(K, L, ..., inverse = (x)) # -# where x is such that hom(L, K, x) works. +# where x is such that hom(L, K, x) works. # export restrict @@ -124,7 +124,7 @@ mutable struct NumFieldMor{S, T, U, V, W} <: Map{S, T, HeckeMap, NumFieldMor} z.header = MapHeader(K, L) return z end - + function NumFieldMor{S, T, U, V}(h::MapHeader{S, T}, i::U, p::V) where {S, T, U, V} z = new{S, T, U, V, elem_type(S)}(h, i, p) return z @@ -151,7 +151,7 @@ function hom(K::S, L::T, x...; inverse = nothing, # This goes through _validata_data, since we don't want to split the # argument if for example the argument is a Vector inverse_data = _map_data(L, K, inverse, check = check) - + z = NumFieldMor{S, T, typeof(image_data), typeof(inverse_data)}(header, image_data, inverse_data) @@ -231,7 +231,7 @@ mutable struct MapDataFromAnticNumberField{T} z.isid = true return z end - + function MapDataFromAnticNumberField{T}(x::T) where T z = new{T}(x, false) return z @@ -271,7 +271,7 @@ function map_data(K::AnticNumberField, L, x::NumFieldElem; check = true) xx = x else xx = L(x)::elem_type(L) - end + end if check if !iszero(evaluate(defining_polynomial(K), xx)) @@ -301,7 +301,7 @@ mutable struct MapDataFromNfRel{T, S} z = new{T, S}(x, y, false) return z end - + function MapDataFromNfRel{T, S}(x::Bool) where {T, S} @assert x z = new{T, S}() @@ -374,7 +374,7 @@ function map_data(K::NfRel, L, x...; check = true) @assert typeof(yy) == elem_type(L) @assert typeof(z) == map_data_type(base_field(K), L) - + return MapDataFromNfRel{typeof(yy), typeof(z)}(yy, z) end @@ -387,7 +387,7 @@ mutable struct MapDataFromNfAbsNS{T} z = new{T}(x, false) return z end - + function MapDataFromNfAbsNS{T}(x::Bool) where {T} @assert x z = new{T}() @@ -406,7 +406,7 @@ function _isequal(K, L, u::MapDataFromNfAbsNS{T}, v::MapDataFromNfAbsNS{T}) wher return true end - return v.images == u.images + return v.images == u.images end function image(f::MapDataFromNfAbsNS, L, y) @@ -442,12 +442,12 @@ function map_data(K::NfAbsNS, L, x::Vector; check = true) error("Data does not define a morphism") end end - end + end @assert typeof(xx) == Vector{elem_type(L)} return MapDataFromNfAbsNS{typeof(xx)}(xx) -end +end # From NfRelNS into something mutable struct MapDataFromNfRelNS{T, S} @@ -459,7 +459,7 @@ mutable struct MapDataFromNfRelNS{T, S} z = new{T, S}(x, y, false) return z end - + function MapDataFromNfRelNS{T, S}(x::Bool) where {T, S} @assert x z = new{T, S}() diff --git a/src/Map/NumberField.jl b/src/Map/NumberField.jl index 6f6fa6f3a7..d0d0806573 100644 --- a/src/Map/NumberField.jl +++ b/src/Map/NumberField.jl @@ -109,9 +109,9 @@ Base.copy(f::NfToNfMor) = f isnormal(K::AnticNumberField) -> Bool Returns true if $K$ is a normal extension of $\mathbb Q$, false otherwise. -""" +""" function isnormal(K::AnticNumberField) - #Before computing the automorphisms, I split a few primes and check if the + #Before computing the automorphisms, I split a few primes and check if the #splitting behaviour is fine c = get_special(K, :isnormal) if c isa Bool @@ -177,7 +177,7 @@ function iscm_field(K::NumField) end if isodd(degree(K)) || !istotally_complex(K) return false, id_hom(K) - end + end if isautomorphisms_known(K) auts = automorphisms(K, copy = false) return _find_complex_conj(auts) @@ -246,7 +246,7 @@ function iscm_field_easy(K::AnticNumberField) if !fl return false end - j += 1 + j += 1 end i += 1 end @@ -297,7 +297,7 @@ function induce_image(f::NfToNfMor, x::NfOrdIdl) OK = order(x) K = nf(OK) - if has_2_elem(x) && ismaximal_known(OK) && ismaximal(OK) + if has_2_elem(x) && ismaximal_known(OK) && ismaximal(OK) int_in_ideal = x.gen_one if has_minimum(x) int_in_ideal = minimum(x, copy = false) diff --git a/src/Map/Old.jl b/src/Map/Old.jl index 4773444ca2..fbea621f87 100644 --- a/src/Map/Old.jl +++ b/src/Map/Old.jl @@ -16,7 +16,7 @@ mutable struct ResidueRingPolyMap{D, C, T} <: Map{D, C, HeckeMap, ResidueRingPol end return I::elem_type(C) end - + # I need to call preimage in _preimage _preimage = function(a::Generic.Res) R = codomain @@ -37,7 +37,7 @@ mutable struct ResidueRingPolyMap{D, C, T} <: Map{D, C, HeckeMap, ResidueRingPol ## over rings than fields? s = s[1] * inv(s[2]) # all rings here (type) are actually fields (math) end - + s = sum([preimage(z.coeff_map, s[i,1])*g[i] for i=1:length(g)]) @assert parent(s) == domain return s::elem_type(domain) diff --git a/src/Map/automorphisms.jl b/src/Map/automorphisms.jl index b31a39ddce..b2dd37dce3 100644 --- a/src/Map/automorphisms.jl +++ b/src/Map/automorphisms.jl @@ -128,7 +128,7 @@ end automorphism_type(::AnticNumberField) = NfToNfMor automorphism_type(::NfAbsNS) = NfAbsNSToNfAbsNS - + function automorphisms(K::NumField{fmpq}; copy::Bool = true, isabelian::Bool = false) T = automorphism_type(K) if isautomorphisms_known(K) @@ -155,7 +155,7 @@ function automorphisms(K::NumField{fmpq}; copy::Bool = true, isabelian::Bool = f return auts end end - + function isautomorphisms_known(K::AnticNumberField) return _get_automorphisms_nf(K, false) != nothing end @@ -193,7 +193,7 @@ end automorphism_group(K::AnticNumberField) -> GenGrp, GrpGenToNfMorSet Given a number field $K$, this function returns a group $G$ and a map from $G$ to the automorphisms of $K$. -""" +""" function automorphism_group(K::AnticNumberField) if Nemo.iscyclo_type(K) return _automorphism_group_cyclo(K) @@ -381,7 +381,7 @@ function _automorphisms_abelian(K::AnticNumberField) Fx = PolynomialRing(F, cached = false)[1] fF = Fx(K.pol) if degree(fF) != degree(K) || iszero(discriminant(fF)) - continue + continue end @vprint :Automorphisms 1 "Trying $p \n" @vtime :Automorphisms 1 isnew, h = _frobenius_at(K, p, auts) @@ -425,7 +425,7 @@ function lift_root(K::AnticNumberField, b, bound::Int) mul!(r, r, dF) mod_sym!(r, modu) i = 0 - while i < bound && r != r_old && !check_root(K, test, r) + while i < bound && r != r_old && !check_root(K, test, r) i += 1 modu = modu^2 R = ResidueRing(FlintZZ, modu, cached = false) @@ -473,7 +473,7 @@ function _frobenius_at(K::AnticNumberField, p::Int, auts::Vector{NfToNfMor} = Nf return true, hom(K, K, rt, check = false) else return false, id_hom(K) - end + end end @@ -492,7 +492,7 @@ function _coefficients_bound(K::AnticNumberField) E = EquationOrder(K) c1, c2 = norm_change_const(E) - #First, t2 norm + #First, t2 norm R = parent(bound_root[1]) bd = zero(R) for i in 1:r1 @@ -550,7 +550,7 @@ function _automorphisms_center(K::AnticNumberField) Fx = PolynomialRing(F, cached = false)[1] fF = Fx(K.pol) if degree(fF) != degree(K) || iszero(discriminant(fF)) - continue + continue end lf = factor_distinct_deg(fF) if length(lf) != 1 @@ -589,7 +589,7 @@ function isabelian2(K::AnticNumberField) Fx, gFx = PolynomialRing(F, cached = false) fF = Fx(K.pol) if degree(fF) != degree(K) || iszero(discriminant(fF)) - continue + continue end lf = factor_distinct_deg(fF) if length(lf) != 1 diff --git a/src/Misc/FactoredElem.jl b/src/Misc/FactoredElem.jl index 672e115b2f..f06e188de8 100644 --- a/src/Misc/FactoredElem.jl +++ b/src/Misc/FactoredElem.jl @@ -22,7 +22,7 @@ function add_to_key!(D::Dict{S, T}, k::S, v::T; remove_zero::Bool = true) where if w != v && iszero(cmpabs(w, v)) Base._delete!(D, hash_k) else - @inbounds D.vals[hash_k] = w + v + @inbounds D.vals[hash_k] = w + v end else @inbounds D.vals[hash_k] = w + v @@ -312,7 +312,7 @@ function *(x::FacElem{B, S}, y::FacElem{B, S}) where {B, S} for (a, v) in y add_to_key!(z.fac, a, v, remove_zero = true) end - + return z end diff --git a/src/Misc/FactoredElemIntegers.jl b/src/Misc/FactoredElemIntegers.jl index 4584cbf969..649376146a 100644 --- a/src/Misc/FactoredElemIntegers.jl +++ b/src/Misc/FactoredElemIntegers.jl @@ -5,7 +5,7 @@ const FacElemQ = Union{FacElem{fmpq, FlintRationalField}, FacElem{fmpz, FlintInt evaluate(x::FacElem{fmpz}) -> fmpz Expands or evaluates the factored element, i.e. actually computes the -the element. +the element. Works by first obtaining a simplified version of the power product into coprime base elements. """ @@ -102,7 +102,7 @@ function simplify!(x::FacElem{fmpz}) for (b, vb) in x v += valuation(b, abs(p))*vb end - if v < 0 + if v < 0 throw(DomainError(v, "Negative valuation in simplify!")) end if v != 0 diff --git a/src/Misc/Fields.jl b/src/Misc/Fields.jl index 9bb88c2b39..7d3fafffca 100644 --- a/src/Misc/Fields.jl +++ b/src/Misc/Fields.jl @@ -86,7 +86,7 @@ mutable struct FldToVecMor{R, S, T, U, V} z.isone = isone(M) return z end - + function FldToVecMor(L, Q) K = Q L = L diff --git a/src/Misc/FiniteField.jl b/src/Misc/FiniteField.jl index 9d50e9fdb6..f69f14426e 100644 --- a/src/Misc/FiniteField.jl +++ b/src/Misc/FiniteField.jl @@ -74,9 +74,9 @@ function Base.iterate(F::FqNmodFiniteField, st::Vector{UInt}) st[j + 1] = st[j + 1] + 1 end end - + d = F() - ccall((:fq_nmod_init2, libflint), Nothing, + ccall((:fq_nmod_init2, libflint), Nothing, (Ref{fq_nmod}, Ref{FqNmodFiniteField}), d, F) for j in 1:length(st) ccall((:nmod_poly_set_coeff_ui, libflint), Nothing, @@ -119,7 +119,7 @@ function Base.iterate(F::FqFiniteField, st::Vector{fmpz}) end d = F() - ccall((:fq_init2, libflint), Nothing, + ccall((:fq_init2, libflint), Nothing, (Ref{fq}, Ref{FqFiniteField}), d, F) g = Hecke.Globals.Zx() for j in 1:length(st) @@ -197,7 +197,7 @@ function _nf_to_fq!(a::fq_nmod, b::nf_elem, K::FqNmodFiniteField, a_tmp::nmod_po a, a_tmp, K) _reduce(a) end - + function _nf_to_fq!(a::fq_nmod, b::nf_elem, K::FqNmodFiniteField, a_tmp::gfp_poly) nf_elem_to_gfp_poly!(a_tmp, b) ccall((:fq_nmod_set, libflint), Nothing, @@ -256,7 +256,7 @@ function has_primitive_root_1(K::Nemo.FqNmodFiniteField, m::Int) continue end return true, g^div(size(K)-1, m) - end + end end @@ -386,7 +386,7 @@ function unit_group(F::T; n_quo::Int = -1) where T <: FinField else return G([mod(inv*disc_log_bs_gs(g, y, npart), k)]) end - end + end mG = FiniteFieldMultGrpMap{T, elem_type(F)}(G, F, g, disc_log) return G, mG end @@ -502,7 +502,7 @@ struct FrobeniusCtx fb::VeryBad K::FqNmodFiniteField i::Int - + function FrobeniusCtx(K::FqNmodFiniteField, i::Int = 1) m = frobenius_matrix(K, i) return new(m, VeryBad(m.n, m.ninv, m.norm), VeryBad(m.n, m.ninv, m.norm), K, i) diff --git a/src/Misc/IJulia.jl b/src/Misc/IJulia.jl index 7e55e9f6e1..b5ae816605 100644 --- a/src/Misc/IJulia.jl +++ b/src/Misc/IJulia.jl @@ -151,7 +151,7 @@ function math_html(io::IO, a::nf_elem) t = Symbol("\\zeta_{$c}") end end - if s in [:_a, Symbol("_\$")] + if s in [:_a, Symbol("_\$")] t = Symbol("\\alpha") end parent(a).S = t @@ -264,7 +264,7 @@ end math_html(io::IO, a::Rational) = math_html(io, fmpq(a)) -#function Base.show(io::IO, ::MIME"text/html", a::Rational) +#function Base.show(io::IO, ::MIME"text/html", a::Rational) # print(io, "\$") # math_html(io, a) # print(io, "\$") @@ -294,7 +294,7 @@ end #= infinite recursion through generic math_html, so don't -function Base.show(io::IO, ::MIME"text/html", a) +function Base.show(io::IO, ::MIME"text/html", a) print(io, "\$") math_html(io, a) print(io, "\$") @@ -359,7 +359,7 @@ function math_html(io::IO, O::NfAbsOrd{AnticNumberField, nf_elem}) return end n = find_name(nf(O)) - if n === nothing + if n === nothing print(io, "\\text{$n }") math_html(io, nf(O)) else @@ -437,7 +437,7 @@ function math_html(io::IO, G::GrpAbFinGen) n = find_name(G) if !(n === nothing) && get(io, :compact, false) print(io, string(n)) - return + return end s = get_special(G, :show) if s !== nothing @@ -465,7 +465,7 @@ function math_html(io::IO, R::PolyRing) n = find_name(R) if !(n === nothing) && get(io, :compact, false) print(io, string(n)) - return + return end print(io, "\\text{Polynomial ring over }") print(IOContext(io, :compact => true), base_ring(R)) @@ -481,7 +481,7 @@ function math_html(io::IO, K::NfRel) n = find_name(K) if !(n === nothing) && get(io, :compact, false) print(io, string(n)) - return + return end print(io, "\\text{Relative number field over }") math_html(IOContext(io, :compact => true), base_field(K)) diff --git a/src/Misc/Integer.jl b/src/Misc/Integer.jl index 8890e326be..6752e8a9a3 100644 --- a/src/Misc/Integer.jl +++ b/src/Misc/Integer.jl @@ -126,7 +126,7 @@ iscommutative(::FlintIntegerRing) = true # end # return fmpz(0) # end -# +# # if a == 1 # return fmpz(1) # end @@ -147,7 +147,7 @@ function ^(a::fmpq, k::fmpz) end return fmpq(0) end - + if a == 1 return fmpq(1) end @@ -1559,7 +1559,7 @@ end Returns a vector containing all the squarefree numbers up to $n$. """ function squarefree_up_to(n::Int; coprime_to::Vector{fmpz} = fmpz[], prime_base::Vector{fmpz} = fmpz[]) - + @assert isempty(coprime_to) || isempty(prime_base) if !isempty(prime_base) listi = Int[1] diff --git a/src/Misc/MPoly.jl b/src/Misc/MPoly.jl index 7ea086fd16..bf2487528e 100644 --- a/src/Misc/MPoly.jl +++ b/src/Misc/MPoly.jl @@ -53,7 +53,7 @@ end # #Tests if $f$ involves only one variable. If so, return a corresponding univariate polynomial. #""" -#function isunivariate(f::Generic.MPoly{T}) where T +#function isunivariate(f::Generic.MPoly{T}) where T # kx, x = PolynomialRing(base_ring(f), "x", cached = false) # if ngens(parent(f)) == 1 # f1 = kx() @@ -108,7 +108,7 @@ end #not used here """ -`content` as a polynomial in the variable `i`, i.e. the gcd of all the +`content` as a polynomial in the variable `i`, i.e. the gcd of all the coefficients when viewed as univariate polynomial in `i`. """ function Hecke.content(f::MPolyElem, i::Int) diff --git a/src/Misc/MPolyFactor.jl b/src/Misc/MPolyFactor.jl index 9114d24f01..1ef8a06d37 100644 --- a/src/Misc/MPolyFactor.jl +++ b/src/Misc/MPolyFactor.jl @@ -828,7 +828,7 @@ end (false, junk, junk) if the ufacs don't lift straight to bivariate ones TODO: allow this function to do a bit of zassenhaus and add a parameter to - limit the size of the subsets. + limit the size of the subsets. =# function hlift_bivar_combine( a::E, @@ -1026,7 +1026,7 @@ end #= Try to determine divisors of the leading coefficients of the factors of A. This is accomplished by looking at the bivariate factoration of A when - all but one of the minor variables are evaluated away. The resulting + all but one of the minor variables are evaluated away. The resulting univariate leading coefficients are lifted against the supplied leading_coefficient(A) factorization. return is Tuple{::Boole, ::Vector{E}} If the bool is true, then the method can be considered to have fully found @@ -1131,7 +1131,7 @@ function mfactor_irred_mvar_char_zero( # make sure univar is squarefree. TODO also zassenhaus pruning here ok, fac = mfactor_irred_univar(evals[1], mainvar) if !ok - @goto next_alpha + @goto next_alpha end r = length(fac) @@ -1216,7 +1216,7 @@ function mfactor_irred_char_zero(a::E) where E if !isone(lc) res.unit = lc a *= inv(lc) - end + end degs = degrees(a) vars = Int[] # variables that actually appear @@ -1326,7 +1326,7 @@ function factor(a::MPolyElem) return mfactor_char_zero(a) else error("factor not implemented for the ring $R") - end + end end function factor_squarefree(a::MPolyElem) @@ -1336,6 +1336,6 @@ function factor_squarefree(a::MPolyElem) return mfactor_squarefree_char_zero(a) else error("factor_squarefree not implemented for the ring $R") - end + end end diff --git a/src/Misc/MSet.jl b/src/Misc/MSet.jl index 34a08769f5..78e29db3ed 100644 --- a/src/Misc/MSet.jl +++ b/src/Misc/MSet.jl @@ -27,9 +27,9 @@ function Base.show(io::IO, ::MIME"text/plain", s::MSet) first || print(io, ", ") first = false if v > 1 - print(io, "$k : $v") + print(io, "$k : $v") else - print(io, "$k") + print(io, "$k") end end print(io,")") @@ -50,7 +50,7 @@ function Base.push!(s::MSet, x, mult::Int = 1) #end end -function Base.pop!(s::MSet, x) +function Base.pop!(s::MSet, x) s.dict[x] -= 1 if s.dict[x] == 0 delete!(s.dict, x) @@ -238,7 +238,7 @@ function subsets(s::Set{T}, k::Int) where T end end push!(C, B) - k -=1 + k -=1 end return SubSetSizeItr{T}(b, length(C), C, m) diff --git a/src/Misc/Matrix.jl b/src/Misc/Matrix.jl index e6b26427d7..a3dc0a49f0 100644 --- a/src/Misc/Matrix.jl +++ b/src/Misc/Matrix.jl @@ -138,7 +138,7 @@ function saturate(A::fmpz_mat) Hi, d = pseudo_inv(H) S = Hi*A divexact!(S, S, d) - end + end # @hassert :HNF 1 d*Sd == S return S end @@ -378,7 +378,7 @@ function ishnf(x::fmpz_mat, shape::Symbol) end j = ncols(x) - while j >= 0 && iszero_entry(x, i, j) + while j >= 0 && iszero_entry(x, i, j) j = j - 1 end if j == -1 @@ -1325,8 +1325,8 @@ end function snf_for_groups(A::fmpz_mat, mod::fmpz) R = identity_matrix(FlintZZ, ncols(A)) S = deepcopy(A) - - + + if !isdiagonal(S) T = zero_matrix(FlintZZ, ncols(A), ncols(A)) GC.@preserve S R T begin @@ -1504,7 +1504,7 @@ end function isdiagonal(A::fmpz_mat) for i = 1:ncols(A) for j = 1:nrows(A) - if i != j + if i != j t = ccall((:fmpz_mat_entry, libflint), Ptr{fmpz}, (Ref{fmpz_mat}, Int, Int), A, j - 1, i - 1) fl = ccall((:fmpz_is_zero, libflint), Bool, (Ref{fmpz},), t) if !fl diff --git a/src/Misc/Plesken.jl b/src/Misc/Plesken.jl index 2b662c4649..81e5e12956 100644 --- a/src/Misc/Plesken.jl +++ b/src/Misc/Plesken.jl @@ -55,13 +55,13 @@ end ################################################################################ # -# Presentation for extensions of prime power degree +# Presentation for extensions of prime power degree # ################################################################################ @doc Markdown.doc""" presentation(p, r, n) -> FinField -Computes a presentation for the finite field of order p^(r^n) as defined +Computes a presentation for the finite field of order p^(r^n) as defined by Plesken. """ function presentation(p::T, r::T, n::Int) where T <: Union{fmpz, Int} @@ -94,7 +94,7 @@ function _presentation_artin_schreier(F, n) end function smallest_pkth_root(F, r) - #First, I find a rk-th root of unity + #First, I find a rk-th root of unity #by taking random elements p = order(F) nit, cop = ppio(p-1, fmpz(r)) @@ -104,7 +104,7 @@ function smallest_pkth_root(F, r) x = rand(F)^cop end k = valuation(p-1, r) - #Now, iteratively, I search for + #Now, iteratively, I search for #the smallest r-th root pow_ind = 1 for i = 1:k @@ -131,7 +131,7 @@ function _presentation_kummer(F, r::T, n::Int) where T <: Union{fmpz, Int} def_pol1 = Fx() setcoeff!(def_pol1, 0, -pr_root) - setcoeff!(def_pol1, r^n, one(F)) + setcoeff!(def_pol1, r^n, one(F)) F1, gF1 = FiniteField(def_pol1, "a1", cached = false, check = false) return F1 end diff --git a/src/Misc/Poly.jl b/src/Misc/Poly.jl index a363b574c2..ac509ce302 100644 --- a/src/Misc/Poly.jl +++ b/src/Misc/Poly.jl @@ -80,7 +80,7 @@ Apply `rational_reconstruction` to each coefficient of $a$, resulting in either a fail (return (false, s.th.)) or (true, g) for some rational polynomial $g$ s.th. $g \equiv a \bmod M$. """ -function induce_rational_reconstruction(a::fmpz_poly, M::fmpz; parent=PolynomialRing(FlintQQ, parent(a).S, cached = false)[1]) +function induce_rational_reconstruction(a::fmpz_poly, M::fmpz; parent=PolynomialRing(FlintQQ, parent(a).S, cached = false)[1]) b = parent() for i=0:degree(a) fl, x,y = rational_reconstruction(coeff(a, i), M) @@ -162,12 +162,12 @@ function my_compose_mod(x::fmpz_mod_poly, y::fmpz_mod_poly, z::fmpz_mod_poly) end function my_compose_mod_precomp(x::fmpz_mod_poly, A::fmpz_mat, z::fmpz_mod_poly, zinv::fmpz_mod_poly) - + if degree(x) < degree(z) res1 = compose_mod_precomp(x, A, z, zinv) return res1 end - + #First, I compute x^degree(z) mod z #The rows of A contain the powers up to sqrt(degree(z))... Rx = parent(x) @@ -180,7 +180,7 @@ function my_compose_mod_precomp(x::fmpz_mod_poly, A::fmpz_mat, z::fmpz_mod_poly, yind = mulmod(yind, ydiff, z) end x1 = shift_right(x, degree(z)) - res = mulmod(compose_mod_precomp(x1, A, z, zinv), yind, z) + res = mulmod(compose_mod_precomp(x1, A, z, zinv), yind, z) x2 = truncate(x, degree(z)) add!(res, res, compose_mod_precomp(x2, A, z, zinv)) return res @@ -832,7 +832,7 @@ function factor_equal_deg(x::gfp_fmpz_poly, d::Int) end return res end - + ################################################################################ # # Squarefree factorization for fmpq_poly @@ -1146,7 +1146,7 @@ function mod(f::AbstractAlgebra.PolyElem{T}, g::AbstractAlgebra.PolyElem{T}) whe c = base_ring(f)() while length(f) >= length(g) l = -leading_coefficient(f) - for i = 1:length(g) + for i = 1:length(g) c = mul!(c, coeff(g, i - 1), l) u = coeff(f, i + length(f) - length(g) - 1) u = addeq!(u, c) @@ -1177,7 +1177,7 @@ function Base.divrem(f::AbstractAlgebra.PolyElem{T}, g::AbstractAlgebra.PolyElem q1 = leading_coefficient(f) l = -q1 q = setcoeff!(q, length(f) - length(g), q1*binv) - for i = 1:length(g) + for i = 1:length(g) c = mul!(c, coeff(g, i - 1), l) u = coeff(f, i + length(f) - length(g) - 1) u = addeq!(u, c) @@ -1192,7 +1192,7 @@ end @doc Markdown.doc""" fmpz_poly_read!(a::fmpz_poly, b::String) -> fmpz_poly -Use flint's native read function to obtain the polynomial in the file with name `b`. +Use flint's native read function to obtain the polynomial in the file with name `b`. """ function fmpz_poly_read!(a::fmpz_poly, b::String) f = ccall((:fopen, :libc), Ptr{Nothing}, (Cstring, Cstring), b, "r") @@ -1203,7 +1203,7 @@ end @doc Markdown.doc""" mahler_measure_bound(f::fmpz_poly) -> fmpz - + A upper bound on the Mahler measure of `f`. The Mahler measure is the product over the roots of absolute value at least `1`. """ @@ -1243,7 +1243,7 @@ function prod1(a::Vector{T}; inplace::Bool = false) where T <: PolyElem else anew[end] = a[end]*a[end-1] end - end + end return prod1(anew, inplace = true) end diff --git a/src/Misc/Primes.jl b/src/Misc/Primes.jl index 34f923b08c..a734b9621c 100644 --- a/src/Misc/Primes.jl +++ b/src/Misc/Primes.jl @@ -65,7 +65,7 @@ struct PrimesSet{T} end if !isone(gcd(mod, val)) error("Modulus and value need to be coprime.") - end + end r = new{T}(f, t, false, false, mod, val, sv) return r end @@ -77,20 +77,20 @@ end Returns an iterable object $S$ representing the prime numbers $p$ for $f \le p \le t$. If $t=-1$, then the upper bound is infinite. -""" +""" function PrimesSet(f::T, t::T) where T return PrimesSet{T}(f, t) end @doc Markdown.doc""" - PrimesSet(f::Integer, t::Integer, mod::Integer, val::Integer) - PrimesSet(f::fmpz, t::fmpz, mod::fmpz, val::fmpz) + PrimesSet(f::Integer, t::Integer, mod::Integer, val::Integer) + PrimesSet(f::fmpz, t::fmpz, mod::fmpz, val::fmpz) Returns an iterable object $S$ representing the prime numbers $p$ for $f \le p \le t$ and $p\equiv val \bmod mod$ (primes in arithmetic -progression). +progression). If $t=-1$, then the upper bound is infinite. -""" +""" function PrimesSet(f::T, t::T, mod::T, val::T) where {T} return PrimesSet{T}(f, t, mod, val) end @@ -118,7 +118,7 @@ function Base.iterate(A::PrimesSet{T}) where {T <: Integer} end end - curr = A.from + curr = A.from c = curr % A.mod if A.mod > 1 && c != A.a curr += (- c + A.a) % A.mod @@ -165,7 +165,7 @@ function Base.iterate(A::PrimesSet{fmpz}) end end - curr = A.from + curr = A.from c = curr % A.mod if A.mod > 1 && c != A.a curr += (-c + A.a) % A.mod @@ -182,7 +182,7 @@ function Base.iterate(A::PrimesSet{fmpz}) break end end - + if A.to != -1 && curr > A.to return nothing else @@ -248,7 +248,7 @@ end # return p # end # -# curr = A.from +# curr = A.from # c = curr % A.mod # if A.mod > 1 && c != A.a # curr += (- c + A.a) % A.mod @@ -274,7 +274,7 @@ end # return p # end # -# curr = A.from +# curr = A.from # c = curr % A.mod # if A.mod > 1 && c != A.a # curr += (-c + A.a) % A.mod diff --git a/src/Misc/PseudoPolynomial.jl b/src/Misc/PseudoPolynomial.jl index c6d5bff143..f25603f83f 100644 --- a/src/Misc/PseudoPolynomial.jl +++ b/src/Misc/PseudoPolynomial.jl @@ -1,7 +1,7 @@ mutable struct PseudoPoly{S, T} poly::S coeff::T - + function PseudoPoly{S, T}(f::S, A::T) where {S, T} return new{S, T}(f, A) end @@ -209,7 +209,7 @@ function gb(G::Vector{S}, mmod) where {S} r = reduce(r, GG) - + if iszero(polynomial(r)) continue end diff --git a/src/Misc/RatRecon.jl b/src/Misc/RatRecon.jl index 92ea3ecf23..43ba9ed7b2 100644 --- a/src/Misc/RatRecon.jl +++ b/src/Misc/RatRecon.jl @@ -199,7 +199,7 @@ function rational_reconstruction_subres(g::PolyElem{T}, f::PolyElem{T}, bnd::Int elseif !isone(g) return false, l_rt[1], l_rt[2] else - return true, l_rt[1], l_rt[2] + return true, l_rt[1], l_rt[2] end else g = gcd(r_m, t_m) @@ -233,8 +233,8 @@ function rational_reconstruction_mod(g::fmpq_poly, f::fmpq_poly, bnd::Int = -1; rethrow(e) end end - # bound n and a starting p - kp = 10 + # bound n and a starting p + kp = 10 L =[] pp = FlintZZ(1) j = 0 @@ -279,7 +279,7 @@ function _modp_results(g::fmpq_poly,f::fmpq_poly, p::fmpz, M::Int, n::Int, Error gp = Rp(g) fp = Rp(f) fl, nu_p, de_p = rational_reconstruction_subres(gp, fp, -1, ErrorTolerant = ErrorTolerant) - if fl + if fl ut = Rp(inv(leading_coefficient(de_p))) push!(l1, ut*nu_p) push!(l2, ut*de_p) diff --git a/src/Misc/RelFiniteField.jl b/src/Misc/RelFiniteField.jl index a83c4f4bc8..9d75b8ff57 100644 --- a/src/Misc/RelFiniteField.jl +++ b/src/Misc/RelFiniteField.jl @@ -52,7 +52,7 @@ var(F::RelFinField) = F.var prime_field(F::RelFinField; cached::Bool = true) = prime_field(base_field(F), cached = cached) -function defining_polynomial(F::RelFinField{T}) where T +function defining_polynomial(F::RelFinField{T}) where T return F.defining_polynomial::dense_poly_type(T) end @@ -79,7 +79,7 @@ absolute_degree(F::FinField) = degree(F) # ################################################################################ -function Base.deepcopy_internal(x::RelFinFieldElem{S, T}, id::IdDict) where {S, T} +function Base.deepcopy_internal(x::RelFinFieldElem{S, T}, id::IdDict) where {S, T} return RelFinFieldElem{S, T}(x.parent, Base.deepcopy_internal(x.data, id)) end @@ -93,7 +93,7 @@ AbstractAlgebra.promote_rule(::Type{RelFinFieldElem{S, T}}, ::Type{fmpz}) where AbstractAlgebra.promote_rule(::Type{fmpz}, ::Type{RelFinFieldElem{S, T}}) where {S, T} = RelFinFieldElem{S, T} -function AbstractAlgebra.promote_rule(::Type{RelFinFieldElem{RelFinField{S}, T}}, ::Type{V}) where {S, T, V <: Union{fq_nmod, fq, gfp_elem, gfp_fmpz_elem}} +function AbstractAlgebra.promote_rule(::Type{RelFinFieldElem{RelFinField{S}, T}}, ::Type{V}) where {S, T, V <: Union{fq_nmod, fq, gfp_elem, gfp_fmpz_elem}} U = AbstractAlgebra.promote_rule(S, fq_nmod) if U === S return RelFinFieldElem{RelFinField{S}, T} @@ -102,7 +102,7 @@ function AbstractAlgebra.promote_rule(::Type{RelFinFieldElem{RelFinField{S}, T}} end end -function AbstractAlgebra.promote_rule(::Type{V}, ::Type{RelFinFieldElem{RelFinField{S}, T}}) where {S, T, V <: Union{fq_nmod, fq, gfp_elem, gfp_fmpz_elem}} +function AbstractAlgebra.promote_rule(::Type{V}, ::Type{RelFinFieldElem{RelFinField{S}, T}}) where {S, T, V <: Union{fq_nmod, fq, gfp_elem, gfp_fmpz_elem}} U = AbstractAlgebra.promote_rule(S, fq_nmod) if U === S return RelFinFieldElem{RelFinField{S}, T} @@ -115,7 +115,7 @@ function AbstractAlgebra.promote_rule(::Type{RelFinFieldElem{RelFinField{S}, T}} NT = AbstractAlgebra.promote_rule(S, U) if NT === S return RelFinFieldElem{RelFinField{S}, T} - elseif NT === U + elseif NT === U return RelFinFieldElem{RelFinField{U}, V} else return Union{} @@ -139,7 +139,7 @@ iszero(x::RelFinFieldElem) = iszero(x.data) isone(x::RelFinFieldElem) = isone(x.data) isunit(x::RelFinFieldElem) = !iszero(x) -==(x::RelFinFieldElem{S, T}, y::RelFinFieldElem{S, T}) where {S, T} = x.data == y.data +==(x::RelFinFieldElem{S, T}, y::RelFinFieldElem{S, T}) where {S, T} = x.data == y.data coeff(a::RelFinFieldElem, i::Int) = coeff(a.data, i) @@ -175,7 +175,7 @@ function (F::RelFinField{T})(x::S) where {S <: Union{Integer, fmpz}, T} return F(parent(defining_polynomial(F))(x)) end -function (F::RelFinField{T})(x::PolyElem{T}) where T +function (F::RelFinField{T})(x::PolyElem{T}) where T r = mod(x, defining_polynomial(F)) return RelFinFieldElem{typeof(F), typeof(r)}(F, r) end @@ -211,7 +211,7 @@ function (F::RelFinField{T})(x::gfp_fmpz_elem) where T return F(parent(defining_polynomial(F))(y)) end -function (F::RelFinField{T})(x::S) where {S, T} +function (F::RelFinField{T})(x::S) where {S, T} U = AbstractAlgebra.promote_rule(elem_type(F), S) if U == S #I an trying to coerce x to the subfield F! @@ -229,28 +229,28 @@ end function (F::GaloisField)(a::RelFinFieldElem) for i = 1:degree(parent(a))-1 - @assert iszero(coeff(a, i)) + @assert iszero(coeff(a, i)) end return F(coeff(a, 0)) end function (F::GaloisField)(a::fq_nmod) for i = 1:degree(parent(a))-1 - @assert iszero(coeff(a, i)) + @assert iszero(coeff(a, i)) end return F(coeff(a, 0)) end function (F::GaloisFmpzField)(a::RelFinFieldElem) for i = 1:degree(parent(a))-1 - @assert iszero(coeff(a, i)) + @assert iszero(coeff(a, i)) end return F(coeff(a, 0)) end function (F::GaloisFmpzField)(a::fq) for i = 1:degree(parent(a))-1 - @assert iszero(coeff(a, i)) + @assert iszero(coeff(a, i)) end return F(coeff(a, 0)) end @@ -341,7 +341,7 @@ function Base.:(^)(a::RelFinFieldElem, b::Int) b = mul!(b, b, a) return b end -end +end ################################################################################ # @@ -361,7 +361,7 @@ function assure_traces(F::RelFinField{T}) where T res = T[base_field(F)(degree(F))] append!(res, polynomial_to_power_sums(defining_polynomial(F), degree(F)-1)) F.basis_tr = res - return nothing + return nothing end function tr(x::RelFinFieldElem) @@ -397,7 +397,7 @@ function minpoly(a::T, Rx::PolyRing = PolynomialRing(base_field(parent(a)), "x", end end Fx, x = PolynomialRing(F, "x", cached = false) - minp = prod([x - Fx(y) for y in conjs]) + minp = prod([x - Fx(y) for y in conjs]) Fp = base_ring(Rx) coeffs = Vector{elem_type(Fp)}(undef, degree(minp)+1) @@ -450,8 +450,8 @@ function absolute_minpoly(a::T, Rx::PolyRing = PolynomialRing(prime_field(parent end end Fx, x = PolynomialRing(F, "x", cached = false) - minp = prod(typeof(x)[x - Fx(y) for y in conjs]) - + minp = prod(typeof(x)[x - Fx(y) for y in conjs]) + #Now, I need to coerce the polynomial down to a gfp_poly/gfp_fmpz_poly Fp = base_ring(Rx) coeffs = Vector{elem_type(Fp)}(undef, degree(minp)+1) @@ -514,7 +514,7 @@ function absolute_coordinates(x::FinFieldElem) end for i = 1:length(v) v[i] = Fp(coeff(x, i-1)) - end + end return v end @@ -610,7 +610,7 @@ function hom(F::FinField, K::RelFinField, a::RelFinFieldElem; check::Bool = true M[i, j] = Kp(v[j]) end end - + aux = zero_matrix(Kp, 1, absolute_degree(F)) aux1 = zero_matrix(Kp, 1, absolute_degree(K)) bF = absolute_basis(F) @@ -624,7 +624,7 @@ function hom(F::FinField, K::RelFinField, a::RelFinFieldElem; check::Bool = true mul!(aux1, aux, M) pol = sum(aux1[1, i]*bK[i] for i = 1:absolute_degree(K)) return pol - end + end function preimg(x::FinFieldElem) @assert parent(x) == K diff --git a/src/Misc/ResidueRingPoly.jl b/src/Misc/ResidueRingPoly.jl index 395a2fdcd1..55441a7d17 100644 --- a/src/Misc/ResidueRingPoly.jl +++ b/src/Misc/ResidueRingPoly.jl @@ -1,7 +1,7 @@ import Nemo.characteristic, Nemo.gen, Nemo.size export gen, characteristic, size, elem_to_mat_row!, rand -function gen(R::Union{Generic.ResRing{T},Generic.ResField{T}}) where T<:PolyElem +function gen(R::Union{Generic.ResRing{T},Generic.ResField{T}}) where T<:PolyElem return R(gen(base_ring(R))) end @@ -9,8 +9,8 @@ function gen(R::Union{Generic.ResRing{fq_nmod_poly},Generic.ResField{fq_nmod_pol return R(gen(base_ring(R))) ## and I don't know why end -function gen(R::Union{Generic.ResRing{nmod_poly},Generic.ResField{nmod_poly}}) - return R(gen(base_ring(R))) +function gen(R::Union{Generic.ResRing{nmod_poly},Generic.ResField{nmod_poly}}) + return R(gen(base_ring(R))) end function characteristic(R::Union{Generic.ResRing{Nemo.fmpz},Generic.ResField{Nemo.fmpz}}) @@ -68,7 +68,7 @@ end ################################################# # in triplicate.... and probably cases missing... -function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{T}) where T <: PolyElem +function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{T}) where T <: PolyElem z = zero(parent(M[1,1])) for j=0:degree(a.data) M[i,j+1] = coeff(a.data, j) @@ -77,7 +77,7 @@ function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{T}) where T <: PolyElem M[i,j] = z end end -function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{fq_poly}) +function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{fq_poly}) z = zero(parent(M[1,1])) for j=0:degree(a.data) M[i,j+1] = coeff(a.data, j) @@ -86,7 +86,7 @@ function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{fq_poly}) M[i,j] = z end end -function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{fq_nmod_poly}) +function elem_to_mat_row!(M::MatElem, i::Int, a::ResElem{fq_nmod_poly}) z = zero(parent(M[1,1])) for j=0:degree(a.data) M[i,j+1] = coeff(a.data, j) @@ -162,7 +162,7 @@ function gens(R::Union{Generic.ResRing{T},Generic.ResField{T}}) where T<:PolyEle return r end -function gens(R::Union{Generic.ResRing{nmod_poly},Generic.ResField{nmod_poly}}) +function gens(R::Union{Generic.ResRing{nmod_poly},Generic.ResField{nmod_poly}}) g = gen(R) r = Vector{typeof(g)}() push!(r, one(R)) diff --git a/src/Misc/Series.jl b/src/Misc/Series.jl index 1b32890f6b..6bddd2c362 100644 --- a/src/Misc/Series.jl +++ b/src/Misc/Series.jl @@ -18,15 +18,15 @@ function Nemo.integral(f::RelSeriesElem{T}) where T setcoeff!(g, i, divexact(c, i+v+1)) end end - Nemo.renormalize!(g) + Nemo.renormalize!(g) return g end -function *(f::PolyElem{<:SeriesElem{qadic}}, g::PolyElem{<:SeriesElem{qadic}}) +function *(f::PolyElem{<:SeriesElem{qadic}}, g::PolyElem{<:SeriesElem{qadic}}) if degree(f) > 2 && degree(g) > 2 fg = mymul_ks(f, g) # @hassert :AbsFact 2 fg == Nemo.mul_classical(f, g) -# This cannot be asserted unfortunately: mymul_ks works in the +# This cannot be asserted unfortunately: mymul_ks works in the # capped abs. prec world, while mul_classical does not: # f = t*((p+O(p^2) + O(s))), then in the classical world # f^2 = t^2*p^2+O(p^3), while in the capped world we get 0 @@ -38,12 +38,12 @@ function *(f::PolyElem{<:SeriesElem{qadic}}, g::PolyElem{<:SeriesElem{qadic}}) end #= -function *(f::RelSeriesElem{qadic}, g::RelSeriesElem{qadic}) +function *(f::RelSeriesElem{qadic}, g::RelSeriesElem{qadic}) return mymul_ks(f, g) if pol_length(f) > 2 && pol_length(g) > 2 fg = mymul_ks(f, g) # @hassert :AbsFact 2 fg == Nemo.mul_classical(f, g) -# This cannot be asserted unfortunately: mymul_ks works in the +# This cannot be asserted unfortunately: mymul_ks works in the # capped abs. prec world, while mul_classical does not: # f = t*((p+O(p^2) + O(s))), then in the classical world # f^2 = t^2*p^2+O(p^3), while in the capped world we get 0 @@ -120,7 +120,7 @@ function mymul_ks(f::SeriesElem{qadic}, g::SeriesElem{qadic}) end end end - + G = Hecke.Globals.Zx() fit!(G, 1+rg*(2*h-1)) for j=0:rg-1 @@ -248,7 +248,7 @@ function mymul_ks(f::PolyElem{<:SeriesElem{qadic}}, g::PolyElem{<:SeriesElem{qad end -function Nemo.canonical_unit(a::SeriesElem) +function Nemo.canonical_unit(a::SeriesElem) iszero(a) && return one(parent(a)) v = valuation(a) v == 0 && return a diff --git a/src/Misc/UnitsModM.jl b/src/Misc/UnitsModM.jl index 97e4122ad9..c8e38b7910 100644 --- a/src/Misc/UnitsModM.jl +++ b/src/Misc/UnitsModM.jl @@ -666,10 +666,10 @@ function _unit_grp_residue_field_mod_n(p::Int, n::Int) else return mod(inv*disc_log_bs_gs(w, y, npart), k) end - end - end + end + end return Int(g.data), k, disc_log - + end unit_group(A::Nemo.FmpzModRing) = UnitGroup(A) @@ -700,7 +700,7 @@ function Base.iterate(R::GaloisField, st::UInt) if st == R.n - 1 return nothing end - + return R(st + 1), st + 1 end diff --git a/src/Misc/acb_root_ctx.jl b/src/Misc/acb_root_ctx.jl index 98dc4ff1f3..f4f68bc2c6 100644 --- a/src/Misc/acb_root_ctx.jl +++ b/src/Misc/acb_root_ctx.jl @@ -102,8 +102,8 @@ function refine(x::acb_root_ctx, target_prec::Int = 2*precision(x)) end @assert j == s nothing -end - +end + function _evaluate(x::fmpq_poly, y::acb) z = parent(y)(0) for i in 0:degree(x) @@ -123,7 +123,7 @@ end # are smaller then 2^(-abs_tol). function _validate_size_of_zeros(roots::Ptr{acb_struct}, deg::Int, abs_tol::Int) ok = true - if abs_tol < 0 + if abs_tol < 0 return true end @@ -142,7 +142,7 @@ function _validate_size_of_zeros(roots::Ptr{acb_struct}, deg::Int, abs_tol::Int) break end end - if !ok + if !ok return false end return true @@ -174,7 +174,7 @@ function _refine_roots!(x::Union{fmpq_poly, fmpz_poly}, roots::Ptr{acb_struct}, return res end -# This is the workhorse. +# This is the workhorse. # It computes the roots of x with with radii <= 2^(-abs_tol) # The result will be stored in roots # If have_approx = true, it is assumed that roots contains approximations @@ -193,7 +193,7 @@ function _roots!(roots::Ptr{acb_struct}, x::Union{fmpq_poly, fmpz_poly}, while true in_roots = roots step_max_iter = (max_iter >= 1) ? max_iter : min(max(deg, div(wp, 4)), wp) - y = acb_poly(x, wp) + y = acb_poly(x, wp) if have_approx isolated = ccall((:acb_poly_find_roots, libarb), Int, @@ -210,13 +210,13 @@ function _roots!(roots::Ptr{acb_struct}, x::Union{fmpq_poly, fmpz_poly}, continue end have_approx = true - + if isolated == deg have_approx = true ok = _validate_size_of_zeros(roots, deg, abs_tol) real_ok = ccall((:acb_poly_validate_real_roots, libarb), Bool, (Ptr{acb_struct}, Ref{acb_poly}, Int), roots, y, wp) - + if !real_ok ok = false else diff --git a/src/Misc/arf.jl b/src/Misc/arf.jl index 27a60bf69b..2ba9726016 100644 --- a/src/Misc/arf.jl +++ b/src/Misc/arf.jl @@ -52,7 +52,7 @@ const ArfFieldID = IdDict() mutable struct ArfField <: Field prec::Int rndmode::Cint - + function ArfField(p::Int = 256, r::Cint = Cint(4)) try return ArfFieldID[p,r]::ArfField @@ -77,7 +77,7 @@ mutable struct arf finalizer(z, _arf_clear_fn) return z end - + function arf(i::Int) z = new() ccall((:arf_init, libarb), Nothing, (Ref{arf}, ), z) @@ -449,7 +449,7 @@ function -(x::arf, y::fmpz) end -(x::fmpz, y::arf) = -(y - x) - + function /(x::arf, y::arf) check_parent(x,y) z = parent(x)() diff --git a/src/Misc/fmpr.jl b/src/Misc/fmpr.jl index 83e924c645..2aa48cc1af 100644 --- a/src/Misc/fmpr.jl +++ b/src/Misc/fmpr.jl @@ -30,7 +30,7 @@ end function _fmpr_clear_fn(x::fmpr) ccall((:fmpr_clear, libarb), Nothing, (Ref{fmpr}, ), x) end - + function fmpq(x::fmpr) z = fmpq() ccall((:fmpr_get_fmpq, libarb), Nothing, (Ref{fmpq}, Ref{fmpr}), z, x) @@ -64,7 +64,7 @@ function show(io::IO, x::cfrac) end print(io, "]") end - + # THIS LEAKS MEMORY function cfrac(x::fmpq, y::Int) diff --git a/src/Misc/nmod_poly.jl b/src/Misc/nmod_poly.jl index 8990d4fda4..f0934a5f5b 100644 --- a/src/Misc/nmod_poly.jl +++ b/src/Misc/nmod_poly.jl @@ -20,7 +20,7 @@ function resultant_ideal(f::PolyElem{T}, g::PolyElem{T}) where T <: ResElem{S} w Rt = parent(f) R = base_ring(Rt) m = fmpz(modulus(R)) - + #easy = isprime_power(m) #if easy # return resultant_ideal_pp(f,g) @@ -749,7 +749,7 @@ function _rresx_sircana(f::PolyElem{T}, g::PolyElem{T}) where T <: ResElem{S} wh end # f = U*f_in + V*g_in # g = u*f_in + v*g_in - # r = u_ * f + v_ * g + # r = u_ * f + v_ * g return res, (u_*U + v_*u), (u_*V + v_*v) end q, f = divrem(f, g) @@ -1345,7 +1345,7 @@ end @doc Markdown.doc""" compose_mod(x::nmod_poly, y::nmod_poly, z::nmod_poly) -> nmod_poly - + Compute $x(y)$ mod $z$. """ function compose_mod(x::nmod_poly, y::nmod_poly, z::nmod_poly) @@ -1369,7 +1369,7 @@ end @doc Markdown.doc""" taylor_shift(x::nmod_poly, c::UInt) -> nmod_poly - + Compute $x(t-c)$. """ function taylor_shift(x::nmod_poly, c::UInt) @@ -1426,7 +1426,7 @@ function isprimitive(f::nmod_poly) for i = 1:degree(f) n = gcd(n, coeff(f, i)) if isone(n) - return true, R(n) + return true, R(n) end end return isone(n), R(n) @@ -1504,7 +1504,7 @@ function _coprimality_test(f::T, g::T, h::T) where T <: Union{nmod_poly, fmpz_mo if isunit(c) for i = degree(f):-1:0 cfi = coeff(f, i) - if isnilpotent(cfi) + if isnilpotent(cfi) continue end if isunit(cfi) @@ -1531,7 +1531,7 @@ function _coprimality_test(f::T, g::T, h::T) where T <: Union{nmod_poly, fmpz_mo if !must_split && isunit(c1) for i = degree(g):-1:0 cgi = coeff(g, i) - if isnilpotent(cgi) + if isnilpotent(cgi) continue end if isunit(cgi) @@ -1588,7 +1588,7 @@ function _coprimality_test(f::T, g::T, h::T) where T <: Union{nmod_poly, fmpz_mo h1 = Rx(lift(Zx, h)) if !_coprimality_test(f1, g1, h1) return false - end + end end return true end diff --git a/src/Misc/toHecke.jl b/src/Misc/toHecke.jl index 4af8150969..220bea27e7 100644 --- a/src/Misc/toHecke.jl +++ b/src/Misc/toHecke.jl @@ -14,7 +14,7 @@ function to_hecke(f::IOStream, a::Dict{T, S}; name::String="R") where {T, S} end -function to_hecke(s::String, a::Dict; name::String="R", mode::String ="w") +function to_hecke(s::String, a::Dict; name::String="R", mode::String ="w") f = open(s, mode) to_hecke(f, a, name = name) close(f) diff --git a/src/Misc/toMagma.jl b/src/Misc/toMagma.jl index edadd4f3a9..5a13dc4cb6 100644 --- a/src/Misc/toMagma.jl +++ b/src/Misc/toMagma.jl @@ -30,14 +30,14 @@ function to_magma(f::IOStream, t::Tuple) print(f, ">\n") end end -end +end function to_magma(s::String, a::Vector{T}; name::String="R", mode::String ="w") where T f = open(s, mode) to_magma(f, a, name = name) close(f) end - + ################################################################################ # fmpz_mat -> magma file @@ -73,7 +73,7 @@ end function to_magma(io::IOStream, A::SMat; name = "A") println(io, name, " := SparseMatrix(Integers(), ", nrows(A), ", ", ncols(A), ", [") for i = 1:nrows(A) - for xx = 1:length(A.rows[i].pos) + for xx = 1:length(A.rows[i].pos) print(io, "<", i, ", ", A.rows[i].pos[xx], ", ", A.rows[i].values[xx], ">") if xx < length(A.rows[i].pos) || i nffactor(k, f); #= -from +from https://www.math.u-bordeaux.fr/~kbelabas/research/vanhoeij.pdf p 26, polys h_1, ..., h_10 (so far) diff --git a/src/ModAlgAss/MeatAxe.jl b/src/ModAlgAss/MeatAxe.jl index e4988d3443..90b8d3521f 100644 --- a/src/ModAlgAss/MeatAxe.jl +++ b/src/ModAlgAss/MeatAxe.jl @@ -57,7 +57,7 @@ function cleanvect!(M::T, v::T) where T if !iszero(c) w[1,k] -= mult * c end - end + end end return v end @@ -130,13 +130,13 @@ function closure(C::T, G::Vector{T}) where {T} res = cleanvect!(C, w*G[j]) # cleanvect(C, w*G[j]) but we # can do it inplace since w*G[j] is fresh if !iszero(res) - C = vcat(C, res) + C = vcat(C, res) if nrows(C) == nc i = ncols(C)+1 break end - end - end + end + end i+=1 end @@ -160,7 +160,7 @@ function closure(C::T, G::Vector{T}) where {T} else r = rref!(C) end - + if r != nrows(C) C = sub(C, 1:r, 1:ncols(C)) end @@ -187,15 +187,15 @@ function clean_and_quotient(M::T, N::T, pivotindex::Set{Int}) where {T} N[i,s]-=coeff[i,j]*M[j,s] end end - end + end vec= zero_matrix(base_ring(M), nrows(N), ncols(M)-length(pivotindex)) - for i=1:nrows(N) + for i=1:nrows(N) pos=0 for s=1:ncols(M) if !(s in pivotindex) pos+=1 vec[i,pos]=N[i,s] - end + end end end return coeff, vec @@ -217,9 +217,9 @@ function clean_and_quotient_quo(M::T, N::T, pivotindex::Set{Int}) where {T} N[i,s] -= r*M[j,s] end end - end + end vec = zero_matrix(base_ring(M), nrows(N), ncols(M)-length(pivotindex)) - for i=1:nrows(N) + for i=1:nrows(N) pos=0 for s=1:ncols(M) if !(s in pivotindex) @@ -678,7 +678,7 @@ function eigenspace_as_matrix(M::MatElem{T}, lambda::T) where T <: FieldElem return view(res, 1:d, 1:ncols(res)) end - + function _relations_dim_1(M::ModAlgAss{S, T, V}, N::ModAlgAss{S, T, V}) where {S, T, V} @assert M.isirreducible == 1 @assert dimension(M) == 1 @@ -780,7 +780,7 @@ function irreducible_submodules(N::ModAlgAss{S, T, V}, M::ModAlgAss{S, T, V}) wh if a == 1 return T[closure(kern, N.action)] end - end + end vects = T[sub(kern, i:i, 1:N.dimension) for i=1:a] if dimension(M) == 1 return _submodules_direct_sum_dim_1(vects, N) @@ -821,7 +821,7 @@ function _all_combinations(M::MatElem{T}) where T end res[ind] = m * M ind += 1 - end + end return res end @@ -961,13 +961,13 @@ end @doc Markdown.doc""" minimal_submodules(M::ModAlgAss) - + Given a Fq[G]-module $M$, it returns all the minimal submodules of $M$. """ function minimal_submodules(M::ModAlgAss{S, T, V}, dim::Int=M.dimension+1, lf = Tuple{ModAlgAss{S, T, V}, Int}[]) where {S, T, V} return T[x[1] for x in _minimal_submodules(M, dim, lf)] end - + @doc Markdown.doc""" maximal_submodules(M::ModAlgAss) diff --git a/src/ModAlgAss/ModAlgAss.jl b/src/ModAlgAss/ModAlgAss.jl index ea694a4ea4..cb3d7bfe9e 100644 --- a/src/ModAlgAss/ModAlgAss.jl +++ b/src/ModAlgAss/ModAlgAss.jl @@ -10,7 +10,7 @@ mutable struct ModAlgAss{S, T, V} algebra::AlgAss{V} action_of_gens::Vector{T} action_of_basis::Vector{T} - + function ModAlgAss{S, T}(action::Vector{T}) where {S, T} z = new{S, T, elem_type(S)}() z.action = action @@ -19,7 +19,7 @@ mutable struct ModAlgAss{S, T, V} if z.dimension == 1 z.isirreducible = 1 z.dimension_splitting_field = 1 - else + else z.isirreducible = 0 z.dimension_splitting_field = 0 end diff --git a/src/NumField/Field.jl b/src/NumField/Field.jl index facb171b07..f40e147408 100644 --- a/src/NumField/Field.jl +++ b/src/NumField/Field.jl @@ -330,8 +330,8 @@ end @doc doc""" absolute_basis(K::NumField) -> Vector{NumFieldElem} -Returns an array of elements that form a basis of $K$ (as a vector space) -over the rationals. +Returns an array of elements that form a basis of $K$ (as a vector space) +over the rationals. """ absolute_basis(::NumField) diff --git a/src/NumField/NfAbs.jl b/src/NumField/NfAbs.jl index c1981a7a18..f335c89b86 100644 --- a/src/NumField/NfAbs.jl +++ b/src/NumField/NfAbs.jl @@ -1,13 +1,13 @@ -import Nemo.sub!, Base.gcd +import Nemo.sub!, Base.gcd export induce_rational_reconstruction, induce_crt, root, roots, ismonic, radical_extension, isradical_extension, - iskummer_extension, cyclotomic_field, wildanger_field, + iskummer_extension, cyclotomic_field, wildanger_field, compositum -add_verbose_scope(:PolyFactor) -add_assert_scope(:PolyFactor) -add_verbose_scope(:CompactPresentation) -add_assert_scope(:CompactPresentation) +add_verbose_scope(:PolyFactor) +add_assert_scope(:PolyFactor) +add_verbose_scope(:CompactPresentation) +add_assert_scope(:CompactPresentation) if Int==Int32 global const p_start = next_prime(2^30) diff --git a/src/NumField/NfAbs/CompactRepresentation.jl b/src/NumField/NfAbs/CompactRepresentation.jl index 9092f21691..a1f79d7c9c 100644 --- a/src/NumField/NfAbs/CompactRepresentation.jl +++ b/src/NumField/NfAbs/CompactRepresentation.jl @@ -14,7 +14,7 @@ function compact_presentation(a::FacElem{nf_elem, AnticNumberField}, nn::Int = 2 if isempty(a.fac) return a end - + if typeof(decom) == Bool ZK = lll(maximal_order(K)) de::Dict{NfOrdIdl, fmpz} = factor_coprime(a, IdealSet(ZK), refine = true) @@ -60,7 +60,7 @@ function compact_presentation(a::FacElem{nf_elem, AnticNumberField}, nn::Int = 2 if haskey(cached_red, p) Dp = cached_red[p] if haskey(Dp, e_p) - Ap, ap = Dp[e_p] + Ap, ap = Dp[e_p] else Ap, ap = power_reduce(p, fmpz(e_p)) Dp[e_p] = (Ap, ap) @@ -292,7 +292,7 @@ function evaluate_mod(a::FacElem{nf_elem, AnticNumberField}, B::NfOrdFracIdl) ZK = order(B) dB = denominator(B)#*denominator(basis_matrix(ZK, copy = false)) - + @hassert :CompactPresentation 1 factored_norm(B) == abs(factored_norm(a)) @hassert :CompactPresentation 2 B == ideal(order(B), a) @@ -438,7 +438,7 @@ function _ispower(a::FacElem{nf_elem, AnticNumberField}, n::Int; with_roots_unit end df = FacElem(d) @hassert :CompactPresentation 2 evaluate(df^n*b *inv(a))== 1 - + den = denominator(b, ZK) fl, den1 = ispower(den, n) if fl diff --git a/src/NumField/NfAbs/ConjugatesNS.jl b/src/NumField/NfAbs/ConjugatesNS.jl index cfb679ccfe..2617e6ecbd 100644 --- a/src/NumField/NfAbs/ConjugatesNS.jl +++ b/src/NumField/NfAbs/ConjugatesNS.jl @@ -165,7 +165,7 @@ function _is_complex_conj(v::Vector, w::Vector, pos::Vector, roots::Vector) elseif v[i] != w[i] return false end - i += 1 + i += 1 end return true end @@ -215,7 +215,7 @@ function _evaluate(f::fmpq_mpoly, vals::Vector{acb}) end mul!(t, t, powers[j][exp]) #t = t*powers[j][exp] - end + end push!(r, c*t) j = i = i + 1 while iseven(j) && length(r) > 1 diff --git a/src/NumField/NfAbs/Elem.jl b/src/NumField/NfAbs/Elem.jl index a7d8020287..4a5f5b37e4 100644 --- a/src/NumField/NfAbs/Elem.jl +++ b/src/NumField/NfAbs/Elem.jl @@ -501,14 +501,14 @@ function factor_trager(f::PolyElem{nf_elem}) end @vprint :PolyFactor 2 "need to shift by $k, now the norm\n" - if any(x -> denominator(x) > 1, coefficients(g)) || + if any(x -> denominator(x) > 1, coefficients(g)) || !isdefining_polynomial_nice(K) @vtime :PolyFactor 2 N = Hecke.Globals.Qx(norm(g)) else @vtime :PolyFactor 2 N = norm_mod(g, Zx) @hassert :PolyFactor 1 N == Zx(norm(g)) end - + while isconstant(N) || !issquarefree(N) error("should not happen") k = k + 1 diff --git a/src/NumField/NfAbs/MPolyAbsFact.jl b/src/NumField/NfAbs/MPolyAbsFact.jl index ff937fe199..f94b497afc 100644 --- a/src/NumField/NfAbs/MPolyAbsFact.jl +++ b/src/NumField/NfAbs/MPolyAbsFact.jl @@ -51,7 +51,7 @@ end in F_p[[t]][x] a RootCtx for poly in F_p[[t]][x] to find roots in F_q[[t]] Done. - + See what Dan did in this case. =# @@ -183,11 +183,11 @@ end function lift(C::HenselCtxFqRelSeries{<:SeriesElem}) St = parent(C.lf[1]) S = base_ring(C.lf[1]) - + C.lf[1] pr = precision(coeff(C.lf[1], 0)) N2 = 2*pr - + S.prec_max = N2+1 i = length(C.lf) @@ -207,7 +207,7 @@ function lift(C::HenselCtxFqRelSeries{<:SeriesElem}) @assert ismonic(C.lf[i]) end @assert ismonic(f) - + #formulae and names from the Flint doc h = C.lf[j] g = C.lf[j-1] @@ -219,12 +219,12 @@ function lift(C::HenselCtxFqRelSeries{<:SeriesElem}) set_precision!(b, N2) fgh = shift_coeff_right(f-g*h, pr) - + G = shift_coeff_left(rem(fgh*b, g), pr)+g H = shift_coeff_left(rem(fgh*a, h), pr)+h - + t = shift_coeff_right(1-a*G-b*H, pr) - + B = shift_coeff_left(rem(t*b, g), pr)+b A = shift_coeff_left(rem(t*a, h), pr)+a if i < length(C.lf) @@ -258,7 +258,7 @@ function _set_precision!(f::PolyElem{<:SeriesElem{qadic}}, n::Int) end return f end -# TODO: bad names... +# TODO: bad names... function _shift_coeff_left(f::PolyElem{<:SeriesElem{qadic}}, n::Int) g = parent(f)() for i = 0:length(f) @@ -282,7 +282,7 @@ end function _shift_coeff_right(f::PolyElem{<:SeriesElem{qadic}}, n::Int) g = parent(f)() for i = 0:length(f) - @assert all(y -> valuation(polcoeff(coeff(f, i), y)) >= n, 0:pol_length(coeff(f, i))) + @assert all(y -> valuation(polcoeff(coeff(f, i), y)) >= n, 0:pol_length(coeff(f, i))) setcoeff!(g, i, map_coefficients(x -> shift_right(x, n), coeff(f, i), parent = base_ring(f))) end return g @@ -309,7 +309,7 @@ function lift(P::Preinv) P.fi = truncate(P.fi*truncate((parent(f)(2)-f*P.fi), 2*P.n), 2*P.n) P.n *= 2 end -# von zur Gathen: Modern Computer Algebra, p 243: +# von zur Gathen: Modern Computer Algebra, p 243: # 9.1. Division with remainder using Newton iteration function Base.rem(g::PolyElem, P::Preinv) if degree(g) < degree(P.f) @@ -341,10 +341,10 @@ function lift_q(C::HenselCtxFqRelSeries{<:SeriesElem{qadic}}) St = parent(C.lf[1]) S = base_ring(C.lf[1]) Q = base_ring(S) - + pr = precision(coeff(coeff(C.lf[1], 0), 0)) N2 = 2*pr - + setprecision!(Q, N2) i = length(C.lf) @@ -373,7 +373,7 @@ function lift_q(C::HenselCtxFqRelSeries{<:SeriesElem{qadic}}) b = _set_precision(b, N2) fgh = _shift_coeff_right(f-g*h, pr) - + @assert ismonic(g) @assert !iszero(constant_coefficient(g)) @assert ismonic(h) @@ -387,7 +387,7 @@ function lift_q(C::HenselCtxFqRelSeries{<:SeriesElem{qadic}}) @assert ismonic(H) t = _shift_coeff_right(1-a*G-b*H, pr) - + B = _shift_coeff_left(rem(t*b, gi), pr)+b A = _shift_coeff_left(rem(t*a, hi), pr)+a @@ -566,7 +566,7 @@ function root(R::RootCtx, i::Int, j::Int) o = one(parent(R.all_R[1])) R.RP = [[set_precision(o, precision(R.all_R[1])) for x = R.all_R], copy(R.all_R)] end - if length(R.RP) > j + if length(R.RP) > j return (R.RP[j+1][i]) end while length(R.RP) <= j+1 @@ -598,7 +598,7 @@ function roots(f::fmpq_mpoly, p_max::Int=2^15; pr::Int = 2) #f needs to be irreducible over Q and g square-free g = evaluate(ff, [gen(Zx), Zx(0)]) @assert degree(g) == degree(f, 1) - + d = typemax(Int) best_p = p_max pc = 0 @@ -618,7 +618,7 @@ function roots(f::fmpq_mpoly, p_max::Int=2^15; pr::Int = 2) else pc += 1 end - + if e == 1 || pc > 1.5 * degree(g) p = best_p @vprint :AbsFact 1 "using $best_p of degree $d\n" @@ -665,8 +665,8 @@ function combination(RC::RootCtx) n = precision(R[1]) @assert all(x->precision(x) == n, R) - #ps = [[div(x^i % tn, td^i) for i = 1:n] for x = R] - + #ps = [[div(x^i % tn, td^i) for i = 1:n] for x = R] + F = base_ring(Ft) k = degree(F) @@ -681,7 +681,7 @@ function combination(RC::RootCtx) #also: it would make the lifting above trivial (precision 2) #deal: if monic in x of degree n and deg_y(coeff of x^(n-1)) = r, # then for the 1st power sum we get r as a degree bound. In the paper - # r == 1... + # r == 1... # reasoning: sum of second highest terms of factor == second highest # of poly => bound # similar would be for other power sums - if I'd compute them. @@ -730,9 +730,9 @@ function combination(RC::RootCtx) ld = evaluate(map_coefficients(x->F(ZZ(x)), lc), [set_precision(Ft(0), n), set_precision(gen(Ft), n)]) R = R .* ld @assert precision(R[1]) >= n - + mn = matrix([[Fp(coeff(coeff(x^pow, pow*d+j), lk)) for lk = 0:k-1] for x = R]) - + if false && iszero(mn) @vprint :AbsFact 2 "found zero column, disgarding\n" bad += 1 @@ -752,7 +752,7 @@ function combination(RC::RootCtx) ke = kernel(nn) @vprint :AbsFact 2 "current kernel dimension: $(ke[1])\n" - if last_rank == ke[1] + if last_rank == ke[1] bad += 1 if bad > max(2, div(length(R), 2)) pow += 1 @@ -807,14 +807,14 @@ function block_system(a::Vector{T}) where {T} d[a[i]] = [i] end end - return sort(collect(values(d)), lt = (a,b) -> isless(a[1], b[1])) + return sort(collect(values(d)), lt = (a,b) -> isless(a[1], b[1])) end #= bounds: f in Z[x,y], g, h in C[x,y] H(f) = max abs value coeff of f gh = f - then + then H(g) H(h) <= 2^(deg_x(f) + deg_y(g) - 2) ((deg_x(f)+1)(deg_y(f)+1))^(1/2) H(f) =# """ @@ -826,7 +826,7 @@ function field(RC::RootCtx, m::MatElem) bnd = numerator(maximum(abs(x) for x = coefficients(RC.f))) * fmpz(2)^(degree(RC.f, 1) + degree(RC.f, 2)-2) * Hecke.root(fmpz((degree(RC.f, 1)+1)*(degree(RC.f, 2)+1)), 2) - #all coeffs should be bounded by bnd... + #all coeffs should be bounded by bnd... #we have roots, we need to combine roots for each row in m where the entry is pm 1 #the coeffs then live is a number field, meaning that the elem sym functions or @@ -879,7 +879,7 @@ function field(RC::RootCtx, m::MatElem) Qq = QadicField(characteristic(F), k, 1, cached = false)[1] Qqt = PolynomialRing(Qq, cached = false)[1] k, mk = ResidueField(Qq) - + phi = find_morphism(k, F) #avoids embed - which stores the info kt, t = PolynomialRing(k, cached = false) @@ -933,7 +933,7 @@ function field(RC::RootCtx, m::MatElem) llc = coeff(P, 1) P *= inv(llc) - + _lc = evaluate(leading_coefficient(P, 1), [zero(Hecke.Globals.Qx), gen(Hecke.Globals.Qx)]) _lc = Hecke.squarefree_part(_lc) local H, fa @@ -1022,16 +1022,16 @@ function field(RC::RootCtx, m::MatElem) mc(f) = # PolyElem{SeriesElem{Fq}} -> PolyElem{SeriesElem{Qq}} map_coefficients(x->map_coefficients(y->setprecision(preimage(mk, y), 1), x, parent = SQq), f, parent = SQqt) - + HQ = HenselCtxFqRelSeries(HH.f, map(mc, HH.lf), map(mc, HH.cf), HH.n) QqXY, (X, Y) = PolynomialRing(Qq, 2, cached = false) - pr = 1 + pr = 1 while true pr *= 2 - if pr > 800 + if pr > 800 error("too bas") end @vprint :AbsFact 1 "using p-adic precision of $pr\n" @@ -1125,7 +1125,7 @@ end Given an irreducible bivariate polynomial over `Q` compute the absolute factorisation. -Returns two polynomials: +Returns two polynomials: - the (absolutely) irreducible factor over the smallest number field - the co-factor @@ -1138,7 +1138,7 @@ function absolute_bivariate_factorisation(f::fmpq_mpoly) x, y = gens(R) lf = factor(f) - if length(lf.fac) > 1 || any(x->x>1, values(lf.fac)) + if length(lf.fac) > 1 || any(x->x>1, values(lf.fac)) error("poly must be irreducible over Q") end @@ -1169,7 +1169,7 @@ function absolute_bivariate_factorisation(f::fmpq_mpoly) return b, divexact(map_coefficients(k, f, parent = kXY), b) end - s =-1 + s =-1 while true s += 1 @vprint :AbsFact 1 "substitution to $s\n" @@ -1195,7 +1195,7 @@ function absolute_bivariate_factorisation(f::fmpq_mpoly) if nrows(z) == 1 return f, one(parent(f)) end - + @vtime :AbsFact 1 aa = field(r, z) aa !== nothing && break end @@ -1526,7 +1526,7 @@ export factor_absolute #application (for free) -function factor(f::Union{fmpq_mpoly, fmpz_mpoly}, C::AcbField) +function factor(f::Union{fmpq_mpoly, fmpz_mpoly}, C::AcbField) fa = factor_absolute(f) D = Dict{Generic.MPoly{acb}, Int}() Cx, x = PolynomialRing(C, map(String, symbols(parent(f))), cached = false) @@ -1550,7 +1550,7 @@ function factor(f::Union{fmpq_mpoly, fmpz_mpoly}, C::AcbField) return Fac(map_coefficients(C, fa[1], parent = Cx), D) end -function factor(f::Union{fmpq_mpoly, fmpz_mpoly}, R::ArbField) +function factor(f::Union{fmpq_mpoly, fmpz_mpoly}, R::ArbField) fa = factor_absolute(f) D = Dict{Generic.MPoly{arb}, Int}() Rx, x = PolynomialRing(R, map(String, symbols(parent(f))), cached = false) @@ -1600,7 +1600,7 @@ end example: Qxy, (y, x) = PolynomialRing(QQ, ["y", "x"]) -include("/home/fieker/Downloads/n60s3.m"); +include("/home/fieker/Downloads/n60s3.m"); #from https://www.math.univ-toulouse.fr/~cheze/n60s3.m r = absolute_bivariate_factorisation(P) diff --git a/src/NumField/NfAbs/MPolyGcd.jl b/src/NumField/NfAbs/MPolyGcd.jl index b06eea7fa3..2c4afebeb0 100644 --- a/src/NumField/NfAbs/MPolyGcd.jl +++ b/src/NumField/NfAbs/MPolyGcd.jl @@ -116,7 +116,7 @@ end function data_assure(R::RecoCtx) R.new_data || return - + R.L = lll(basis_matrix(R.p1, R.f, R.k)) if isdefined(R, :LI) #to keep stucture consistent R.LI, R.d = pseudo_inv(R.L) @@ -201,7 +201,7 @@ function Hecke.rational_reconstruction(a::nf_elem, R::RecoCtx; integral::Bool = K = parent(a) d = Nemo.elem_from_mat_row(K, sub(L, 1:1, 1:n), 1, fmpz(1)) n = Nemo.elem_from_mat_row(K, sub(L, 1:1, n+1:2*n), 1, fmpz(1)) - if split + if split return true, n, d else return true, n//d @@ -282,7 +282,7 @@ function _gcd(f::Hecke.Generic.MPoly{nf_elem}, g::Hecke.Generic.MPoly{nf_elem}, if isempty(me) continue end - + @vtime :MPolyGcd 3 fp = Hecke.modular_proj(f, me) @vtime :MPolyGcd 3 gp = Hecke.modular_proj(g, me) glp = Hecke.modular_proj(gl, me) @@ -328,7 +328,7 @@ function _gcd(f::Hecke.Generic.MPoly{nf_elem}, g::Hecke.Generic.MPoly{nf_elem}, d *= p stable -= 1 end - if fl && stable <= 0 + if fl && stable <= 0 if divides(f, gd)[1] && divides(g, gd)[1] # @show "gcd stop", nbits(d), length(gd), gd gd*=inv(gl) @@ -411,7 +411,7 @@ function Hecke.induce_crt(a::Hecke.Generic.MPoly{nf_elem}, p::fmpz, b::Hecke.Gen end end return finish(c), pq -end +end function Hecke.induce_crt(a::fmpz_mat, p::fmpz, b::fmpz_mat, q::fmpz, signed::Bool = false) pi = invmod(p, q) @@ -431,7 +431,7 @@ function Hecke.induce_crt(a::fmpz_mat, p::fmpz, b::fmpz_mat, q::fmpz, signed::Bo end end return c, pq -end +end function Hecke.modular_proj(f::Generic.MPoly{nf_elem}, me::Hecke.modular_env) if !isdefined(me, :Kxy) diff --git a/src/NumField/NfAbs/NfAbs.jl b/src/NumField/NfAbs/NfAbs.jl index 116a759b79..d7afabbfc6 100644 --- a/src/NumField/NfAbs/NfAbs.jl +++ b/src/NumField/NfAbs/NfAbs.jl @@ -416,7 +416,7 @@ function normal_basis(K::AnticNumberField) break end end - + return _normal_basis_generator(K, p) end @@ -975,7 +975,7 @@ function islinearly_disjoint(K1::AnticNumberField, K2::AnticNumberField) f = change_base_ring(K2, K1.pol) return isirreducible(f) end - + ################################################################################ # # more general coercion, field lattice @@ -1116,7 +1116,7 @@ end @doc Markdown.doc""" embed(f::Map{<:NumField, <:NumField}) - + Registers `f` as a canonical embedding from the domain into the co-domain. Once this embedding is registered, it cannot be changed. """ @@ -1161,7 +1161,7 @@ end @doc Markdown.doc""" hasembedding(F::NumField, G::NumField) -> Bool - + Checks if an embedding from $F$ into $G$ is already known. """ function hasembedding(F::NumField, G::NumField) @@ -1213,7 +1213,7 @@ function find_all_super(A::NumField, filter::Function = x->true) return all_s end -#finds a common super field for A and B, using the weak-refs +#finds a common super field for A and B, using the weak-refs # in special -> :sub_of function common_super(A::NumField, B::NumField) A === B && return A @@ -1263,8 +1263,8 @@ end @doc Markdown.doc""" embedding(k::NumField, K::NumField) -> Map - -Assuming $k$ is known to be a subfield of $K$, return the embedding map. + +Assuming $k$ is known to be a subfield of $K$, return the embedding map. """ function embedding(k::NumField, K::NumField) if issimple(k) @@ -1278,7 +1278,7 @@ function force_coerce_cyclo(a::AnticNumberField, b::nf_elem, throw_error::Type{V # Base.show_backtrace(stdout, backtrace()) fa = get_special(a, :cyclo) fb = get_special(parent(b), :cyclo) - + if fa % fb == 0 #coerce up, includes fa == fb #so a = p(z) for p in Q(x) and z = gen(parent(b)) q = divexact(fa, fb) @@ -1323,7 +1323,7 @@ function force_coerce_cyclo(a::AnticNumberField, b::nf_elem, throw_error::Type{V q = divexact(fb, fa) cb = [i for i=1:fb if gcd(i, fb) == 1] # the "conjugates" in the large field - ca = [[i for i = cb if i % fa == j] for j=1:fa if gcd(j, fa) == 1] #broken into blocks + ca = [[i for i = cb if i % fa == j] for j=1:fa if gcd(j, fa) == 1] #broken into blocks #in general one could test first if the evaluation is constant on a block #equivalently, if the element is Galois invariant under the fix group of a. diff --git a/src/NumField/NfAbs/NonSimple.jl b/src/NumField/NfAbs/NonSimple.jl index db062e318a..9a81b81070 100644 --- a/src/NumField/NfAbs/NonSimple.jl +++ b/src/NumField/NfAbs/NonSimple.jl @@ -761,7 +761,7 @@ end #end # TODO: - Preallocate the exps array -# - Do we still need this? +# - Do we still need this? function msubst(f::fmpq_mpoly, v::Vector{T}) where {T} n = length(v) @assert n == nvars(parent(f)) diff --git a/src/NumField/NfAbs/NormRelation/Clgp.jl b/src/NumField/NfAbs/NormRelation/Clgp.jl index 35e2d6659b..c87e034898 100644 --- a/src/NumField/NfAbs/NormRelation/Clgp.jl +++ b/src/NumField/NfAbs/NormRelation/Clgp.jl @@ -15,7 +15,7 @@ function get_sunits_from_subfield_data!(c::Hecke.ClassGrpCtx, UZK::Hecke.UnitGrp @vprint :NormRelation 1 "Using the compact presentation\n" _add_sunits_from_brauer_relation!(c, UZK, N, compact = onlyp) end -end +end function class_group_via_brauer(O::NfOrd, N::NormRelation; compact::Bool = true) K = N.K diff --git a/src/NumField/NfAbs/NormRelation/SUnits.jl b/src/NumField/NfAbs/NormRelation/SUnits.jl index 19ebc7e462..800f16636c 100644 --- a/src/NumField/NfAbs/NormRelation/SUnits.jl +++ b/src/NumField/NfAbs/NormRelation/SUnits.jl @@ -222,7 +222,7 @@ function _add_sunits_from_brauer_relation!(c, UZK, N; invariant::Bool = false, c end end =# - has_full_rk = Hecke.has_full_rank(UZK) + has_full_rk = Hecke.has_full_rank(UZK) @vtime :NormRelation 4 ff = Hecke.add_unit!(UZK, img_u) if !has_full_rk && !ff push!(add_unit_later, img_u) @@ -463,7 +463,7 @@ function __sunit_group_fac_elem_quo_via_brauer(N::NormRelation, S::Vector{NfOrdI UZK.finished = true end - if saturate_units && !UZK.finished + if saturate_units && !UZK.finished for (p, e) in factor(index(N)) @vprint :NormRelation 1 "Saturating at $p \n" b = Hecke.saturate!(UZK, Int(p), 3.5, easy_root = true, use_LLL = true) @@ -551,11 +551,11 @@ function __sunit_group_fac_elem_quo_via_brauer(N::NormRelation, S::Vector{NfOrdI function exp(a::GrpAbFinGenElem) @assert parent(a) == res_group z = prod(units[i]^a[i] for i = 1:length(units)) - if !isempty(sunitsmodunits) + if !isempty(sunitsmodunits) zz = prod(sunitsmodunits[i]^a[length(units) + i] for i in 1:length(sunitsmodunits)) mul!(z, z, zz) end - + for (k, v) in z.fac if iszero(v) delete!(z.fac, k) @@ -569,7 +569,7 @@ function __sunit_group_fac_elem_quo_via_brauer(N::NormRelation, S::Vector{NfOrdI disclog = function(a) throw(NotImplemented()) end - + r = Hecke.MapSUnitGrpFacElem() r.valuations = Vector{SRow{fmpz}}(undef, ngens(res_group)) for i = 1:length(units) diff --git a/src/NumField/NfAbs/NormRelation/Setup.jl b/src/NumField/NfAbs/NormRelation/Setup.jl index 9fd3f30ab9..14fe3db548 100644 --- a/src/NumField/NfAbs/NormRelation/Setup.jl +++ b/src/NumField/NfAbs/NormRelation/Setup.jl @@ -5,12 +5,12 @@ ################################################################################ # Example -# +# # julia> f = x^8+8*x^6+64*x^4-192*x^2+576 # x^8+8*x^6+64*x^4-192*x^2+576 -# +# # julia> K, a = number_field(f); -# +# # julia> N = Hecke._norm_relation_setup(K) # Norm relation of # Number field over Rational Field with defining polynomial x^8+8*x^6+64*x^4-192*x^2+576 @@ -22,7 +22,7 @@ # Number field over Rational Field with defining polynomial x^2+6 # Number field over Rational Field with defining polynomial x^2-3 # Number field over Rational Field with defining polynomial x^2-x+1 - + mutable struct NormRelation{T} K::AnticNumberField subfields::Vector{Tuple{AnticNumberField, NfToNfMor}} @@ -136,7 +136,7 @@ function _norm_relation_for_sunits(K::AnticNumberField; small_degree::Bool = tru nonredundant = trues(length(ls)) for i in 1:length(ls) - if !nonredundant[i] + if !nonredundant[i] continue end for j = i+1:length(ls) @@ -215,7 +215,7 @@ function _norm_relation_setup_generic(K::AnticNumberField; small_degree::Bool = nonredundant[i] = true end end - + z = NormRelation{Int}() z.K = K z.isnormal = falses(n) @@ -348,7 +348,7 @@ function induce_action_from_subfield(N::NormRelation, i, s, FB, cache) mk = embedding(N, i) zk = order(s[1]) - + if length(cache) == 0 cache = resize!(cache, length(s)) cached = false @@ -362,7 +362,7 @@ function induce_action_from_subfield(N::NormRelation, i, s, FB, cache) if haskey(N.induced, auto) p = N.induced[auto] else - p = induce(FB, auto) + p = induce(FB, auto) N.induced[auto] = p end end @@ -560,7 +560,7 @@ function Hecke.simplify(c::Hecke.ClassGrpCtx) Hecke._add_unit(U, c.R_rel[i]) end end - for i=1:length(U.units) + for i=1:length(U.units) Hecke.class_group_add_relation(d, U.units[i], SRow(FlintZZ)) end return d, U @@ -655,7 +655,7 @@ function _has_norm_relation_abstract(G::GrpGen, H::Vector{Tuple{GrpGen, GrpGenTo if large_index reverse!(H) end - + QG = AlgGrp(FlintQQ, G) norms_rev = Dict{elem_type(QG), Int}() norms = Vector{elem_type(QG)}(undef, length(H)) @@ -1111,7 +1111,7 @@ function has_coprime_norm_relation(K::AnticNumberField, m::fmpz) for i in 1:n z.embed_cache_triv[i] = Dict{nf_elem, nf_elem}() end - + for i in 1:n F, mF = Hecke.fixed_field1(K, NfToNfMor[mG(f) for f in ls[i][1]]) S, mS = simplify(F, cached = false) diff --git a/src/NumField/NfAbs/PolyFact.jl b/src/NumField/NfAbs/PolyFact.jl index f4528eeee9..f558f565e0 100644 --- a/src/NumField/NfAbs/PolyFact.jl +++ b/src/NumField/NfAbs/PolyFact.jl @@ -173,7 +173,7 @@ end @doc Markdown.doc""" round(::fmpz, a::fmpz, b::fmpz, bi::fmpz) -> fmpz -Computes `round(a//b)` using the pre-inverse of `2b`. +Computes `round(a//b)` using the pre-inverse of `2b`. """ function Base.round(::Type{fmpz}, a::fmpz, b::fmpz, bi::fmpz_preinvn_struct) s = sign(a) @@ -232,7 +232,7 @@ function isprime_nice(K::AnticNumberField, p::Int) end F = GF(p) f = map_coefficients(F, d*K.pol) - if degree(f) < degree(K) + if degree(f) < degree(K) return false end if iszero(discriminant(f)) @@ -646,9 +646,9 @@ function van_hoeij(f::PolyElem{nf_elem}, P::NfOrdIdl; prec_scale = 1) if degree(P) == 1 mD = MapFromFunc(x->coeff(mC(x),0), y->K(lift(y)), K, base_ring(vH.H.f)) - @vtime :PolyFactor 1 C = cld_data(vH.H, up_to, from, mD, vH.pM[1], den*leading_coefficient(f)) + @vtime :PolyFactor 1 C = cld_data(vH.H, up_to, from, mD, vH.pM[1], den*leading_coefficient(f)) else - @vtime :PolyFactor 1 C = cld_data(vH.H, up_to, from, mC, vH.pM[1], den*leading_coefficient(f)) + @vtime :PolyFactor 1 C = cld_data(vH.H, up_to, from, mC, vH.pM[1], den*leading_coefficient(f)) end # In the end, p-adic precision needs to be large enough to @@ -782,7 +782,7 @@ function van_hoeij(f::PolyElem{nf_elem}, P::NfOrdIdl; prec_scale = 1) for v = values(d) #trivial test: if isone(den) && ismonic(f) #don't know what to do for non-monics - a = prod(map(constant_coefficient, factor(vH.H)[v])) + a = prod(map(constant_coefficient, factor(vH.H)[v])) if degree(P) == 1 A = K(reco(order(P)(lift(a)), vH.Ml, vH.pMr)) else diff --git a/src/NumField/NfAbs/Simplify.jl b/src/NumField/NfAbs/Simplify.jl index a1b0f15b2b..17572260f7 100644 --- a/src/NumField/NfAbs/Simplify.jl +++ b/src/NumField/NfAbs/Simplify.jl @@ -99,7 +99,7 @@ end function _simplify(O::NfAbsOrd) K = nf(O) - + B = basis(O, K, copy = false) nrep = min(3, degree(K)) Bnew = elem_type(K)[] @@ -112,7 +112,7 @@ function _simplify(O::NfAbsOrd) end #First, we search for elements that are primitive using block systems in the simple case. B1 = _sieve_primitive_elements(Bnew) - + #Now, we select the one of smallest T2 norm a = primitive_element(K) d = denominator(a, O) @@ -164,7 +164,7 @@ function _sieve_primitive_elements(B::Vector{NfAbsNSElem}) end if _is_primitive_via_block(B[i], rt_all, Fpt) push!(indices, i) - end + end end return B[indices] end diff --git a/src/NumField/NfRel/Conjugates.jl b/src/NumField/NfRel/Conjugates.jl index 0c310af631..ddd89d0776 100644 --- a/src/NumField/NfRel/Conjugates.jl +++ b/src/NumField/NfRel/Conjugates.jl @@ -112,7 +112,7 @@ function infinite_places(L::NfRel{T}) where {T} r_cnt = 1 c_cnt = 1 for (P, rts, r_rts, c_rts) in data - if isreal(P) + if isreal(P) for i in 1:length(r_rts) plcs[r_cnt] = InfPlcNfRel{S, typeof(L)}(L, P, true, i, rts[i], r_cnt) r_cnt += 1 @@ -120,7 +120,7 @@ function infinite_places(L::NfRel{T}) where {T} rr = length(r_rts) for i in 1:length(c_rts) plcs[r + c_cnt] = InfPlcNfRel{S, typeof(L)}(L, P, false, rr + i, rts[rr + i], r + c_cnt) - c_cnt +=1 + c_cnt +=1 end else for i in 1:length(rts) @@ -257,7 +257,7 @@ function conjugates_arb(a::NfRelElem, prec::Int = 64) CC = AcbField(wprec, cached = false) CCy, y = PolynomialRing(CC, cached = false) - + r, s = signature(parent(a)) _r, _s = signature(K) real_cnt = 1 diff --git a/src/NumField/NfRel/NEQ.jl b/src/NumField/NfRel/NEQ.jl index 336fd81464..fba24f7fc4 100644 --- a/src/NumField/NfRel/NEQ.jl +++ b/src/NumField/NfRel/NEQ.jl @@ -23,7 +23,7 @@ function isnorm_fac_elem(K::NfRel{nf_elem}, a::nf_elem) q, mmq = quo(q, [mq(preimage(mC, FB[i]))], false) mq = mq*mmq end - + s = Set(ideal_type(order_type(AnticNumberField))[minimum(mkK, I) for I = S]) #make S relative Galois closed: PS = IdealSet(ZKa) diff --git a/src/NumField/NfRel/NfRel.jl b/src/NumField/NfRel/NfRel.jl index 59ba60d072..f9e3421d71 100644 --- a/src/NumField/NfRel/NfRel.jl +++ b/src/NumField/NfRel/NfRel.jl @@ -754,7 +754,7 @@ rand(rng::AbstractRNG, L::NfRel, B::UnitRange{Int}) = rand(rng, make(L, B)) @doc Markdown.doc""" kummer_generator(K::NfRel{nf_elem}) -> nf_elem -Given an extension $K/k$ which is a cyclic Kummer extension of degree $n$, returns an element $a\in k$ +Given an extension $K/k$ which is a cyclic Kummer extension of degree $n$, returns an element $a\in k$ such that $K = k(\sqrt[n]{a})$. Throws an error if the extension is not a cyclic Kummer extension. """ function kummer_generator(K::NfRel{nf_elem}) diff --git a/src/NumField/NfRel/NfRelNS.jl b/src/NumField/NfRel/NfRelNS.jl index 6b45fe9c65..155387855b 100644 --- a/src/NumField/NfRel/NfRelNS.jl +++ b/src/NumField/NfRel/NfRelNS.jl @@ -130,7 +130,7 @@ function reduce!(a::NfRelNSElem) q, a.data = divrem(a.data, parent(a).pol) return a end - + ################################################################################ # # String I/O @@ -260,7 +260,7 @@ Nemo.divexact(a::NfRelNSElem, b::NfRelNSElem; check::Bool = true) = div(a, b) ################################################################################ #via julia -function Base.:(^)(a::NfRelNSElem{T}, b::Integer) where T +function Base.:(^)(a::NfRelNSElem{T}, b::Integer) where T if b < 0 return inv(a)^(-b) elseif b == 0 @@ -271,7 +271,7 @@ function Base.:(^)(a::NfRelNSElem{T}, b::Integer) where T c = a^(div(b, 2)) mul!(c, c, c) return c - else + else c = a^(b - 1) mul!(c, c, a) return c @@ -289,7 +289,7 @@ function Base.:(^)(a::NfRelNSElem{T}, b::fmpz) where T c = a^(div(b, 2)) mul!(c, c, c) return c - else + else c = a^(b - 1) mul!(c, c, a) return c @@ -366,7 +366,7 @@ function (R::Generic.PolyRing{nf_elem})(f::Generic.MPoly) if f.exps[j, 1] != 0 if c==0 c = j - else + else error("poly is not univariate") end end @@ -467,11 +467,11 @@ function SRow(a::NfRelElem) if !iszero(c) push!(sr.pos, i+1) push!(sr.values, c) - end + end end return sr end - + function minpoly_dense(a::NfRelNSElem) K = parent(a) n = degree(K) @@ -503,7 +503,7 @@ function Base.Matrix(a::SMat) end end return A -end +end function minpoly_sparse(a::NfRelNSElem) K = parent(a) @@ -536,7 +536,7 @@ function minpoly_sparse(a::NfRelNSElem) end return f end - end + end push!(sz.values, k(1)) push!(sz.pos, n+i+1) push!(M, sz) @@ -779,7 +779,7 @@ function basis(K::NfRel) push!(b, b[end]*a) end return b -end +end function (K::NfRelNS)(a::Vector) return dot(a, basis(K)) diff --git a/src/NumField/NfRel/NfRelNSMor.jl b/src/NumField/NfRel/NfRelNSMor.jl index bf8be2d471..69948a444d 100644 --- a/src/NumField/NfRel/NfRelNSMor.jl +++ b/src/NumField/NfRel/NfRelNSMor.jl @@ -189,8 +189,8 @@ end Evaluate the polynomial by substituting in the supplied values in the array `vals` for the corresponding variables with indices given by the array `vars`. The evaluation will succeed if multiplication is defined between elements of the coefficient ring of $a$ and -elements of `vals`. The result will be reduced modulo "mod". If "mod" is a Groebner basis for the ideal -the elements generate. +elements of `vals`. The result will be reduced modulo "mod". If "mod" is a Groebner basis for the ideal +the elements generate. """ function compose_mod(a::S, vars::Vector{Int}, vals::Vector{S}, mod::Vector{S}) where S <:MPolyElem{T} where T <: RingElem unique(vars) != vars && error("Variables not unique") diff --git a/src/NumField/NfRel/Simplify.jl b/src/NumField/NfRel/Simplify.jl index 4231081354..2f22d134dc 100644 --- a/src/NumField/NfRel/Simplify.jl +++ b/src/NumField/NfRel/Simplify.jl @@ -127,7 +127,7 @@ function _find_prime(L::NfRel{nf_elem}) i += 1 end end - + res = candidates[1] for j = 2:n_attempts if candidates[j][2] < res[2] diff --git a/src/NumField/NfRel/absolute_field.jl b/src/NumField/NfRel/absolute_field.jl index 2eb5d71380..2831b3d37e 100644 --- a/src/NumField/NfRel/absolute_field.jl +++ b/src/NumField/NfRel/absolute_field.jl @@ -26,7 +26,7 @@ function absolute_primitive_element(K::NfRelNS) end return a end - + function absolute_primitive_element(K::NfRel) k = base_field(K) gk = absolute_primitive_element(k) @@ -99,11 +99,11 @@ absolute_simple_field(::NumField) function absolute_simple_field(K::AnticNumberField) return K, id_hom(K) end - + function absolute_simple_field(K::NfAbsNS; cached::Bool = true, simplify::Bool = false) return simple_extension(K, cached = cached, simplified = simplify) end - + function absolute_simple_field(K::NumField; cached::Bool = false, simplify::Bool = false) if simplify return simplified_absolute_field(K, cached = cached) @@ -128,8 +128,8 @@ function absolute_simple_field(K::NfRel{nf_elem}; cached::Bool = false, simplify embed(MapFromFunc(x->preimage(h1, x), K, Ka)) return Ka, h1 end - - + + #Trager: p4, Algebraic Factoring and Rational Function Integration function _absolute_field(K::NfRel; cached::Bool = false) f = K.pol @@ -152,15 +152,15 @@ function _absolute_field(K::NfRel; cached::Bool = false) g = compose(f, gen(kx) - l*gen(k)) N = norm(g) end - + Ka, gKa = NumberField(N, "x", cached = cached, check = false) KaT, T = PolynomialRing(Ka, "T", cached = false) - + # map Ka -> K: gen(Ka) -> gen(K)+ k gen(k) - + # gen(k) -> Root(gcd(g, poly(k))) #gcd should be linear: # g in kx = (Q[a])[x]. Want to map x -> gen(Ka), a -> T - + gg = zero(KaT) for i=degree(g):-1:0 auxp = change_base_ring(Ka, Qx(coeff(g, i)), parent = KaT) @@ -168,7 +168,7 @@ function _absolute_field(K::NfRel; cached::Bool = false) add!(gg, gg, auxp) #gg = gg*gKa + auxp end - + q = gcd(gg, change_base_ring(Ka, k.pol, parent = KaT)) @assert degree(q) == 1 al = -constant_coefficient(q)//leading_coefficient(q) diff --git a/src/NumField/NfRel/relative_extension.jl b/src/NumField/NfRel/relative_extension.jl index 59d679712e..1fdf201b13 100644 --- a/src/NumField/NfRel/relative_extension.jl +++ b/src/NumField/NfRel/relative_extension.jl @@ -9,7 +9,7 @@ export relative_simple_extension, isprimitive, isprimitive_over @doc Markdown.doc""" relative_simple_extension(K::NumField, k::NumField) -> NfRel -Given two fields $K\supset k$, it returns $K$ as a simple relative +Given two fields $K\supset k$, it returns $K$ as a simple relative extension $L$ of $k$ and an isomorphism $L \to K$. """ function relative_simple_extension(K::NumField, k::NumField) @@ -102,7 +102,7 @@ end ################################################################################ # -# Relative primitive element +# Relative primitive element # ################################################################################ diff --git a/src/NumField/NonSimpleNumField/Conjugates.jl b/src/NumField/NonSimpleNumField/Conjugates.jl index 74d7379699..1623d067ff 100644 --- a/src/NumField/NonSimpleNumField/Conjugates.jl +++ b/src/NumField/NonSimpleNumField/Conjugates.jl @@ -4,7 +4,7 @@ mutable struct InfPlcNonSimple{S, U} data::Vector{acb} absolute_index::Int isreal::Bool - + function InfPlcNonSimple{S, U}(field::S, base_field_place::U, data::Vector{acb}, absolute_index::Int, isreal::Bool) where {S, U} z = new{S, U}(field, base_field_place, data, absolute_index, isreal) @@ -58,7 +58,7 @@ function infinite_places(L::NfRelNS{T}) where {T} data = _conjugates_data(L, 32) ind = 1 res = Vector{place_type(L)}(undef, r + s) - for (p, rts) in data + for (p, rts) in data res[ind] = S(L, p, rts, ind, ind <= r) ind += 1 end @@ -161,17 +161,17 @@ function __conjugates_data(L::NfRelNS{T}, p::Int) where T ind_real, ind_complex = enumerate_conj_prim_rel(datas) for y in ind_real r_cnt += 1 - res[r_cnt] = (P, acb[datas[j][2][y[j]] for j = 1:length(y)]) + res[r_cnt] = (P, acb[datas[j][2][y[j]] for j = 1:length(y)]) end for y in ind_complex c_cnt += 1 - res[r + c_cnt] = (P, acb[datas[j][2][y[j]] for j = 1:length(y)]) + res[r + c_cnt] = (P, acb[datas[j][2][y[j]] for j = 1:length(y)]) end else it = cartesian_product_iterator([1:length(x[2]) for x in datas], inplace = true) for y in it c_cnt += 1 - res[r + c_cnt] = (P, acb[datas[j][2][y[j]] for j = 1:length(y)]) + res[r + c_cnt] = (P, acb[datas[j][2][y[j]] for j = 1:length(y)]) end end end @@ -246,7 +246,7 @@ function _is_complex_conj_rel(v::Vector{Int}, w::Vector{Int}, pos::Vector, roots elseif v[i] != w[i] return false end - i += 1 + i += 1 end return true end diff --git a/src/NumField/NonSimpleNumField/Field.jl b/src/NumField/NonSimpleNumField/Field.jl index 6d5f30662c..9bbad9dab3 100644 --- a/src/NumField/NonSimpleNumField/Field.jl +++ b/src/NumField/NonSimpleNumField/Field.jl @@ -122,7 +122,7 @@ function _check_consistency(K::NonSimpleNumField) end if !isirreducible(f) return false - end + end end return true end @@ -136,7 +136,7 @@ end @doc Markdown.doc""" component(L::NonSimpleNumField, i::Int) -> SimpleNumField, Map -Given a non-simple extension $L/K$, this function returns the simple number field +Given a non-simple extension $L/K$, this function returns the simple number field corresponding to the $i$-th component of $L$ together with its embedding. """ function component(K::NonSimpleNumField, i::Int) @@ -266,7 +266,7 @@ end @doc Markdown.doc""" simplified_simple_extension(L::NonSimpleNumField) -> SimpleNumField, Map -Given a non-simple extension $L/K$, this function returns an isomorphic simple number field +Given a non-simple extension $L/K$, this function returns an isomorphic simple number field with a "small" defining equation together with the isomorphism. """ function simplified_simple_extension(L::NonSimpleNumField; cached::Bool = true, isabelian::Bool = false) diff --git a/src/NumField/QQ.jl b/src/NumField/QQ.jl index 699c02e001..d47ec44b6a 100644 --- a/src/NumField/QQ.jl +++ b/src/NumField/QQ.jl @@ -103,7 +103,7 @@ gcd(I::ZZIdl, J::ZZIdl) = ZZIdl(gcd(I.gen, J.gen)) gcd(I::ZZIdl, n::T) where T <: Union{fmpz, Int} = ZZIdl(gcd(I.gen, n)) gcd(n::T, I::ZZIdl) where T <: Union{fmpz, Int} = ZZIdl(gcd(I.gen, n)) -isone(I::ZZIdl) = isone(I.gen) +isone(I::ZZIdl) = isone(I.gen) maximal_order(::FlintRationalField) = ZZ diff --git a/src/NumField/SimpleNumField/Subfields.jl b/src/NumField/SimpleNumField/Subfields.jl index ce44dd81b1..c309cfa66a 100644 --- a/src/NumField/SimpleNumField/Subfields.jl +++ b/src/NumField/SimpleNumField/Subfields.jl @@ -313,7 +313,7 @@ function subfields(K::SimpleNumField; degree::Int = -1) if isprime(n) res = Tuple{T, morphism_type(T)}[] - if degree == n + if degree == n push!(res, (K, id_hom(K))) elseif degree == 1 kt, t = PolynomialRing(k, "t", cached = false) diff --git a/src/NumField/Subfields.jl b/src/NumField/Subfields.jl index 96bceb5fae..d7ddbb8d93 100644 --- a/src/NumField/Subfields.jl +++ b/src/NumField/Subfields.jl @@ -295,7 +295,7 @@ function fixed_field(K::AnticNumberField, A::Vector{NfToNfMor}; simplify::Bool = return K, id_hom(K) end - if ismaximal_order_known(K) + if ismaximal_order_known(K) OK = maximal_order(K) if isdefined(OK, :lllO) k, mk = fixed_field1(K, A) @@ -332,7 +332,7 @@ function fixed_field(K::AnticNumberField, A::Vector{NfToNfMor}; simplify::Bool = m[j, j] = m[j, j] - bm.den # This is autos[i] - identity end - + push!(ar_mat, m) end @@ -370,7 +370,7 @@ function fixed_field(K::NfRel, A::Vector{T}; simplify::Bool = true) where {T <: if length(autos) == 0 return K, id_hom(K) end - + F = base_field(K) a = gen(K) n = degree(K) diff --git a/src/NumFieldOrd/NfOrd/Clgp.jl b/src/NumFieldOrd/NfOrd/Clgp.jl index 9890fc411c..874fcfd7d4 100644 --- a/src/NumFieldOrd/NfOrd/Clgp.jl +++ b/src/NumFieldOrd/NfOrd/Clgp.jl @@ -271,7 +271,7 @@ function _class_unit_group(O::NfOrd; saturate_at_2::Bool = true, bound::Int = -1 @v_do :UnitGroup 1 popindent() # r == 1 means full rank if isone(r) # use saturation!!!! - idx, reg_expected = _validate_class_unit_group(c, U) + idx, reg_expected = _validate_class_unit_group(c, U) if isone(idx) break end @@ -310,7 +310,7 @@ function _class_unit_group(O::NfOrd; saturate_at_2::Bool = true, bound::Int = -1 end @assert fl # so I can switch assertions off... c.sat_done = 2*Int(idx) - n_idx, reg_expected = _validate_class_unit_group(c, U) + n_idx, reg_expected = _validate_class_unit_group(c, U) @vprint :ClassGroup 1 "index estimate down to $n_idx from $idx\n" @assert idx != n_idx idx = n_idx @@ -331,7 +331,7 @@ function _class_unit_group(O::NfOrd; saturate_at_2::Bool = true, bound::Int = -1 do_units = true if length(c.M.rel_gens) < unit_group_rank(O) do_units = false - end + end else add += 2 do_units = false @@ -419,8 +419,8 @@ function class_group(O::NfOrd; bound::Int = -1, method::Int = 3, if do_lll OK = maximal_order(nf(O)) @assert OK.ismaximal == 1 - L = lll(OK) - @assert L.ismaximal == 1 + L = lll(OK) + @assert L.ismaximal == 1 else L = O end diff --git a/src/NumFieldOrd/NfOrd/Clgp/Ctx.jl b/src/NumFieldOrd/NfOrd/Clgp/Ctx.jl index 191837bec4..4869b4279b 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Ctx.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Ctx.jl @@ -43,7 +43,7 @@ function class_group_init(FB::NfFactorBase, T::DataType = SMat{fmpz}; add_rels:: class_group_add_relation(clg, b, abs(bn), fmpz(1), orbit = false) end end - + l = zero_matrix(FlintZZ, n, 1+clg.c.r2) for i = 1:n l[i,1] = 1 @@ -67,7 +67,7 @@ function class_group_init(FB::NfFactorBase, T::DataType = SMat{fmpz}; add_rels:: if use_aut au = automorphisms(nf(O), copy = false) clg.aut_grp = class_group_add_auto(clg, au) - clg.normCtx = NormCtx(O, div(nbits(discriminant(O)), 2) + 20, + clg.normCtx = NormCtx(O, div(nbits(discriminant(O)), 2) + 20, length(au) == degree(O)) else clg.normCtx = NormCtx(O, div(nbits(discriminant(O)), 2) + 20, false) @@ -76,7 +76,7 @@ function class_group_init(FB::NfFactorBase, T::DataType = SMat{fmpz}; add_rels:: return clg end -function class_group_init(O::NfOrd, B::Int; min_size::Int = 20, add_rels::Bool = true, +function class_group_init(O::NfOrd, B::Int; min_size::Int = 20, add_rels::Bool = true, use_aut::Bool = false, complete::Bool = true, degree_limit::Int = 0, T::DataType = SMat{fmpz}) @vprint :ClassGroup 2 "Computing factor base ...\n" diff --git a/src/NumFieldOrd/NfOrd/Clgp/FacBase_Euc.jl b/src/NumFieldOrd/NfOrd/Clgp/FacBase_Euc.jl index 6429c93bce..406d73b114 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/FacBase_Euc.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/FacBase_Euc.jl @@ -46,7 +46,7 @@ end function issmooth(c::FactorBase{T}, a::T) where T @assert a != 0 g = gcd(c.prod, a) - while g != 1 + while g != 1 a = div(a, g) g = gcd(g, a) end @@ -60,7 +60,7 @@ function issmooth!(c::FactorBase{fmpz}, a::fmpz) return a==1 || a==-1, a end b = copy(a) - while g != 1 + while g != 1 divexact!(b, b, g) gcd!(g, g, b) end @@ -88,7 +88,7 @@ function _split(c::node{T}, a::T) where T end if isdefined(c, :right) r = gcd(a, c.right.content) - if r != 1 + if r != 1 rs = _split(c.right, r) else rs = Vector{T}() @@ -118,7 +118,7 @@ function factor(c::FactorBase{T}, a::T, do_error::Bool = true) where T return f end -function factor(c::FactorBase{fmpz}, a::fmpq) +function factor(c::FactorBase{fmpz}, a::fmpq) @assert a != 0 a = deepcopy(a) f = Dict{fmpz, Int}() diff --git a/src/NumFieldOrd/NfOrd/Clgp/FacBase_Idl.jl b/src/NumFieldOrd/NfOrd/Clgp/FacBase_Idl.jl index 6c7023b87d..bcb3d1f2dc 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/FacBase_Idl.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/FacBase_Idl.jl @@ -1,6 +1,6 @@ ################################################################################ # -# NfFactorBase : Factor bases for number fields +# NfFactorBase : Factor bases for number fields # A factor basis is mostly a collection of prime ideals, designed, # if possible, to allow for rapid testing if elements are smooth. # @@ -26,7 +26,7 @@ function NfFactorBase(O::NfOrd, B::Int; lp = prime_ideals_up_to(O, B, complete = complete, degree_limit = degree_limit) @vprint :ClassGroup 2 " done \n" return NfFactorBase(O, lp) -end +end function NfFactorBase(O::NfOrd, lp::Vector{NfOrdIdl}) lp = sort(lp, lt = function(a,b) return norm(a) > norm(b); end) @@ -88,7 +88,7 @@ end function _factor!(FB::NfFactorBase, a::nf_elem, error::Bool = true, n::fmpq = abs(norm(a)), integral::Bool = true) T = fmpz - O = order(FB.ideals[1]) + O = order(FB.ideals[1]) n = deepcopy(n) if integral @@ -128,7 +128,7 @@ function _factor!(FB::NfFactorBase, a::nf_elem, end @hassert :ClassGroup 1 length(r) > 0 return ret, SRow{T}(r) - else + else # factor failed or I have a unit. # sparse rel mat must not have zero-rows. return false, SRow{T}() @@ -141,7 +141,7 @@ end function _factor!(FB::Hecke.NfFactorBase, A::Hecke.NfOrdIdl, error::Bool = true) - T = fmpz + T = fmpz O = order(A) n = norm(A) @@ -152,9 +152,9 @@ function _factor!(FB::Hecke.NfFactorBase, A::Hecke.NfOrdIdl, return true, SRow{T}() end - d = factor(FB.fb_int, n) # as above: fails - even if error is false - + d = factor(FB.fb_int, n) # as above: fails - even if error is false - # if the norm is not smooth - + rw = FB.rw r = Vector{Tuple{Int, Int}}() for p in keys(d) @@ -188,7 +188,7 @@ function _factor!(FB::Hecke.NfFactorBase, A::Hecke.NfOrdIdl, @hassert :ClassGroup 9000 A == prod([FB.ideals[i]^j for (i, j) in r]) @hassert :ClassGroup 1 length(r) > 0 return true, res - else + else # factor failed or I have a unit. # sparse rel mat must not have zero-rows. return false, SRow{T}() diff --git a/src/NumFieldOrd/NfOrd/Clgp/Main_LLL.jl b/src/NumFieldOrd/NfOrd/Clgp/Main_LLL.jl index fc4b5dbfe0..5327eeb418 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Main_LLL.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Main_LLL.jl @@ -36,7 +36,7 @@ function single_env(c::ClassGrpCtx{T}, I::Hecke.SmallLLLRelationsCtx, rat::Float @vprint :ClassGroup 2 "not enough progress $(I.cnt) $(c.expect) $good\n" break end - if fl + if fl good += length(c.M.bas_gens) #= + length(c.M.rel_gens) =# - bef end if fl && max_good > -1 @@ -105,7 +105,7 @@ function class_group_new_relations_via_lll(c::ClassGrpCtx{T}, rat::Float64 = 0.2 end @vprint :ClassGroup 1 "piv was empty, supplemented it to\n" @vprint :ClassGroup 1 "$(piv)\n" - end + end start = max(1, max(div(length(c.FB.ideals), 2)+1, length(c.FB.ideals)-10*(1+div(rand_exp, 3)))) @@ -177,13 +177,13 @@ function class_group_new_relations_via_lll(c::ClassGrpCtx{T}, rat::Float64 = 0.2 end end end - end + end @vprint :ClassGroup 1 "eval info\n" @vtime :ClassGroup 1 h, piv_new = class_group_get_pivot_info(c) @vprint :ClassGroup 1 "length(piv) = $(length(piv_new)) and h = $h\n" @vprint :ClassGroup 1 "$(piv_new)\n" - + if piv_new == piv if h > 0 extra = 2 @@ -198,14 +198,14 @@ function class_group_new_relations_via_lll(c::ClassGrpCtx{T}, rat::Float64 = 0.2 while gcd(rand_exp, h) > 1 rand_exp += 1 end - end + end if rand_exp % 3 == 0 start = max(start -10, 1) end end piv = piv_new - if h == 1 + if h == 1 return nothing end end diff --git a/src/NumFieldOrd/NfOrd/Clgp/Main_enum.jl b/src/NumFieldOrd/NfOrd/Clgp/Main_enum.jl index a9aad0a9d2..7da983a21c 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Main_enum.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Main_enum.jl @@ -10,13 +10,13 @@ function class_group_random_ideal_relation(clg::ClassGrpCtx, r::Int, if r < 2 r = 2 end - for i = 1:r + for i = 1:r I = I*rand(clg.FB.ideals) I, g = reduce_ideal_class(I) s *= g end return s; -end +end # Do better: re-use partial hnf, check rank mod p, ... @@ -157,7 +157,7 @@ function class_group_find_relations(clg::ClassGrpCtx; val = 0, prec::Int = 100, end e = class_group_small_real_elements_relation_next(E) n = abs(norm_div(e, norm(E.A), np)) - + if nbits(numerator(n)) > np-10 bad_norm += 1 if bad_norm /(E.cnt + E.bad + 1) > 0.1 @@ -204,12 +204,12 @@ function class_group_find_relations(clg::ClassGrpCtx; val = 0, prec::Int = 100, println("current h=$h from $(clg.M)") if h != 0 - if h==1 + if h==1 return h, piv end @v_do :ClassGroup 1 println("full rank: current h = ", h, " want ", want_extra, " more") - if h == last_h + if h == last_h want_extra -= 1 else want_extra = 15 @@ -227,7 +227,7 @@ function class_group_find_relations(clg::ClassGrpCtx; val = 0, prec::Int = 100, clg.time[:hnf_time]/1e9, " sec for hnf in ", clg.hnf_call, " calls"); @v_do :ClassGroup 1 println("added ", clg.rel_cnt, " good relations and ", clg.bad_rel, " bad ones, ratio ", clg.bad_rel/clg.rel_cnt) - + class_group_process_relmatrix(clg) h, piv = class_group_get_pivot_info(clg) @@ -258,7 +258,7 @@ function class_group_find_relations2(clg::ClassGrpCtx; val = 0, prec = 100, for i in nI:-1:1 I = Idl[i] too_slow = false - f = class_group_small_real_elements_relation_start(clg, I, + f = class_group_small_real_elements_relation_start(clg, I, limit = limit, prec = prec, val = val) f.vl = val @@ -279,7 +279,7 @@ function class_group_find_relations2(clg::ClassGrpCtx; val = 0, prec = 100, a = rank(clg.M) if (a-old_r) < 0.5 @v_do :ClassGroup 2 println("rank too slow $a ($old_r) and $(clg.rel_mat_full_rank)") - too_slow = true + too_slow = true break end old_r = a @@ -292,7 +292,7 @@ function class_group_find_relations2(clg::ClassGrpCtx; val = 0, prec = 100, @v_do :ClassGroup 2 println("too slow in getting s.th. for ", i, "\ngood: ", f.cnt, " bad: ", f.bad, " ratio: ", (clg.bad_rel/clg.rel_cnt)) - too_slow = true + too_slow = true break end end @@ -347,7 +347,7 @@ function class_group_find_relations2(clg::ClassGrpCtx; val = 0, prec = 100, # println(n, " should be ", sqrt_disc) # println("offending element is ", e) # println("prec now ", prec) -# end +# end A = Idl[i] j = 0 # TH: without added no_rand_local < nI it crashes sometimes @@ -403,13 +403,13 @@ function class_group_find_relations2(clg::ClassGrpCtx; val = 0, prec = 100, end a_old = a if h != 0 - if h==1 + if h==1 return h, piv end @vprint :ClassGroup 1 "Now have $(clg.M)" @v_do :ClassGroup 1 println("full rank: current h = ", h, " want ", want_extra, " more") - if h == last_h + if h == last_h want_extra -= 1 else want_extra = 15 @@ -437,7 +437,7 @@ function class_group_find_new_relation(clg::ClassGrpCtx; val = 0, prec = 100, limit = 10, extra = 1) if !isdefined(clg, :randomClsEnv) clg.randomClsEnv = random_init(clg.FB.ideals) - end + end O = parent(clg.FB.ideals[1]).order sqrt_disc = isqrt(abs(discriminant(O))) @@ -461,7 +461,7 @@ function class_group_find_new_relation(clg::ClassGrpCtx; val = 0, prec = 100, if class_group_add_relation(clg, e, n, norm(E.A)) E.cnt += 1 extra -= 1 - if extra <= 0 + if extra <= 0 return end else @@ -471,8 +471,8 @@ function class_group_find_new_relation(clg::ClassGrpCtx; val = 0, prec = 100, end end end - end + end class_group_process_relmatrix(clg) -end +end diff --git a/src/NumFieldOrd/NfOrd/Clgp/Map.jl b/src/NumFieldOrd/NfOrd/Clgp/Map.jl index deab8498ee..9938a47166 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Map.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Map.jl @@ -142,7 +142,7 @@ function class_group_ideal_relation(I::NfOrdIdl, c::ClassGrpCtx) end #really annoying, but at least we have a small(ish) ideal now #println("have to work") - + E = class_group_small_lll_elements_relation_start(c, I) iI = inv(I) if isdefined(c, :randomClsEnv) @@ -162,7 +162,7 @@ function class_group_ideal_relation(I::NfOrdIdl, c::ClassGrpCtx) @vprint :ClassGroup 1 "New random \n" last_j = random_get(J, reduce = false) @vprint :ClassGroup 1 "Using $last_j \n" - E = class_group_small_lll_elements_relation_start(c, I*last_j) + E = class_group_small_lll_elements_relation_start(c, I*last_j) iI = inv(E.A) end @@ -176,7 +176,7 @@ function class_group_ideal_relation(I::NfOrdIdl, c::ClassGrpCtx) @vprint :ClassGroup 1 "New random \n" last_j = random_get(J, reduce = false) @vprint :ClassGroup 1 "Using $last_j \n" - E = class_group_small_lll_elements_relation_start(c, I*last_j) + E = class_group_small_lll_elements_relation_start(c, I*last_j) iI = inv(E.A) continue end @@ -204,7 +204,7 @@ function class_group_ideal_relation(I::NfOrdIdl, c::ClassGrpCtx) fl, s = _factor!(c.FB, last_j) @assert fl res2 = r-s - + else res2 = r end diff --git a/src/NumFieldOrd/NfOrd/Clgp/Proof.jl b/src/NumFieldOrd/NfOrd/Clgp/Proof.jl index 98a2b10156..4929129cd2 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Proof.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Proof.jl @@ -47,7 +47,7 @@ function showprogress(io::IO, p::MiniProgressBar, info) print(io, info) print(io, "\r") end - + function class_group_proof(clg::ClassGrpCtx, lb::fmpz, ub::fmpz; extra :: fmpz=fmpz(0), prec::Int = 100, do_it=1:ub) PB = MiniProgressBar(header = "Class group proof") @@ -84,7 +84,7 @@ function class_group_proof(clg::ClassGrpCtx, lb::fmpz, ub::fmpz; extra :: fmpz=f while p < do_it.stop no_primes += 1 - + @v_do :ClassGroupProof if no_primes % interval == 0 #println("did $no_primes prime numbers so far, now $p, need to reach $ub (~$(no_primes/_no_of_primes))") last_time = PB.time_shown @@ -92,7 +92,7 @@ function class_group_proof(clg::ClassGrpCtx, lb::fmpz, ub::fmpz; extra :: fmpz=f prev = PB.prev PB.current = no_primes/_no_of_primes # from PB.current to prev it took cur_time - last_time seconds - + if rate == 0.0 rate = ((PB.current - PB.prev)/(cur_time - last_time)) else @@ -121,7 +121,7 @@ function class_group_proof(clg::ClassGrpCtx, lb::fmpz, ub::fmpz; extra :: fmpz=f fac = prime_decomposition(O, Int(p), deg_lim, low_lim) for _k in fac k = _k[1] - if norm(k) <= lb + if norm(k) <= lb continue end no_ideals += 1 @@ -141,13 +141,13 @@ function class_group_proof(clg::ClassGrpCtx, lb::fmpz, ub::fmpz; extra :: fmpz=f sucess = false a = class_group_small_real_elements_relation_next(E) n = norm_div(a, norm(k), np) - if gcd(numerator(n), p) > extra + if gcd(numerator(n), p) > extra # println("a: $a, $(norm(a)), $(norm(k)), $n") # println("contains too many conjugates, bad") continue end f, r = issmooth!(clg.FB.fb_int, numerator(n)) - if f + if f M = SMat{Int}() fl = _factor!(clg.FB, a, false, n)[1] if fl diff --git a/src/NumFieldOrd/NfOrd/Clgp/Rel_LLL.jl b/src/NumFieldOrd/NfOrd/Clgp/Rel_LLL.jl index 8d45acaee0..283e330e79 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Rel_LLL.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Rel_LLL.jl @@ -78,7 +78,7 @@ function class_group_small_lll_elements_relation_start(clg::ClassGrpCtx{T}, if m < 2 m = n end - while length(f) < m + while length(f) < m f = Int[i for i = 1:n if compare_index(L.num, i, i, bd) < 0] bd *= 2 end diff --git a/src/NumFieldOrd/NfOrd/Clgp/Rel_Schmettow.jl b/src/NumFieldOrd/NfOrd/Clgp/Rel_Schmettow.jl index 2cab2c7348..715eb02477 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Rel_Schmettow.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Rel_Schmettow.jl @@ -8,9 +8,9 @@ function one_step(b::NfOrdFracIdl, p::NfOrdIdl; prec::Int = 100) b = p*b simplify(b) g1 = short_elem(b, prec = prec) - b = g1*inv(b) + b = g1*inv(b) simplify(b) - g2 = short_elem(b, prec = prec) + g2 = short_elem(b, prec = prec) return simplify(g2*inv(b)), g1, g2 end diff --git a/src/NumFieldOrd/NfOrd/Clgp/Rel_add.jl b/src/NumFieldOrd/NfOrd/Clgp/Rel_add.jl index a64b8c929d..552eb9eb16 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Rel_add.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Rel_add.jl @@ -16,7 +16,7 @@ function special_prime_ideal(p::fmpz, a::nf_elem) R = parent(f) Zx = PolynomialRing(FlintZZ)[1] Zpx = PolynomialRing(GF(UInt(p), cached=false), "\$x_p", cached=false)[1] - g = Zpx(a) + g = Zpx(a) ff = Zpx(f) gcd!(g, g, ff) return lift(Zx, g) @@ -28,7 +28,7 @@ function push_normStat!(clg::ClassGrpCtx, n::fmpz, b::Bool) clg.normStat[nb] = (0,0) end t = clg.normStat[nb] - if b + if b clg.normStat[nb] = (t[1], t[2] + 1) else clg.normStat[nb] = (t[1] + 1, t[2]) @@ -45,20 +45,20 @@ function class_group_add_relation(clg::ClassGrpCtx{T}, a::nf_elem, n::fmpq, nI:: if iszero(a) || isone(a) return false end - if hash(a) in clg.RS + if hash(a) in clg.RS return false end - O = order(clg.FB.ideals[1]) + O = order(clg.FB.ideals[1]) easy = isdefining_polynomial_nice(parent(a)) @vprint :ClassGroup 3 "trying relation of length $(Float64(length(a))) and norm $(Float64(n*nI)), effective $(Float64(n))\n" if integral #element is known to be integral fl, r = issmooth!(clg.FB.fb_int, numerator(n*nI)) push_normStat!(clg, numerator(n), fl) - else + else fl, r = issmooth!(clg.FB.fb_int, numerator(n*nI)*denominator(a, O)) push_normStat!(clg, numerator(n)*denominator(a), fl) - end + end @assert issmooth!(clg.FB.fb_int, nI)[1] @@ -66,7 +66,7 @@ function class_group_add_relation(clg::ClassGrpCtx{T}, a::nf_elem, n::fmpq, nI:: @vprint :ClassGroup 3 "not int-smooth\n" # println("not int-smooth"); # try for large prime? - if easy && abs(r) < clg.B2 && isprime(r) && !isindex_divisor(O, r) + if easy && abs(r) < clg.B2 && isprime(r) && !isindex_divisor(O, r) @vprint :ClassGroup 3 "gives potential large prime\n" i = special_prime_ideal(r, a) #TODO: check Galois orbit of special ideal @@ -76,7 +76,7 @@ function class_group_add_relation(clg::ClassGrpCtx{T}, a::nf_elem, n::fmpq, nI:: fl, r2 = _factor!(clg.FB, lp[1], false, norm(lp[1])) b = FacElem(Dict([(a,1), (lp[1],-1)])) fl = class_group_add_relation(clg, b, r1 - r2) - if fl + if fl clg.largePrime_success += 1 else clg.largePrime_no_success += 1 @@ -113,11 +113,11 @@ function class_group_add_relation(clg::ClassGrpCtx{T}, a::nf_elem, n::fmpq, nI:: clg.rel_cnt += 1 end end - + if new_gen && orbit && isdefined(clg, :aut_grp) n = res o = _get_autos_from_ctx(clg) - + @v_do :ClassGroup 1 println(" adding orbit with $(length(o)) elements") for (b, m) in o nn = Hecke.permute_row(n, m) @@ -133,9 +133,9 @@ function class_group_add_relation(clg::ClassGrpCtx{T}, a::nf_elem, n::fmpq, nI:: end end end - end + end + - # @assert clg.rel_cnt < 2*ncols(clg.M) @v_do :ClassGroup 1 println(" -> OK, rate currently ", clg.bad_rel/clg.rel_cnt, " this ", clg.bad_rel - clg.last, @@ -164,13 +164,13 @@ function class_group_add_relation(clg::ClassGrpCtx{SMat{fmpz}}, a::FacElem{nf_el return class_group_add_relation(clg, a, R) end -function class_group_add_relation(clg::ClassGrpCtx{SMat{fmpz}}, a::FacElem{nf_elem, AnticNumberField}, R::SRow{fmpz}; always::Bool = true, add_orbit = true) - - if hash(a) in clg.RS +function class_group_add_relation(clg::ClassGrpCtx{SMat{fmpz}}, a::FacElem{nf_elem, AnticNumberField}, R::SRow{fmpz}; always::Bool = true, add_orbit = true) + + if hash(a) in clg.RS return false end - O = order(clg.FB.ideals[1]) + O = order(clg.FB.ideals[1]) @vprint :ClassGroup 3 "adding $R\n" @@ -208,7 +208,7 @@ function class_group_add_relation(clg::ClassGrpCtx{SMat{fmpz}}, a::FacElem{nf_el end end end - end + end clg.last = clg.bad_rel return true diff --git a/src/NumFieldOrd/NfOrd/Clgp/Rel_enum.jl b/src/NumFieldOrd/NfOrd/Clgp/Rel_enum.jl index b8c2eceb88..44d3aa0e12 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Rel_enum.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Rel_enum.jl @@ -27,7 +27,7 @@ function enum_ctx_from_ideal(A::NfOrdIdl, E.t = t*b E.t_den = b_den ## we want to find x sth. norm(x) <= sqrt(|disc|)*norm(A) - ## |N(x)^2|^(1/n) <= T_2(x)/n + ## |N(x)^2|^(1/n) <= T_2(x)/n ## so if T_2(x) <= n * D^(1/n) ## then |N(x)| <= D^(1/2) #d = abs(discriminant(order(A))) * norm(A)^2 diff --git a/src/NumFieldOrd/NfOrd/Clgp/Saturate.jl b/src/NumFieldOrd/NfOrd/Clgp/Saturate.jl index f67585ed8b..034620e44d 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Saturate.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Saturate.jl @@ -34,7 +34,7 @@ function mod_p(R::Vector{FacElem{nf_elem, AnticNumberField}}, Q::NfOrdIdl, p::In for i = 1:pp-1 dl[y] = i y *= x - end + end return matrix(T, 1, length(R), Int[dl[image(mF1, R[i], D[i], cached, pp)^e] % p for i in 1:length(R)]) end @@ -131,14 +131,14 @@ function compute_candidates_for_saturate(v::Vector{FacElem{nf_elem, AnticNumberF T = GF(p, cached = false) cA = length(v1) A = identity_matrix(T, cA) - + S = Hecke.PrimesSet(Hecke.p_start, -1, p, 1) D = Vector{Vector{gfp_poly}}(undef, length(v1)) for i in 1:length(v1) D[i] = Vector{gfp_poly}(undef, length(v1[i].fac)) end - dK = discriminant(OK) + dK = discriminant(OK) threshold = stable*ncols(A) i = 1 @@ -170,7 +170,7 @@ function compute_candidates_for_saturate(v::Vector{FacElem{nf_elem, AnticNumberF return zero_matrix(FlintZZ, 0, length(v1)) end A = A*sub(z, 1:nrows(z), 1:rrz) - if cA == ncols(A) + if cA == ncols(A) i += 1 else i = 0 @@ -209,10 +209,10 @@ function compute_candidates_for_saturate1(c::Hecke.ClassGrpCtx, p::Int, stable:: T = GF(p, cached = false) cA = length(R) A = identity_matrix(T, cA) - + S = Hecke.PrimesSet(Hecke.p_start, -1, p, 1) - dK = discriminant(ZK) + dK = discriminant(ZK) threshold = stable*ncols(A) f = K.pol @@ -309,7 +309,7 @@ function compute_candidates_for_saturate1(c::Hecke.ClassGrpCtx, p::Int, stable:: for i = 1:pp-1 disc_log[y] = T(i) y *= elF - end + end #The disc log dictionary is ready. Now we need the subspace. for i = 1:lfacts z = matrix(T, 1, length(R), Hecke.gfp_elem[disc_log[evals[j][i]^e] for j = 1:length(R)]) @@ -319,7 +319,7 @@ function compute_candidates_for_saturate1(c::Hecke.ClassGrpCtx, p::Int, stable:: return zero_matrix(FlintZZ, 0, length(R)) end A = A*sub(z, 1:nrows(z), 1:rrz) - if cA == ncols(A) + if cA == ncols(A) att += 1 else att = 0 @@ -399,7 +399,7 @@ function saturate!(U::Hecke.UnitGrpCtx, n::Int, stable::Float64 = 3.5; use_orbit if restart restart = false continue - elseif wasted + elseif wasted stable *= 2 else @vprint :Saturate 1 "sat success at $(stable)\n" @@ -443,7 +443,7 @@ function saturate!(d::Hecke.ClassGrpCtx, U::Hecke.UnitGrpCtx, n::Int, stable::Fl continue end end - + decom = Dict{NfOrdIdl, fmpz}((c.FB.ideals[k], v) for (k, v) = fac_a) @vprint :Saturate 1 "Testing if element is an n-th power\n" @vtime :Saturate 1 fl, x = ispower(a, n, decom = decom, easy = easy_root) @@ -451,13 +451,13 @@ function saturate!(d::Hecke.ClassGrpCtx, U::Hecke.UnitGrpCtx, n::Int, stable::Fl @vprint :Saturate 1 "The element is an n-th power\n" success = true fac_a = divexact(fac_a, n) - if iszero(fac_a) + if iszero(fac_a) #In this case, the element we have found is a unit and #we want to make sure it is used #find units can be randomised... #maybe that should also be addressed elsewhere @vprint :Saturate 1 "The new element is a unit\n" - + if use_orbit auts_action = Hecke._get_autos_from_ctx(d) for s = 1:length(auts_action) @@ -491,7 +491,7 @@ function saturate!(d::Hecke.ClassGrpCtx, U::Hecke.UnitGrpCtx, n::Int, stable::Fl if restart restart = false continue - elseif wasted + elseif wasted stable *= 2 else @vprint :Saturate 1 "sat success at $(stable)\n" @@ -512,7 +512,7 @@ function simplify(c::Hecke.ClassGrpCtx, U::Hecke.UnitGrpCtx, cp::Int = 0; use_LL vals_new_rels = Vector{SRow{fmpz}}() @vprint :Saturate 1 "Computing rels...\n" for i=1:length(c.FB.ideals) - if cp != 0 && isone(c.M.basis.rows[i].values[1]) + if cp != 0 && isone(c.M.basis.rows[i].values[1]) continue end @assert all(x -> x > 0, c.M.basis.rows[i].values) @@ -551,7 +551,7 @@ function simplify(c::Hecke.ClassGrpCtx, U::Hecke.UnitGrpCtx, cp::Int = 0; use_LL @assert fl end end - for i=1:length(U.units) + for i=1:length(U.units) Hecke.class_group_add_relation(d, U.units[i], SRow(FlintZZ)) end return d diff --git a/src/NumFieldOrd/NfOrd/Clgp/Sunits.jl b/src/NumFieldOrd/NfOrd/Clgp/Sunits.jl index bd6341ec39..811970e109 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Sunits.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Sunits.jl @@ -4,7 +4,7 @@ function show(io::IO, mC::MapSUnitModUnitGrpFacElem) @show_name(io, mC) io = IOContext(io, :compact => true) println(io, "SUnits (in factored form) mod Units map of ") - show(io, codomain(mC)) + show(io, codomain(mC)) println(io, "for $(mC.idl)") end @@ -52,7 +52,7 @@ function sunit_mod_units_group_fac_elem(I::Vector{NfOrdIdl}) @vtime :ClassGroup 1 for (i, A) = enumerate(I) @vprint :ClassGroup 2 "doin' $(i)/$(length(I)):\n$A\n" @vtime :ClassGroup 2 x, r = class_group_ideal_relation(A, c) -# TODO: write == for Idl and FracIdl +# TODO: write == for Idl and FracIdl # @assert prod([c.FB.ideals[p]^Int(v) for (p,v) = r]) == x*A push!(X, x) push!(rr, r) @@ -64,7 +64,7 @@ function sunit_mod_units_group_fac_elem(I::Vector{NfOrdIdl}) end @vprint :ClassGroup 1 "... done\n" - + @vprint :ClassGroup 1 "solving...\n" @vtime :ClassGroup 1 R, d = solve_ut(H, rr) Rd = hcat(d*identity_matrix(SMat, FlintZZ, nrows(R)), fmpz(-1)*R) @@ -74,7 +74,7 @@ function sunit_mod_units_group_fac_elem(I::Vector{NfOrdIdl}) S1 = sub(S, 1:nrows(S), 1:nrows(S)) S2 = sub(S, 1:nrows(S), (nrows(S) + 1):ncols(S)) @assert nrows(S1) == nrows(S2) && nrows(S1) == nrows(S) - + g = vcat(c.R_gen, c.R_rel) valuations = SRow{fmpz}[] @@ -118,8 +118,8 @@ function sunit_mod_units_group_fac_elem(I::Vector{NfOrdIdl}) C = abelian_group(fmpz[0 for i=U]) r = MapSUnitModUnitGrpFacElem() r.idl = I_in - - local exp + + local exp let U = U function exp(a::GrpAbFinGenElem) b = U[1]^a.coeff[1, 1] @@ -208,7 +208,7 @@ function sunit_group_fac_elem(I::Vector{NfOrdIdl}) end local log - let mS = mS, mU = mU, G = G + let mS = mS, mU = mU, G = G function log(a::FacElem{nf_elem, AnticNumberField}) a1 = preimage(mS, a) a2 = a*inv(image(mS, a1)) diff --git a/src/NumFieldOrd/NfOrd/Clgp/Types.jl b/src/NumFieldOrd/NfOrd/Clgp/Types.jl index d3cb159b65..717b795aa2 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/Types.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/Types.jl @@ -1,6 +1,6 @@ mutable struct MapClassGrp <: Map{GrpAbFinGen, NfOrdIdlSet, HeckeMap, MapClassGrp} header::MapHeader{GrpAbFinGen, NfOrdIdlSet} - + quo::Int princ_gens::Vector{Tuple{FacElem{NfOrdIdl,NfOrdIdlSet}, FacElem{nf_elem, AnticNumberField}}} small_gens::Vector{NfOrdIdl} diff --git a/src/NumFieldOrd/NfOrd/Clgp/cm_field.jl b/src/NumFieldOrd/NfOrd/Clgp/cm_field.jl index 4ebdcd0c8c..ed30f32db4 100644 --- a/src/NumFieldOrd/NfOrd/Clgp/cm_field.jl +++ b/src/NumFieldOrd/NfOrd/Clgp/cm_field.jl @@ -107,13 +107,13 @@ function create_ctx(OK::NfOrd; bound::Int = -1, method::Int = 3, large::Int = 10 return c::ClassGrpCtx{SMat{fmpz}} end end - + if bound == -1 bound = Int(ceil(log(abs(discriminant(OK)))^2*0.3)) (bound == 0) && (bound = 1) end - + c = class_group_init(OK, bound, complete = false, use_aut = use_aut)::ClassGrpCtx{SMat{fmpz}} @assert order(c) === OK - return c + return c end \ No newline at end of file diff --git a/src/NumFieldOrd/NfOrd/FacElem.jl b/src/NumFieldOrd/NfOrd/FacElem.jl index 6033175fe8..bd852cae7c 100644 --- a/src/NumFieldOrd/NfOrd/FacElem.jl +++ b/src/NumFieldOrd/NfOrd/FacElem.jl @@ -420,7 +420,7 @@ function factor_coprime(a::FacElem{nf_elem, AnticNumberField}, I::NfOrdIdlSet; r if iszero(e) continue end - if divisible(norm(b, copy = false), P) + if divisible(norm(b, copy = false), P) v += valuation(b, p)*e end end diff --git a/src/NumFieldOrd/NfOrd/FactorBaseBound.jl b/src/NumFieldOrd/NfOrd/FactorBaseBound.jl index 5156d8ba75..86a943f8b8 100644 --- a/src/NumFieldOrd/NfOrd/FactorBaseBound.jl +++ b/src/NumFieldOrd/NfOrd/FactorBaseBound.jl @@ -52,9 +52,9 @@ ideals of norm bounded by $B$. function factor_base_bound_bdf(O::NfOrd) return _factor_base_bound_bdf(O, 100.0, 100.0) end - + function _factorbase_bound_bdf_right_side(O::NfOrd, x0::Float64, D::Dict{Int, Vector{Tuple{Int, Int}}}) - K = nf(O) + K = nf(O) d = degree(K) r, s = signature(O) @@ -74,14 +74,14 @@ function _factorbase_bound_bdf_right_side(O::NfOrd, x0::Float64, D::Dict{Int, Ve pm2 = R(p)^(R(FlintZZ(m)//FlintZZ(2))) secondterm = R(1) - m*logp//logcurval - + return logp//pm2 * secondterm end function comp_summand(p::Int, m::Int) return comp_summand(fmpz(p), m) end - + p = 2 while p < curval @@ -96,7 +96,7 @@ function _factorbase_bound_bdf_right_side(O::NfOrd, x0::Float64, D::Dict{Int, Ve Pnorm = fmpz(p)^P[1] if Pnorm < curval max_exp = _max_power_in(Pnorm, curval) - + for m in 1:max_exp summand = comp_summand(Pnorm, m) summ = summ + summand @@ -105,13 +105,13 @@ function _factorbase_bound_bdf_right_side(O::NfOrd, x0::Float64, D::Dict{Int, Ve end p = next_prime(p) end - + y = 2*summ - (R(d)*(const_pi(R)^2//R(2)) + r*4*const_catalan(R))//logcurval return y::arb end function _factor_base_bound_bdf(O::NfOrd, x0::Float64 = 50.0, ste::Float64 = 20.0) - K = nf(O) + K = nf(O) d = degree(K) r, s = signature(O) @@ -135,18 +135,18 @@ function _factor_base_bound_bdf(O::NfOrd, x0::Float64 = 50.0, ste::Float64 = 20. x1 = 2*x0 y = _factorbase_bound_bdf_right_side(O, x1, dec_cache) end - + dista = abs(x0-x1) while !( y > D && dista < ste) - if y < D + if y < D x1 = x0 + 3*dista/2 else x1 = x0 - dista/2 end dista = abs(x1-x0) - + x0 = x1 y = _factorbase_bound_bdf_right_side(O, x0, dec_cache) end diff --git a/src/NumFieldOrd/NfOrd/Hensel.jl b/src/NumFieldOrd/NfOrd/Hensel.jl index 46e734fd35..ead99ab146 100644 --- a/src/NumFieldOrd/NfOrd/Hensel.jl +++ b/src/NumFieldOrd/NfOrd/Hensel.jl @@ -72,7 +72,7 @@ function lift(R::NmodPolyRing, a::fq_nmod) return f end -function (Zx::FmpzPolyRing)(a::nf_elem) +function (Zx::FmpzPolyRing)(a::nf_elem) b = Zx() @assert denominator(a) == 1 if degree(parent(a)) == 1 @@ -120,7 +120,7 @@ function _roots_hensel(f::Generic.Poly{nf_elem}; n = degree(K) deg = degree(f) - # First we find a prime ideal such that f is squarefree modulo P + # First we find a prime ideal such that f is squarefree modulo P # (The discriminant of f has only finitely many divisors). p = degree(f)+1 @@ -160,7 +160,7 @@ function _roots_hensel(f::Generic.Poly{nf_elem}; if any(x->iszero(denominator(x) % p), coefficients(K.pol)) continue end - + Rp = Nemo.GF(p, cached=false) Rpt, t = PolynomialRing(Rp, "t", cached=false) gp = Rpt(K.pol) @@ -184,7 +184,7 @@ function _roots_hensel(f::Generic.Poly{nf_elem}; red_coeff1 = Vector{fq_nmod}(undef, length(f)) red_coeff1[length(f)] = S(1) for i = 2:length(f)-1 - red_coeff1[i] = zero(S) + red_coeff1[i] = zero(S) end red_coeff1[1] = S(Rpt(coeff(f, 0))) fp = ST(red_coeff1) @@ -233,7 +233,7 @@ function _roots_hensel(f::Generic.Poly{nf_elem}; #TODO: we need norm_change_const wrt. any basis to apply it to an # equation order even if it is no order. # probably needs an entire trail of other stuff - r1, r2 = signature(K) + r1, r2 = signature(K) gsa = derivative(K.pol)(gen(K)) if !isdefining_polynomial_nice(K) @@ -414,12 +414,12 @@ function _hensel(f::Generic.Poly{nf_elem}, #assumes f squarefree #assumes constant_coefficient(f) != 0 - + ZX, X = PolynomialRing(FlintZZ, "X", cached = false) #to avoid embarrasment... - #find the prime ideal - as I don't want to use orders, this is + #find the prime ideal - as I don't want to use orders, this is #fun (computing a max order just for this is wasteful) #fun fact: if g = prod g_i mod p^k, then P_i^k = #so instead of powering, and simplify and such, lets write it down @@ -430,7 +430,7 @@ function _hensel(f::Generic.Poly{nf_elem}, ff = ZX(d_pol*K.pol) gg = hensel_lift(ff, g1, fmpz(p), k) else - gg = ZX(d_pol * K.pol) + gg = ZX(d_pol * K.pol) pk = fmpz(p)^k gg *= invmod(leading_coefficient(gg), pk) mod_sym!(gg, pk) @@ -450,8 +450,8 @@ function _hensel(f::Generic.Poly{nf_elem}, end # Now if we are in the normal case and want max_roots, we only have - # to lift max_roots - + # to lift max_roots + if isnormal rt = eltype(rt)[1:max(max_roots, degree(f))] end @@ -510,7 +510,7 @@ function _hensel(f::Generic.Poly{nf_elem}, M = zero_matrix(FlintZZ, n, n) local Mi::fmpz_mat local d::fmpz - + @vprint :Saturate 1 "Maximum number of steps: $(length(pr))\n" for i=2:length(pr) @vprint :Saturate 1 "Step number $i\n" @@ -597,7 +597,7 @@ function _hensel(f::Generic.Poly{nf_elem}, _cache_lll[pr[i]] = (M, Mi, d) end end - + if ispure ap = Qt((-coeff(f, 0))) @@ -702,7 +702,7 @@ function _hensel(f::Generic.Poly{nf_elem}, p::Int, k::Int; max_roots::Int = degr break end end - + S = FqNmodFiniteField(lpfac, :z, false) ST, T = PolynomialRing(S,"T", cached=false) fp = ST([S(Rpt(coeff(f, i))) for i=0:degree(f)]) @@ -745,7 +745,7 @@ function _lifting_expo(p::Int, deg_p::Int, K::AnticNumberField, bnd::Vector{arb} @assert denominator(t) == 1 tt = numerator(t) tt *= tt' - if degree(K) == 1 + if degree(K) == 1 c3 = BigFloat(tt[1,1]) else #see norm_change_const for an explanation diff --git a/src/NumFieldOrd/NfOrd/Ideal/Arithmetic.jl b/src/NumFieldOrd/NfOrd/Ideal/Arithmetic.jl index 18354b1f59..b1205ba711 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/Arithmetic.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/Arithmetic.jl @@ -79,7 +79,7 @@ function sum_princ_gen_special(x::NfAbsOrdIdl, y::NfAbsOrdIdl) else M1 = _hnf_modular_eldiv(basis_matrix(y, copy = false), genx, :lowerleft) res = ideal(OK, M1, false, true) - end + end @hassert :NfOrd 1 res == sum_via_basis_matrix(x, y) return res end @@ -135,10 +135,10 @@ function +(x::NfAbsOrdIdl, y::NfAbsOrdIdl) if isdefined(x, :norm) && isdefined(y, :norm) && isone(gcd(x.norm, y.norm)) return ideal(OK, 1) end - if has_princ_gen_special(x) + if has_princ_gen_special(x) return sum_princ_gen_special(x, y) end - if has_princ_gen_special(y) + if has_princ_gen_special(y) return sum_princ_gen_special(y, x) end g = gcd(minimum(x, copy = false), minimum(y, copy = false)) diff --git a/src/NumFieldOrd/NfOrd/Ideal/Enum.jl b/src/NumFieldOrd/NfOrd/Ideal/Enum.jl index 3c7e66dc89..deef4915d6 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/Enum.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/Enum.jl @@ -17,7 +17,7 @@ mutable struct FactoredIdeal end end -function ==(a::FactoredIdeal, b::FactoredIdeal) +function ==(a::FactoredIdeal, b::FactoredIdeal) return a.exp == b.exp end diff --git a/src/NumFieldOrd/NfOrd/Ideal/FacElem.jl b/src/NumFieldOrd/NfOrd/Ideal/FacElem.jl index fb417e4be9..3ad77e9eeb 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/FacElem.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/FacElem.jl @@ -239,7 +239,7 @@ function factor_over_coprime_base(x::FacElem{NfOrdIdl, NfOrdIdlSet}, coprime_bas if iszero(e) continue end - if divisible(norm(b, copy = false), P) + if divisible(norm(b, copy = false), P) v += valuation(b, p)*e end end @@ -252,9 +252,9 @@ function factor_over_coprime_base(x::FacElem{NfOrdIdl, NfOrdIdlSet}, coprime_bas end function simplify!(x::FacElem{NfOrdIdl, NfOrdIdlSet}; refine::Bool = false) - if length(x.fac) <= 1 + if length(x.fac) <= 1 return nothing - elseif all(x -> iszero(x), values(x.fac)) + elseif all(x -> iszero(x), values(x.fac)) x.fac = Dict{NfOrdIdl, fmpz}() return nothing end @@ -263,7 +263,7 @@ function simplify!(x::FacElem{NfOrdIdl, NfOrdIdlSet}; refine::Bool = false) ev = factor_over_coprime_base(x, cp) x.fac = ev return nothing -end +end function simplify(x::FacElem{NfOrdFracIdl, NfOrdFracIdlSet}) z = deepcopy(x) diff --git a/src/NumFieldOrd/NfOrd/Ideal/Ideal.jl b/src/NumFieldOrd/NfOrd/Ideal/Ideal.jl index e3f781da15..0415bd7aea 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/Ideal.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/Ideal.jl @@ -616,7 +616,7 @@ function assure_has_minimum(A::NfAbsOrdIdl) if has_minimum(A) return nothing end - + if degree(order(A)) == 1 if has_2_elem(A) A.minimum = gcd(A.gen_one, numerator(coeff(A.gen_two.elem_in_nf, 0))) @@ -1187,7 +1187,7 @@ function _minmod_comp(a::fmpz, b::NfOrdElem) # ub + vf = r # so u/r is the inverse and r is the den in the field # we want gcd(r, a). so we use rres - #at this point, min() SHOULD be + #at this point, min() SHOULD be end function _invmod(a::fmpz, b::NfAbsOrdElem) @@ -1213,7 +1213,7 @@ function __invmod(a::fmpz, b::NfOrdElem) k = nf(Zk) d = denominator(b.elem_in_nf) d, _ = ppio(d, a) - e, _ = ppio(basis_matrix(Zk, copy = false).den, a) + e, _ = ppio(basis_matrix(Zk, copy = false).den, a) mod_r = a^2*d*e if fits(Int, mod_r) S1 = ResidueRing(FlintZZ, Int(mod_r), cached=false) @@ -1236,7 +1236,7 @@ function __invmod(a::fmpz, b::NfOrdElem) St = PolynomialRing(S, cached=false)[1] B = St(d*b.elem_in_nf) F = St(k.pol) - + m, u, v = rresx(B, F) # u*B + v*F = m mod modulus(S) if iszero(m) m = mod_r @@ -2243,8 +2243,8 @@ function iscoprime(I::NfAbsOrdIdl, J::NfAbsOrdIdl) if isprime_known(J) && isprime(J) return iszero(valuation(I, J)) end - #Lemma: Let R be a (commutative) artinian ring, let I be an ideal of R and - #let x be a nilpotent element. Then I = 1 if and only if I + x = 1 + #Lemma: Let R be a (commutative) artinian ring, let I be an ideal of R and + #let x be a nilpotent element. Then I = 1 if and only if I + x = 1 m = gcd(minimum(I, copy = false), minimum(J, copy = false)) m = ispower(m)[2] if has_2_elem(I) && has_2_elem(J) @@ -2270,7 +2270,7 @@ function iscoprime(I::NfAbsOrdIdl, J::NfAbsOrdIdl) end end return isone(gcd(I, m)+J) -end +end function iscoprime(I::NfAbsOrdIdl, a::fmpz) return iscoprime(minimum(I, copy = false), a) diff --git a/src/NumFieldOrd/NfOrd/Ideal/Prime.jl b/src/NumFieldOrd/NfOrd/Ideal/Prime.jl index 6d3bd4000a..62d3ac6e5a 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/Prime.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/Prime.jl @@ -717,7 +717,7 @@ function coprime_base(A::Vector{NfOrdIdl}, p::fmpz) return coprime_base_steel(Ap) end - + function _get_integer_in_ideal(I::NfOrdIdl) if has_minimum(I) return minimum(I) @@ -730,7 +730,7 @@ function _get_integer_in_ideal(I::NfOrdIdl) end return minimum(I) end - + @doc Markdown.doc""" coprime_base(A::Vector{NfOrdIdl}) -> Vector{NfOrdIdl} coprime_base(A::Vector{NfOrdElem}) -> Vector{NfOrdIdl} @@ -1608,7 +1608,7 @@ end # Decomposition Group of a prime ideal # ################################################################################ - + @doc Markdown.doc""" decomposition_group(P::NfOrdIdl; G::Vector{NfToNfMor}) -> Vector{NfToNfMor} @@ -1616,7 +1616,7 @@ Given a prime ideal $P$ in a normal number field $G$, it returns a vector of the such that $\sigma_i(P) = P$ for all $i = 1,\dots, s$. If a subgroup $G$ of automorphisms is given, the output is the intersection of the decomposition group with that subgroup. """ - + function decomposition_group(P::NfOrdIdl; G::Vector{NfToNfMor} = NfToNfMor[], orderG::Int = degree(P)*ramification_index(P)) @assert isprime(P) @@ -1697,9 +1697,9 @@ end @doc Markdown.doc""" decomposition_group(K::AnticNumberField, P::NfOrdIdl, m::Map) -> Grp, GrpToGrp - + Given a prime ideal $P$ of a number field $K$ and a map `m` return from -`automorphism_group(K)`, return the decompositon group of $P$ as a subgroup of +`automorphism_group(K)`, return the decompositon group of $P$ as a subgroup of the domain of `m`. """ function decomposition_group(K::AnticNumberField, P::NfOrdIdl, mG::Map) @@ -1712,7 +1712,7 @@ end # Inertia subgroup of a prime ideal # ################################################################################ - + @doc Markdown.doc""" inertia_subgroup(P::NfOrdIdl; G::Vector{NfToNfMor}) -> Vector{NfToNfMor} @@ -1720,7 +1720,7 @@ Given a prime ideal $P$ in a normal number field, it returns a vector of the aut such that $\sigma_i(P) = P$ for all $i = 1,\dots, s$ and induce the identity on the residue field. If a subgroup $G$ of automorphisms is given, the output is the intersection of the inertia group with $G$. """ - + function inertia_subgroup(P::NfOrdIdl; G::Vector{NfToNfMor} = NfToNfMor[]) @assert isprime(P) O = order(P) @@ -1803,7 +1803,7 @@ end @doc Markdown.doc""" inertia_subgroup(K::AnticNumberField, P::NfOrdIdl, m::Map) -> Grp, GrpToGrp - + Given a prime ideal $P$ of a number field $K$ and a map `m` return from `automorphism_group(K)`, return the intertia subgroup of $P$ as a subgroup of the domain of `m`. @@ -1838,9 +1838,9 @@ end @doc Markdown.doc""" ramification_group(K::AnticNumberField, P::NfOrdIdl, m::Map) -> Grp, GrpToGrp - + Given a prime ideal $P$ of a number field $K$ and a map `m` return from -`automorphism_group(K)`, return the ramification group of $P$ as a subgroup of +`automorphism_group(K)`, return the ramification group of $P$ as a subgroup of the domain of `m`. """ function ramification_group(K::AnticNumberField, P::NfOrdIdl, i::Int, mG::Map) diff --git a/src/NumFieldOrd/NfOrd/Ideal/Relative.jl b/src/NumFieldOrd/NfOrd/Ideal/Relative.jl index cf5ba92f68..beafa28203 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/Relative.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/Relative.jl @@ -248,7 +248,7 @@ function prime_decomposition_type_nonindex(f::Map, p::NfOrdIdl, ZK = maximal_ord Gp = factor_shape(gcd(Fp(f(K(p.gen_two))), Fp(G))) else Fpp = PolynomialRing(GF(minimum(p), cached = false), cached = false)[1] - Gp = factor_shape(gcd(Fpp(f(K(p.gen_two))), Fpp(G))) + Gp = factor_shape(gcd(Fpp(f(K(p.gen_two))), Fpp(G))) end res = Vector{Tuple{Int, Int}}(undef, sum(values(Gp))) ind = 1 diff --git a/src/NumFieldOrd/NfOrd/Ideal/TwoElement.jl b/src/NumFieldOrd/NfOrd/Ideal/TwoElement.jl index bf26ee382d..b0aaa08b2f 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/TwoElement.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/TwoElement.jl @@ -30,7 +30,7 @@ Returns whether $A$ has normal two element generators. """ function has_2_elem_normal(A::NfAbsOrdIdl) #the one ideal <1, ?> is automatomatically normal> - if isdefined(A, :gens_normal) + if isdefined(A, :gens_normal) return isone(A.gen_one) || A.gens_normal > 1 end if has_2_elem(A) && defines_2_normal(A) @@ -51,7 +51,7 @@ function isconsistent(A::NfAbsOrdIdl) if has_2_elem_normal(A) && !iszero(A.gen_two) if !defines_2_normal(A) @show "Not 2 normal" - vshow(A) + vshow(A) return false end end @@ -284,7 +284,7 @@ function assure_2_normal_difficult(A::NfAbsOrdIdl) else d = Int[2, 3, 5, 7] end - + I = ideal(ZK, 1) for i = 1:length(d) m1, m = ppio(m, fmpz(d[i])) @@ -295,7 +295,7 @@ function assure_2_normal_difficult(A::NfAbsOrdIdl) lp = prime_decomposition(ZK, d[i]) v = Int[valuation_of_ideal_difficult(A1, p[1]) for p = lp] for i = 1:length(v) - if v[i] > 0 + if v[i] > 0 I *= lp[i][1]^v[i] end end @@ -341,7 +341,7 @@ function assure_2_normal(A::NfAbsOrdIdl) A.gens_normal = fmpz(1) return nothing end - + if norm(A) == 0 A.gen_one = fmpz(0) A.gen_two = zero(O) @@ -389,7 +389,7 @@ function assure_2_normal(A::NfAbsOrdIdl) mg = _minmod(m^2, gen) g = gcd(m, mg) - + if gcd(m, div(mg, g)) == 1 if gcd(m^n, _normmod(m^n, gen)) != norm(A) @vprint :NfOrd 2 "\n\noffending ideal $A \ngen is $gen\nWrong ideal\n" @@ -441,7 +441,7 @@ function assure_2_normal(A::NfAbsOrdIdl) if cnt > 100 && is2_normal_difficult(A) assure_2_normal_difficult(A) @hassert :NfOrd 1 isconsistent(A) - return + return end if cnt > 1000 error("Having a hard time making generators normal for $A") diff --git a/src/NumFieldOrd/NfOrd/Ideal/Valuation.jl b/src/NumFieldOrd/NfOrd/Ideal/Valuation.jl index edc81fb26f..f3d6473836 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/Valuation.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/Valuation.jl @@ -98,8 +98,8 @@ function val_func_index(p::NfOrdIdl) P = p.gen_one pi_2 = mod(pi.num.gen_two.elem_in_nf, P^2) M = representation_matrix(O(pi_2, false)) - - + + local val let P = P, O = O, M = M, p = p function val(x::nf_elem, no::fmpq = fmpq(0)) @@ -151,12 +151,12 @@ function val_fun_generic_small(p::NfOrdIdl) mul!(x, x, e) while x in O && v < 10 v += 1 - if !iszero(no) + if !iszero(no) nn = divexact(nn, norm(p)) if !divisible(nn, norm(p)) break end - end + end x = mod(x, p_mod) mul!(x, x, e) end @@ -191,13 +191,13 @@ function val_func_generic(p::NfOrdIdl) x = x*e while x in O v += 1 - if !iszero(no) + if !iszero(no) nn = divexact(nn, norm(p)) if !divisible(nn, norm(p)) break end x = mod(x, p_mod) - end + end mul!(x, x, e) end return v-valuation(d, P)*p.splitting_type[1] @@ -225,7 +225,7 @@ function _isindex_divisor(O::NfOrd, P::NfOrdIdl) @assert isprime_known(P) && isprime(P) if !isone(denominator(P.gen_two.elem_in_nf)) return true - end + end R = GF(Int(minimum(P)), cached = false) Rt, t = PolynomialRing(R, "x", cached = false) f = Rt(nf(P).pol) @@ -242,7 +242,7 @@ end function assure_valuation_function(p::NfOrdIdl) if isdefined(p, :valuation) return nothing - end + end O = order(p) K = nf(O) # for generic ideals @@ -265,7 +265,7 @@ function assure_valuation_function(p::NfOrdIdl) return nothing end P = minimum(p) - if degree(O) < 40 && p.splitting_type[1]*p.splitting_type[2] == degree(O) + if degree(O) < 40 && p.splitting_type[1]*p.splitting_type[2] == degree(O) local val3 let P = P, p = p function val3(s::nf_elem, no::fmpq = fmpq(0)) @@ -375,7 +375,7 @@ function valuation(a::nf_elem, p::NfOrdIdl, no::fmpq = fmpq(0)) end @hassert :NfOrd 0 !iszero(a) assure_valuation_function(p) - if p.is_prime != 1 + if p.is_prime != 1 return Int(p.valuation(a, no))::Int end #First, check the content of a as a polynomial. @@ -457,7 +457,7 @@ function valuation_naive(x::NfAbsOrdElem, B::NfAbsOrdIdl) return i end -function valuation_naive(x::T, B::NfAbsOrdIdl) where T <: Union{nf_elem, NfAbsNSElem} +function valuation_naive(x::T, B::NfAbsOrdIdl) where T <: Union{nf_elem, NfAbsNSElem} @assert !isone(B) i = 0 C = B diff --git a/src/NumFieldOrd/NfOrd/LLL.jl b/src/NumFieldOrd/NfOrd/LLL.jl index 0c4852c201..57c1c436be 100644 --- a/src/NumFieldOrd/NfOrd/LLL.jl +++ b/src/NumFieldOrd/NfOrd/LLL.jl @@ -51,7 +51,7 @@ function lll(A::NfOrdIdl, v::fmpz_mat = zero_matrix(FlintZZ, 1, 1); prec::Int = K = nf(order(A)) - if iszero(v) + if iszero(v) if istotally_real(K) #in this case the gram-matrix of the minkowski lattice is the trace-matrix #which is exact. @@ -161,16 +161,16 @@ function _lll(A::NfOrdIdl, v::fmpz_mat = zero_matrix(FlintZZ, 1, 1); prec::Int = end ## lattice has lattice disc = order_disc * norm^2 ## lll needs to yield a basis sth - ## l[1,1] = |b_i|^2 <= 2^((n-1)/2) disc^(1/n) + ## l[1,1] = |b_i|^2 <= 2^((n-1)/2) disc^(1/n) ## and prod(l[i,i]) <= 2^(n(n-1)/2) disc n = nrows(l) disc = abs(discriminant(order(A)))*norm(A)^2 * den^(2*n) * fmpz(2)^(2*sv) di = root(disc, n)+1 di *= fmpz(2)^(div(n+1,2)) * fmpz(2)^prec - if compare_index(l, 1, 1, di) > 0 + if compare_index(l, 1, 1, di) > 0 @v_do :ClassGroup 2 printstyled("LLL basis too large\n", color = :red); - @v_do :ClassGroup 3 println("bound is ", di, " value at ", 1, " is ", l[1,1]); + @v_do :ClassGroup 3 println("bound is ", di, " value at ", 1, " is ", l[1,1]); throw(LowPrecisionLLL()) end pr = prod_diagonal(l) @@ -196,7 +196,7 @@ end The same order, but with the basis now being LLL reduced wrt. the Minkowski metric. """ function lll(M::NfAbsOrd; prec::Int = 100) - + if isdefined(M, :lllO) return M.lllO::typeof(M) end @@ -207,7 +207,7 @@ function lll(M::NfAbsOrd; prec::Int = 100) M.lllO = On return On::typeof(M) end - + if degree(K) == 2 On = _lll_quad(M) M.lllO = On @@ -222,7 +222,7 @@ function lll(M::NfAbsOrd; prec::Int = 100) return On::typeof(M) end end - + return _lll(M, prec) end @@ -375,7 +375,7 @@ function _lll(M::NfAbsOrd, prec::Int) M1 = _ordering_by_T2(M) prec = max(prec, 10*n) prec = max(prec, 100 + 25*div(degree(M), 3) + Int(round(log(abs(discriminant(M)))))) - + if n > 10 if n > 100 prec, M1 = lll_precomputation(M1, prec) @@ -389,7 +389,7 @@ function _lll(M::NfAbsOrd, prec::Int) end function _ordering_by_T2(M::NfAbsOrd, prec::Int = 32) - + K = nf(M) B = basis(M, K) ints = fmpz[lower_bound(t2(x, prec), fmpz) for x in B] @@ -526,7 +526,7 @@ function _lll_sublattice(M::NfAbsOrd, u::Vector{Int}; prec = 100) @vprint :LLL 3 "Block of dimension $(l)\n" prec = max(prec, 10*n) local g::fmpz_mat - + bas = basis(M, K)[u] profile_sub = nbits(prod(Hecke.upper_bound(t2(x), fmpz) for x in bas)) @vprint :LLL 3 "Starting with profile $(profile_sub)\n" @@ -587,10 +587,10 @@ function _lll_with_parameters(M::NfAbsOrd, parameters::Tuple{Float64, Float64}, dM = sum(nbits(Hecke.upper_bound(t2(x), fmpz)) for x in basis(M, K)) @vprint :LLL 1 "Input profile: $(dM)\n" @vprint :LLL 1 "Target profile: $(nbits(disc^2)+divexact(n*(n-1), 2)) \n" - att = 0 + att = 0 while steps == -1 || att < steps att += 1 - if att > 3 + if att > 3 @vprint :LLL "Having a hard time computing a LLL basis" end @vprint :LLL 3 "Attempt number : $(att)\n" @@ -606,7 +606,7 @@ function _lll_with_parameters(M::NfAbsOrd, parameters::Tuple{Float64, Float64}, @vprint :LLL 3 "Minkowski matrix computed\n" diag_d = prod_diagonal(d) g = identity_matrix(FlintZZ, n) - + prec = div(prec, 2) shift!(d, -prec) #TODO: remove? @@ -614,7 +614,7 @@ function _lll_with_parameters(M::NfAbsOrd, parameters::Tuple{Float64, Float64}, fmpz_mat_entry_add_ui!(d, i, i, UInt(nrows(d))) end @vtime :LLL 3 ccall((:fmpz_lll, libflint), Nothing, (Ref{fmpz_mat}, Ref{fmpz_mat}, Ref{Nemo.lll_ctx}), d, g, ctx) - + if nbits(maximum(abs, g)) <= div(prec, 2) fl = true disc = abs(discriminant(M)) @@ -624,7 +624,7 @@ function _lll_with_parameters(M::NfAbsOrd, parameters::Tuple{Float64, Float64}, fl = false else pr = prod_diagonal(d) - if pr > fmpz(2)^(div(n*(n-1), 2)+(n*prec)) * disc + if pr > fmpz(2)^(div(n*(n-1), 2)+(n*prec)) * disc fl = false end end @@ -815,7 +815,7 @@ function reduce_ideal(I::FacElem{NfOrdIdl, NfOrdIdlSet}) @hassert :PID_Test 1 A*evaluate(a) == evaluate(I) return A, a end - + # The bound should be sqrt(disc) (something from LLL) @doc Markdown.doc""" @@ -955,7 +955,7 @@ function _new_power_reduce(A::NfOrdIdl, e::fmpz, Ainv::NfOrdIdl, d::fmpz) C2inv = IJ C2d = dCinv*dCinv end - + if isodd(e) if norm(A)*norm(C2) > bdisc a = divexact(short_elem_product(C2inv, Ainv), C2d*d) @@ -998,9 +998,9 @@ end # ################################################################################ -# Claus and Tommy: +# Claus and Tommy: # We express the basis of IJ in terms of the basis of I (I contains IJ) -# Then we compute the lll of the matrix of the coordinates. This way we get a +# Then we compute the lll of the matrix of the coordinates. This way we get a # better basis to start the computation of LLL #We compute the hnf to have a guaranteed bound on the entries function _lll_product_basis(I::NfOrdIdl, J::NfOrdIdl) @@ -1013,7 +1013,7 @@ function _lll_product_basis(I::NfOrdIdl, J::NfOrdIdl) divexact!(iA, iA, de) hnf_modular_eldiv!(iA, minimum(J)) @vtime :LLL 3 lll!(iA, lll_ctx(0.3, 0.51)) - @vtime :LLL 3 lll!(iA) + @vtime :LLL 3 lll!(iA) mul!(iA, iA, A) return iA end diff --git a/src/NumFieldOrd/NfOrd/LLLctx.jl b/src/NumFieldOrd/NfOrd/LLLctx.jl index 2d6432be7c..57687c2c34 100644 --- a/src/NumFieldOrd/NfOrd/LLLctx.jl +++ b/src/NumFieldOrd/NfOrd/LLLctx.jl @@ -94,7 +94,7 @@ function weighted_minkowski_gram_scaled(L::NfLattice, v::fmpz_mat, prec::Int) for i=1:n fmpz_mat_entry_add_ui!(g, i, i, UInt(nrows(d))) end - return g + return g end function lll(L::NfLattice, weights::fmpz_mat = zero_matrix(FlintZZ, 1, 1); starting_prec::Int = 100 + 25*div(dim(L), 3) + Int(round(log(abs(discriminant(L)))))) @@ -168,7 +168,7 @@ function _lll(L::NfLattice, weights::fmpz_mat, prec::Int) disc = discriminant(L) * fmpz(2)^(2*sv) di = root(disc, n) + 1 di *= fmpz(2)^(div(n+1,2)) * fmpz(2)^prec - if compare_index(d, 1, 1, di) > 0 + if compare_index(d, 1, 1, di) > 0 fl = false end pr = prod_diagonal(d) diff --git a/src/NumFieldOrd/NfOrd/LinearAlgebra.jl b/src/NumFieldOrd/NfOrd/LinearAlgebra.jl index cedf299f32..a85fc9087d 100644 --- a/src/NumFieldOrd/NfOrd/LinearAlgebra.jl +++ b/src/NumFieldOrd/NfOrd/LinearAlgebra.jl @@ -249,7 +249,7 @@ end @doc Markdown.doc""" coefficient_ideals(M::PMat) -Returns the vector of coefficient ideals. +Returns the vector of coefficient ideals. """ coefficient_ideals(M::PMat) = M.coeffs diff --git a/src/NumFieldOrd/NfOrd/MaxOrd/DedekindCriterion.jl b/src/NumFieldOrd/NfOrd/MaxOrd/DedekindCriterion.jl index 49012cb153..4de8cb83b2 100644 --- a/src/NumFieldOrd/NfOrd/MaxOrd/DedekindCriterion.jl +++ b/src/NumFieldOrd/NfOrd/MaxOrd/DedekindCriterion.jl @@ -50,8 +50,8 @@ function dedekind_test(O::NfOrd, p::fmpz, compute_order::Type{Val{S}} = Val{true Zyf = Zy(f) - fmodp = Kx(Zyf) - + fmodp = Kx(Zyf) + fac = factor_squarefree(fmodp) g = prod(x for x in keys(fac.fac)) @@ -68,10 +68,10 @@ function dedekind_test(O::NfOrd, p::fmpz, compute_order::Type{Val{S}} = Val{true @assert r == 0 setcoeff!(g1,i,q) end - + g1modp = Kx(g1) U = gcd(gcd(g, h), g1modp) - + if compute_order == Val{false} if isone(U) return true @@ -80,7 +80,7 @@ function dedekind_test(O::NfOrd, p::fmpz, compute_order::Type{Val{S}} = Val{true end else - pmaximal = (isone(U)) + pmaximal = (isone(U)) if pmaximal return true, O @@ -132,26 +132,26 @@ dedekind_poverorder(O::NfOrd, p::Integer) = dedekind_poverorder(O, FlintZZ(p)) function dedekind_test_composite(O::NfOrd, p::fmpz) @assert isequation_order(O) - + Zy = PolynomialRing(FlintZZ, "y")[1] R = ResidueRing(FlintZZ, p, cached = false) Rx = PolynomialRing(R, "x", cached=false)[1] f = Zy(nf(O).pol) - fmodp = Rx(f) - + fmodp = Rx(f) + # Now, I would like to have the squarefree factorization of fmodp # I go for the f/gcd(f,f') - + divs, gcdfderf = _gcd_with_failure(fmodp, derivative(fmodp)) - + if !isone(divs) return gcd(divs, p), O end - + sqff = divexact(fmodp, gcdfderf) - + # first build 1/p ( f - g*h) gZ = lift(Zy,sqff) @@ -159,14 +159,14 @@ function dedekind_test_composite(O::NfOrd, p::fmpz) g1 = f - gZ*hZ g1 = divexact(g1, p) - + g1modp = Rx(g1) - divs, par1 = _gcd_with_failure(gcdfderf, sqff) + divs, par1 = _gcd_with_failure(gcdfderf, sqff) if !isone(divs) return gcd(divs, p), O end - divs, U = _gcd_with_failure(par1, g1modp) + divs, U = _gcd_with_failure(par1, g1modp) if !isone(divs) return gcd(divs, p), O end diff --git a/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrd.jl b/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrd.jl index d5ece9f58a..ff983f8e7c 100644 --- a/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrd.jl +++ b/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrd.jl @@ -301,7 +301,7 @@ function _TameOverorderBL(O::NfOrd, lp::Vector{fmpz}) end else if isdefining_polynomial_nice(nf(O)) && iscoprime(index(OO), q) - q1, OOq = dedekind_test_composite(EquationOrder(K), q) + q1, OOq = dedekind_test_composite(EquationOrder(K), q) if !isone(q1) push!(M, q1) push!(M, divexact(q, q1)) diff --git a/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrdNS.jl b/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrdNS.jl index 43f05ac6c8..53d9cce3f6 100644 --- a/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrdNS.jl +++ b/src/NumFieldOrd/NfOrd/MaxOrd/MaxOrdNS.jl @@ -53,7 +53,7 @@ function _maximal_order_round_four(O::NfAbsOrd{<:NumField{fmpq}, <:NumFieldElem{ O1 = pmaximal_overorder(O, p) if valuation(discriminant(O1), p) < valuation(discriminant(OO),p) OO += O1 - end + end @vprint :NfOrd 1 "done\n" end end @@ -177,7 +177,7 @@ function _maximal_order_of_components(L::NfAbsNS) where {S, T} end end return B, lp, d -end +end function pradical_trace1(O::NfAbsOrd{NfAbsNS, NfAbsNSElem}, p::Union{Int, fmpz}) return pradical_trace(O, p) diff --git a/src/NumFieldOrd/NfOrd/MaxOrd/Polygons.jl b/src/NumFieldOrd/NfOrd/MaxOrd/Polygons.jl index e21526c6c3..c0945fc1a3 100644 --- a/src/NumFieldOrd/NfOrd/MaxOrd/Polygons.jl +++ b/src/NumFieldOrd/NfOrd/MaxOrd/Polygons.jl @@ -497,7 +497,7 @@ function _order_for_polygon_overorder(K::S, elt::Vector{T}, dold::fmpq = fmpq(0) break end - B = basis_matrix(prods, FakeFmpqMat) + B = basis_matrix(prods, FakeFmpqMat) hnf_modular_eldiv!(B.num, B.den, :lowerleft) dd = B.num[nrows(B) - degree(K) + 1, 1] @@ -605,11 +605,11 @@ function _decomposition(O::NfAbsOrd, I::NfAbsOrdIdl, Ip::NfAbsOrdIdl, T::NfAbsOr end k = (1-1/BigInt(p))^degree(O) < 0.1 - + if !k #The probability of finding a random generator is high for j in 1:length(ideals) - + P = ideals[j][1] f = P.splitting_type[2] #@vprint :NfOrd 1 "Chances for finding second generator: ~$((1-1/BigInt(p)))\n" @@ -688,7 +688,7 @@ function _decomposition(O::NfAbsOrd, I::NfAbsOrdIdl, Ip::NfAbsOrdIdl, T::NfAbsOr if issimple(nf(O)) && isdefining_polynomial_nice(nf(O)) u = O(mod(u.elem_in_nf, p)) end - + @hassert :NfOrd 1 containment_by_matrices(u, P) modulo = norm(P)*p if iszero(mod(norm(u), modulo)) diff --git a/src/NumFieldOrd/NfOrd/NarrowPicardGroup.jl b/src/NumFieldOrd/NfOrd/NarrowPicardGroup.jl index 691e5a9c7e..a2ba2bda7f 100644 --- a/src/NumFieldOrd/NfOrd/NarrowPicardGroup.jl +++ b/src/NumFieldOrd/NfOrd/NarrowPicardGroup.jl @@ -55,7 +55,7 @@ function narrow_picard_group(O::NfOrd) I0 = mC(C[i]) I = I0^(order(C[i])) push!(idealgens, I0) - # I is principal + # I is principal fl, a = isprincipal(I) @assert fl q = elem_to_Q(elem_in_nf(a)) @@ -106,7 +106,7 @@ function narrow_picard_group(O::NfOrd) end # A test - + _Q, = units_modulo_totally_positive_units(O) r, s = signature(nf(O)) @assert order(BS) == divexact(order(C) * 2^r, order(_Q)) diff --git a/src/NumFieldOrd/NfOrd/NfOrd.jl b/src/NumFieldOrd/NfOrd/NfOrd.jl index f986ff7f7c..bd714bea50 100644 --- a/src/NumFieldOrd/NfOrd/NfOrd.jl +++ b/src/NumFieldOrd/NfOrd/NfOrd.jl @@ -344,7 +344,7 @@ function index(O::NfAbsOrd; copy::Bool = true) !isone(denominator(i)) && error("Order does not contain the equation order") O.index = abs(numerator(i)) end - if copy + if copy return deepcopy(O.index) else return O.index @@ -529,7 +529,7 @@ Checks whether $a$ lies in $\mathcal O$. """ function in(a::nf_elem, O::NfOrd) @assert parent(a) == nf(O) - if isdefining_polynomial_nice(nf(O)) && contains_equation_order(O) + if isdefining_polynomial_nice(nf(O)) && contains_equation_order(O) d = denominator!(O.tcontain_fmpz, a) if isone(d) return true @@ -652,7 +652,7 @@ function norm_change_const(O::NfOrd; cached::Bool = true) if cached && isdefined(O, :norm_change_const) return O.norm_change_const::Tuple{BigFloat, BigFloat} end - + z = _norm_change_const(O.basis_nf) O.norm_change_const = z return z::Tuple{BigFloat, BigFloat} @@ -827,7 +827,7 @@ end any_order(K::NumberField) Return some order in $K$. In case the defining polynomial for $K$ -is monic and integral, this just returns the equation order. +is monic and integral, this just returns the equation order. In the other case $\mathbb Z[\alpha]\cap \mathbb Z[1/\alpha]$ is returned. """ @@ -1300,7 +1300,7 @@ function different(R::NfAbsOrd; proof::Bool = true) end if norm(D) == nD nt += 1 - if nt > 20 + if nt > 20 if proof if !isgorenstein(R) error("function only works for Gorenstein") diff --git a/src/NumFieldOrd/NfOrd/Overorders.jl b/src/NumFieldOrd/NfOrd/Overorders.jl index fe6a964d72..54e2efae0f 100644 --- a/src/NumFieldOrd/NfOrd/Overorders.jl +++ b/src/NumFieldOrd/NfOrd/Overorders.jl @@ -24,7 +24,7 @@ function defines_minimal_overorder(B::Vector, l::Vector) m[1, i] = numerator(x.coeffs[i]) end fl = iszero_mod_hnf!(m, M.num) - return fl, M + return fl, M end function defines_minimal_overorder(B::Vector{nf_elem}, l::Vector{nf_elem}) @@ -39,7 +39,7 @@ function defines_minimal_overorder(B::Vector{nf_elem}, l::Vector{nf_elem}) m[1, i] = numerator(coeff(x, i - 1)) end fl = iszero_mod_hnf!(m, M.num) - return fl, M + return fl, M end ################################################################################ @@ -250,7 +250,7 @@ function _minimal_overorders_nonrecursive_meataxe(O, M) end B = mA.bottom_snf_basis - + autos = GrpAbFinGenMap[] for i in 1:degree(O) @@ -331,7 +331,7 @@ function _minimal_poverorders_in_ring_of_multipliers(O, P, excess = Int[0], use_ d = degree(O) K = _algebra(O) #@assert isone(B[1]) - + autos = GrpAbFinGenMap[] for i in 1:degree(O) @@ -359,13 +359,13 @@ function _minimal_poverorders_in_ring_of_multipliers(O, P, excess = Int[0], use_ else subs = stable_subgroups(A, autos, minimal = true, op = (G, z) -> sub(G, z, false)) end - + for i in 1:mA.offset potential_basis[i] = mA.bottom_snf_basis[i] end offset = mA.offset - + #The degree of the extension divides the degree of a prime of M lying over P lQ = prime_ideals_over(M, P) rel_fs = fmpz[divexact(valuation(norm(Q), p), f) for Q in lQ] @@ -403,11 +403,11 @@ function _minimal_poverorders_in_ring_of_multipliers(O, P, excess = Int[0], use_ end end end - + if !(2 in fac) && length(lQ) == 1 && norm(P)^rel_fs[1] == order(A) return orders end - + for s in subs T = image(s[2], false) G = domain(T[2]) @@ -431,8 +431,8 @@ function _minimal_poverorders_in_ring_of_multipliers(O, P, excess = Int[0], use_ L = Order(K, hnf!(bL, :lowerleft), check = false, cached = false) push!(orders, L) end - - + + return orders end @@ -452,9 +452,9 @@ function _minimal_poverorders_at_2(O, P, excess = Int[]) push!(orders, O1) return orders end - + f = valuation(norm(P), 2) - + autos = GrpAbFinGenMap[] for i in 1:degree(O) @@ -471,7 +471,7 @@ function _minimal_poverorders_at_2(O, P, excess = Int[]) push!(autos, induce(mA, x -> x^2)) filter!(x -> !iszero(x.map), autos) - + potential_basis = Vector{elem_type(K)}(undef, d) offset = mA.offset @@ -531,11 +531,11 @@ function _minimal_poverorders_at_2(O, P, excess = Int[]) end end end - + if !(2 in fac) && length(lQ) == 1 && norm(P)^rel_fs[1] == order(A) return orders end - + for s in subs T = image(s[2], false) G = domain(T[2]) @@ -555,8 +555,8 @@ function _minimal_poverorders_at_2(O, P, excess = Int[]) L = Order(K, bL, check = false, cached = false) push!(orders, L) end - - + + return orders end @@ -771,7 +771,7 @@ function poverorders_one_step_generic(O, p::fmpz) end offset = mA.offset - + excess = 0 subs = stable_subgroups(A, autos, op = (G, z) -> sub(G, z, false)) @@ -792,7 +792,7 @@ function poverorders_one_step_generic(O, p::fmpz) end b, bmat = defines_order(K, deepcopy(potential_basis)) bmat = hnf!(bmat) - if b + if b push!(orders, Order(K, bmat)) else excess += 1 @@ -900,7 +900,7 @@ function poverorders_nonrecursive_meataxe(O, N, p::fmpz) end offset = mA.offset - + excess = 0 subs = stable_subgroups(A, autos, op = (G, z) -> sub(G, z, false)) @@ -921,7 +921,7 @@ function poverorders_nonrecursive_meataxe(O, N, p::fmpz) end b, bmat = defines_order(K, deepcopy(potential_basis)) bmat = hnf!(bmat) - if b + if b push!(orders, Order(K, bmat)) else excess += 1 @@ -985,9 +985,9 @@ function pprimary_overorders_bass(O, P) push!(res1, O2n) O3 = O2 P = prime_ideals_over(O2, primes[1])[1] - O2 = ring_of_multipliers(P) + O2 = ring_of_multipliers(P) end - + res2 = typeof(O)[] O3 = O1 O2 = ring_of_multipliers(primes[2]) @@ -996,7 +996,7 @@ function pprimary_overorders_bass(O, P) push!(res2, O2) O3 = O2 P = prime_ideals_over(O2, primes[2])[1] - O2 = ring_of_multipliers(P) + O2 = ring_of_multipliers(P) end append!(res, res1) append!(res, res2) @@ -1006,7 +1006,7 @@ function pprimary_overorders_bass(O, P) end end return res - + end ################################################################################ diff --git a/src/NumFieldOrd/NfOrd/RayClassGrp.jl b/src/NumFieldOrd/NfOrd/RayClassGrp.jl index eb07e34201..dc757b25d6 100644 --- a/src/NumFieldOrd/NfOrd/RayClassGrp.jl +++ b/src/NumFieldOrd/NfOrd/RayClassGrp.jl @@ -15,7 +15,7 @@ mutable struct MapRayClassGrp <: Map{GrpAbFinGen, FacElemMon{Hecke.NfOrdIdlSet}, fact_mod::Dict{NfOrdIdl, Int} #The factorization of the finite part of the defining modulus gens::Tuple{Vector{NfOrdIdl}, Vector{GrpAbFinGenElem}} - + #Dictionaries to cache preimages. Used in the action on the ray class group prime_ideal_preimage_cache::Dict{NfOrdIdl, GrpAbFinGenElem} prime_ideal_cache::Vector{NfOrdIdl} @@ -111,7 +111,7 @@ function __assure_princ_gen(c::Hecke.ClassGrpCtx{SMat{fmpz}}, nquo::Int) return res end -function _assure_princ_gen(mC::MapClassGrp) +function _assure_princ_gen(mC::MapClassGrp) if isdefined(mC, :princ_gens) return nothing end @@ -190,7 +190,7 @@ function class_as_ray_class(C::GrpAbFinGen, mC::MapClassGrp, exp_class::Function function disclog1(J::NfOrdIdl) return mQ(mC\(J)) end - + function disclog1(J::FacElem{NfOrdIdl, NfOrdIdlSet}) a = X[0] for (f, k) in J.fac @@ -214,9 +214,9 @@ function class_as_ray_class(C::GrpAbFinGen, mC::MapClassGrp, exp_class::Function mp1.clgrpmap = mC return Q, mp1 end - + local disclog - let X = X, mC = mC + let X = X, mC = mC function disclog(J::NfOrdIdl) return X((mC\J).coeff) end @@ -241,21 +241,21 @@ end function empty_ray_class(m::NfOrdIdl) O = order(parent(m)) X = abelian_group(Int[]) - + local exp let O = O function exp(a::GrpAbFinGenElem) return FacElem(Dict(ideal(O,1) => fmpz(1))) end end - + local disclog let X = X function disclog(J::Union{NfOrdIdl, FacElem{NfOrdIdl}}) return id(X) end end - + mp = Hecke.MapRayClassGrp() mp.header = Hecke.MapHeader(X, FacElemMon(parent(m)) , exp, disclog) mp.defining_modulus = (m, InfPlc[]) @@ -620,7 +620,7 @@ end # @doc Markdown.doc""" ray_class_group(m::NfOrdIdl, inf_plc::Vector{InfPlc}; n_quo::Int, lp::Dict{NfOrdIdl, Int}) -> GrpAbFinGen, MapRayClassGrp - + Given an ideal $m$ and a set of infinite places of $K$, this function returns the corresponding ray class group as an abstract group $\mathcal {Cl}_m$ and a map going from the group into the group of ideals of $K$ that are coprime to $m$. @@ -777,13 +777,13 @@ function ray_class_group(m::NfOrdIdl, inf_plc::Vector{InfPlc} = Vector{InfPlc}() R[j, ngens(C)+ind-1+s] = -a[1, s] end end - end - + end + X = abelian_group(R) if n_quo != -1 X.exponent = n_quo end - + local disclog let X = X, mC = mC, C = C, exp_class = exp_class, powers = powers, groups_and_maps = groups_and_maps, quo_rings = quo_rings, lH = lH, diffC = diffC, n_quo = n_quo, m = m, expon = expon invd = invmod(fmpz(diffC), expon) @@ -976,7 +976,7 @@ function ray_class_groupQQ(O::NfOrd, modulus::Int, inf_plc::Bool, n_quo::Int) R=ResidueRing(FlintZZ, modulus, cached=false) U, mU = unit_group_mod(R, n_quo) U.exponent = n_quo - if inf_plc + if inf_plc function disc_log1(I::NfOrdIdl) @assert gcd(minimum(I),modulus)==1 i = Int(mod(I.minimum, modulus)) @@ -1068,7 +1068,7 @@ function find_gens(mR::MapRayClassGrp; coprime_to::fmpz = fmpz(-1)) if coprime_to != -1 mm = lcm(mm, coprime_to) end - mm = lcm(mm, discriminant(EquationOrder(nf(O)))) + mm = lcm(mm, discriminant(EquationOrder(nf(O)))) if isdefined(mR, :gens) if coprime_to == -1 return mR.gens[1], mR.gens[2] @@ -1123,7 +1123,7 @@ function find_gens(mR::MapRayClassGrp; coprime_to::fmpz = fmpz(-1)) push!(lp, ideal(O, gens_m[i][1])) q, mq = quo(R, sR, false) s, ms = snf(q) - if order(s) == 1 + if order(s) == 1 if !isdefined(mR, :gens) mR.gens = (lp, sR) end @@ -1135,7 +1135,7 @@ function find_gens(mR::MapRayClassGrp; coprime_to::fmpz = fmpz(-1)) push!(lp, ideal(O, gens_m[i][1])) q, mq = quo(R, sR, false) s, ms = snf(q) - if order(s) == 1 + if order(s) == 1 if !isdefined(mR, :gens) mR.gens = (lp, sR) end diff --git a/src/NumFieldOrd/NfOrd/ResidueRing.jl b/src/NumFieldOrd/NfOrd/ResidueRing.jl index 93d0c54e46..7ca43936f0 100644 --- a/src/NumFieldOrd/NfOrd/ResidueRing.jl +++ b/src/NumFieldOrd/NfOrd/ResidueRing.jl @@ -402,7 +402,7 @@ function ==(x::AbsOrdQuoRing, y::AbsOrdQuoRing) return base_ring(x) === base_ring(y) && ideal(x) == ideal(y) end -function ==(x::AbsOrdQuoRingElem, y::AbsOrdQuoRingElem) +function ==(x::AbsOrdQuoRingElem, y::AbsOrdQuoRingElem) mod!(x.elem, parent(x)) mod!(y.elem, parent(x)) return x.elem == y.elem diff --git a/src/NumFieldOrd/NfOrd/ResidueRingMultGrp.jl b/src/NumFieldOrd/NfOrd/ResidueRingMultGrp.jl index e35fe2ab80..a2b919f043 100644 --- a/src/NumFieldOrd/NfOrd/ResidueRingMultGrp.jl +++ b/src/NumFieldOrd/NfOrd/ResidueRingMultGrp.jl @@ -92,7 +92,7 @@ function _multgrp(Q::NfOrdQuoRing, save_tame_wild::Bool = false; method = nothin G, GtoQ = _direct_product(groups, maps, prime_powers, Q, save_tame_wild) S, StoG, StoQ = snf(G, GtoQ) - + if save_tame_wild for s = 1:length(tame_ind) StoQ.tame[tame_ind[s][1]].disc_log = StoG\(G[tame_ind[s][2]]) #Relies on the ordering tame\wild in the construction! @@ -135,7 +135,7 @@ function _multgrp_mod_pv(p::NfOrdIdl, v::Int, pv::NfOrdIdl; method=nothing) @assert issnf(G2) wild_part[p] = G2toO gen1 = G1toO(G1[1]) - + rel1 = exponent(G1) # G2.snf[end] is the order of the biggest cyclic subgroup of G2 gen1_obcs = powermod(gen1, G2.snf[end], pnumv) @@ -147,7 +147,7 @@ function _multgrp_mod_pv(p::NfOrdIdl, v::Int, pv::NfOrdIdl; method=nothing) G1toO.disc_log = G[1] tame_part[p] = G1toO - + obcs_inv = gcdx(G2.snf[end], rel1)[2] function disc_log2(x::NfOrdQuoRingElem) y = OtoQ\x @@ -196,7 +196,7 @@ function _multgrp_mod_p(p::NfOrdIdl, pnumv::fmpz = fmpz(0)) res += 1 end return fmpz[res] - else + else return fmpz[pohlig_hellman(gen_quo,n,y;factor_n=factor_n, big_step_cache = big_step_cache)] end end @@ -235,7 +235,7 @@ end function _1_plus_p_mod_1_plus_pv(p::NfOrdIdl, v::Int, pv::NfOrdIdl, pnumv::fmpz = fmpz(0); method=nothing) @hassert :NfOrdQuoRing 2 isprime(p) @assert v >= 1 - + if method == :quadratic gens, rels, disc_log = _iterative_method(p,v;base_method=:quadratic,use_p_adic=false) elseif method == :artin_hasse @@ -325,7 +325,7 @@ end # -# Given generators and relations for groups of two consecutives steps, this function computes +# Given generators and relations for groups of two consecutives steps, this function computes # generators and relations for the product # function _expand(g::Vector{NfOrdElem}, M::fmpz_mat, h::Vector{NfOrdElem}, N::Vector{fmpz}, disc_log::Function, pl::NfOrdIdl) @@ -333,7 +333,7 @@ function _expand(g::Vector{NfOrdElem}, M::fmpz_mat, h::Vector{NfOrdElem}, N::Vec M1 = zero_matrix(FlintZZ, length(N), length(N)) for i = 1:length(N) M1[i, i] = N[i] - end + end return h, M1 end isempty(h) && return g,M @@ -361,7 +361,7 @@ function _expand(g::Vector{NfOrdElem}, M::fmpz_mat, h::Vector{NfOrdElem}, N::Vec end end append!(g,h) - + return g, Z end @@ -378,7 +378,7 @@ function _pu_mod_pv(pu::NfOrdIdl, pv::NfOrdIdl) @assert isone(N.den) G = abelian_group(N.num) S, mS=snf(G) - + #Generators gens=Vector{NfOrdElem}(undef, ngens(S)) for i=1:ngens(S) @@ -388,8 +388,8 @@ function _pu_mod_pv(pu::NfOrdIdl, pv::NfOrdIdl) add!(gens[i], gens[i], mod(x[j], S.snf[end])*b[j]) end end - - #Disclog + + #Disclog M = basis_mat_inv(pu, copy = false)*mS.imap x_fakemat2 = FakeFmpqMat(zero_matrix(FlintZZ, 1, ncols(M)), fmpz(1)) local disclog @@ -407,7 +407,7 @@ function _pu_mod_pv(pu::NfOrdIdl, pv::NfOrdIdl) end end return gens, S.snf, disclog - + end # Let p be a prime ideal above a prime number pnum. Let e = v_p(pnum) be @@ -470,7 +470,7 @@ function _artin_hasse_method(p::NfOrdIdl, u::Int, v::Int; pu::NfOrdIdl=p^u, pv:: local discrete_logarithm let Q = Q, pnum = pnum, dlog = dlog function discrete_logarithm(x::NfOrdElem) - res = dlog(artin_hasse_log(Q(x), pnum)) + res = dlog(artin_hasse_log(Q(x), pnum)) for i = 1:length(res) res[i] = mod(res[i], M[end]) end @@ -516,7 +516,7 @@ function artin_hasse_log(y::NfOrdQuoRingElem, pnum::fmpz) invi = invmod(fmpz(i), m) if iseven(i) sub!(s, s, invi*t) - else + else add!(s, s, invi*t) end end @@ -551,7 +551,7 @@ function _p_adic_method(p::NfOrdIdl, u::Int, v::Int; pu::NfOrdIdl=p^u, pv::NfOrd powers = Dict{Int, nf_elem}() local discrete_logarithm let Q = Q, p = p, v = v, dlog = dlog, powers = powers - function discrete_logarithm(b::NfOrdElem) + function discrete_logarithm(b::NfOrdElem) res = dlog(p_adic_log(Q, p, v, b, powers)) for i = 1:length(res) res[i] = mod(res[i], M[end]) @@ -608,7 +608,7 @@ function p_adic_exp(Q::NfOrdQuoRing, p::NfOrdIdl, v::Int, x::NfOrdElem) end add!(s, s, Q(inc.elem)) i_old = i - end + end return s.elem end @@ -644,9 +644,9 @@ function p_adic_log(Q::NfOrdQuoRing, p::NfOrdIdl, v::Int, y::NfOrdElem, powers:: val_p_xi += val_p_x val_p_xi - val_p_i >= v && continue mul!(xi, xi, x^(i-i_old)) - if iszero(val_pnum_i) + if iszero(val_pnum_i) inc = _divexact(Q(xi), fmpz(i)) - else + else if haskey(powers, val_p_i) el = powers[val_p_i] else @@ -657,7 +657,7 @@ function p_adic_log(Q::NfOrdQuoRing, p::NfOrdIdl, v::Int, y::NfOrdElem, powers:: denom = O(i*el, false) inc = divexact(Q(numer),Q(denom)) end - if isodd(i) + if isodd(i) add!(s, s, inc) else sub!(s, s, inc) @@ -670,9 +670,9 @@ function p_adic_log(Q::NfOrdQuoRing, p::NfOrdIdl, v::Int, y::NfOrdElem, powers:: val_p_xi += val_p_x val_p_xi - val_p_i >= v && continue mul!(xi, xi, x^(i-i_old)) - if iszero(val_pnum_i) + if iszero(val_pnum_i) inc = _divexact(Q(xi), fmpz(i)) - else + else if haskey(powers, val_p_i) el = powers[val_p_i] else @@ -683,7 +683,7 @@ function p_adic_log(Q::NfOrdQuoRing, p::NfOrdIdl, v::Int, y::NfOrdElem, powers:: denom = O(i*el, false) inc = divexact(Q(numer),Q(denom)) end - if isodd(i) + if isodd(i) add!(s, s, inc) else sub!(s, s, inc) @@ -796,26 +796,26 @@ function _prime_part_multgrp_mod_p(p::NfOrdIdl, prime::Int) @hassert :NfOrdQuoRing 2 isprime(p) O = order(p) Q, mQ = ResidueField(O,p) - + n = norm(p) - 1 s=valuation(n,prime) powerp=prime^s m=divexact(n,powerp) - + powm=divexact(powerp,prime) found=false g=Q(1) while found==false g = rand(Q) - if g != Q(0) + if g != Q(0) g=g^m - if g^powm != Q(1) + if g^powm != Q(1) found=true end end end inv=gcdx(m,fmpz(powerp))[2] - + function disclog(x::NfOrdElem) t=mQ(x)^m if powerp<10 @@ -923,10 +923,10 @@ function _find_gen(Q::FqFiniteField, powm::Vector{fmpz}, m::fmpz) g = g^m found = true for i=1:length(powm) - if isone(g^powm[i]) + if isone(g^powm[i]) found = false break - end + end end end return g @@ -944,7 +944,7 @@ function _n_part_multgrp_mod_p(p::NfOrdIdl, n::Int) k = gcd(npart, fmpz(n)) fac = factor(k) powm = fmpz[divexact(npart, x) for x in keys(fac.fac)] - + # # We search for a random element with the right order # @@ -971,8 +971,8 @@ function _n_part_multgrp_mod_p(p::NfOrdIdl, n::Int) mul!(el, el, w) end return fmpz[mod(fmpz(s)*inv, k)] - else - return fmpz[pohlig_hellman(w, k, t)*inv] + else + return fmpz[pohlig_hellman(w, k, t)*inv] end end end @@ -1041,16 +1041,16 @@ function _mult_grp_mod_n(Q::NfOrdQuoRing, y1::Dict{NfOrdIdl, Int}, y2::Dict{NfOr end tame_part[q].generators[1] = powermod(tame_part[q].generators[1], e1, minimum(idQ, copy = false)) end - + i += ngens(G2) nq = norm(q) - 1 @assert issnf(G2) obcs = G2.snf[end] # order of the biggest cyclic subgroup obcs_inv = gcdx(nq, obcs)[2] - + local disc_log2 - let Q = Q, nq = nq, G2toO = G2toO + let Q = Q, nq = nq, G2toO = G2toO function disc_log2(x::NfOrdElem) y = Q(x)^nq z = G2toO.discrete_logarithm(y.elem) @@ -1059,8 +1059,8 @@ function _mult_grp_mod_n(Q::NfOrdQuoRing, y1::Dict{NfOrdIdl, Int}, y2::Dict{NfOr end return z end - end - + end + G2toO2 = GrpAbFinGenToNfAbsOrdMap(G2, O, G2toO.generators, disc_log2)::GrpAbFinGenToAbsOrdMap{NfOrd, NfOrdElem} push!(maps, G2toO2) wild_part[q] = G2toO2 @@ -1338,7 +1338,7 @@ function _direct_product(groups::Vector{GrpAbFinGen}, maps::Vector{U}, ideals::V end gens = map(Q, [ g.elem for g in maps[1].generators ]) - + local disc_log1 let maps = maps function disc_log1(x::AbsOrdQuoRingElem) @@ -1416,8 +1416,8 @@ function _direct_product(groups::Vector{GrpAbFinGen}, maps::Vector{U}, ideals::V return result end end - - + + m = GrpAbFinGenToAbsOrdQuoRingMultMap(G, Q, generators, disc_log) if tame_wild m.tame = tame diff --git a/src/NumFieldOrd/NfOrd/StrongEchelonForm.jl b/src/NumFieldOrd/NfOrd/StrongEchelonForm.jl index f3d5a3de6d..4e6f8fae8c 100644 --- a/src/NumFieldOrd/NfOrd/StrongEchelonForm.jl +++ b/src/NumFieldOrd/NfOrd/StrongEchelonForm.jl @@ -166,8 +166,8 @@ function strong_echelon_form_naive!(A::Generic.Mat{NfOrdQuoRingElem}) end end - for i in j+1:m - + for i in j+1:m + if iszero(T[1, i]) continue end @@ -303,7 +303,7 @@ function z_split(I::NfOrdIdl) else nz = prod(b[i, i] for i in 2:n) end - + A = NfOrdIdl[] B = NfOrdIdl[] @@ -388,7 +388,7 @@ function _strong_echelon_form_split(M::MatElem{NfOrdQuoRingElem}, ideals1) m = ncols(M) M_cur = zero_matrix(Q, n, m) - + if length(ideals) == 1 return _strong_echelon_form_nonsplit(M) end @@ -439,7 +439,7 @@ function _strong_echelon_form_split(M::MatElem{NfOrdQuoRingElem}, ideals1) end end - + _assure_weakly_normal_presentation(I) gI = gcd(Q(I.gen_one), Q(I.gen_two)) @@ -478,7 +478,7 @@ end function mul!(a::MatElem{NfOrdQuoRingElem}, b::MatElem{NfOrdQuoRingElem}, c::NfOrdQuoRingElem) for i = 1:nrows(b) for j = 1:ncols(b) - mul!(a[i, j], b[i, j], c) + mul!(a[i, j], b[i, j], c) end end return a @@ -487,7 +487,7 @@ end function mul_special!(a::MatElem{NfOrdQuoRingElem}, b::NfOrdQuoRingElem) for i = 1:min(nrows(a), ncols(a)) for j = i:ncols(a) - mul!(a[i, j], a[i, j], b) + mul!(a[i, j], a[i, j], b) end end return a @@ -496,7 +496,7 @@ end function add_special!(a::MatElem{NfOrdQuoRingElem}, b::MatElem{NfOrdQuoRingElem}) for i = 1:min(nrows(b), ncols(b)) for j = i:ncols(b) - add!(a[i, j], a[i, j], b[i, j]) + add!(a[i, j], a[i, j], b[i, j]) end end return a @@ -505,7 +505,7 @@ end function add!(a::MatElem{NfOrdQuoRingElem}, b::MatElem{NfOrdQuoRingElem}, c::MatElem{NfOrdQuoRingElem}) for i = 1:nrows(b) for j = 1:ncols(b) - add!(a[i, j], b[i, j], c[i, j]) + add!(a[i, j], b[i, j], c[i, j]) end end return a @@ -526,7 +526,7 @@ end # a *:= l; # b *:= gi; # assert g eq 1; -# end if; +# end if; # assert 1 eq a+b; # r := r*b+m*a; # l *:= gi; @@ -572,7 +572,7 @@ function _strong_echelon_form_nonsplit!(M) ccall((:fmpz_mat_strong_echelon_form_mod, libflint), Nothing, (Ref{fmpz_mat}, Ref{fmpz}), forflint, modulus(RmodIZ)) for i in 1:min(n, m) for j = 1:i-1 - zero!(M[i, j]) + zero!(M[i, j]) end for j in i:m M[i, j] = Q(forflint[i, j]) @@ -669,7 +669,7 @@ function test_pseudohnf() end @show length(ideals) - + gc() @time pseudo_hnf_mod(pm, d, strategy = :split) gc() diff --git a/src/NumFieldOrd/NfOrd/TorsionUnits.jl b/src/NumFieldOrd/NfOrd/TorsionUnits.jl index 149c11d1c9..34b97d2acc 100644 --- a/src/NumFieldOrd/NfOrd/TorsionUnits.jl +++ b/src/NumFieldOrd/NfOrd/TorsionUnits.jl @@ -1,6 +1,6 @@ ################################################################################ # -# NfOrd/TorsionUnits.jl : Torsion units in generic number field orders +# NfOrd/TorsionUnits.jl : Torsion units in generic number field orders # # This file is part of Hecke. # @@ -160,7 +160,7 @@ function torsion_units_gen_order(O::T) where T <: Union{NfAbsOrd, NfRelOrd} u = g^divexact(ord, ord_p) while !(u in O) u = u^p_int - ord_p = divexact(ord_p, p_int) + ord_p = divexact(ord_p, p_int) end ord_O *= ord_p end @@ -203,17 +203,17 @@ function _torsion_units_lattice_enum(O::NfOrd) local i v = minkowski_map(x, p) w = minkowski_map(y, p) - + t = zero(parent(v[1])) - + for i in 1:r1 t = t + v[i]*w[i] end - + for i in (r1 + 1):(r1 + 2*r2) t = t + v[i]*w[i] end - + return t end @@ -225,7 +225,7 @@ function _torsion_units_lattice_enum(O::NfOrd) A = ArbField(p, false) M = ArbMatSpace(A, n, n,false)() - + while true A = ArbField(p, false) M = ArbMatSpace(A, n, n, false)() @@ -394,7 +394,7 @@ function _torsion_group_order_divisor(K::NumField) while true p = next_prime(p) if divides(numerator(d1), fmpz(p))[1] || divides(denominator(d1), fmpz(p))[1] - + end lP = prime_decomposition(OK, p) @@ -466,7 +466,7 @@ function _torsion_units_gen(K::AnticNumberField) ord *= Int(p)^(i) break end - end + end end _set_nf_torsion_units(K, (ord, gen)) return ord, gen @@ -502,7 +502,7 @@ function _torsion_units_gen(K::NumField) ord *= Int(p)^(i) break end - end + end end set_special(K, :torsion_units => (ord, gen)) return ord, gen diff --git a/src/NumFieldOrd/NfOrd/Unit.jl b/src/NumFieldOrd/NfOrd/Unit.jl index 599b4e5a89..70d718b44d 100644 --- a/src/NumFieldOrd/NfOrd/Unit.jl +++ b/src/NumFieldOrd/NfOrd/Unit.jl @@ -1,6 +1,6 @@ ################################################################################ # -# NfOrd/Units.jl : Units in generic number field orders +# NfOrd/Units.jl : Units in generic number field orders # # This file is part of Hecke. # diff --git a/src/NumFieldOrd/NfOrd/Unit/FindUnits.jl b/src/NumFieldOrd/NfOrd/Unit/FindUnits.jl index 9f5e682cb8..f03b5dfaba 100644 --- a/src/NumFieldOrd/NfOrd/Unit/FindUnits.jl +++ b/src/NumFieldOrd/NfOrd/Unit/FindUnits.jl @@ -28,7 +28,7 @@ function find_candidates(x::ClassGrpCtx, u::UnitGrpCtx, add::Int = 0) end push!(u.relations_used, xj) else - if xj in add_units + if xj in add_units continue end end @@ -43,7 +43,7 @@ function find_candidates(x::ClassGrpCtx, u::UnitGrpCtx, add::Int = 0) end push!(u.relations_used, xj) else - if xj in add_units + if xj in add_units continue end end @@ -126,7 +126,7 @@ function _unit_group_find_units(u::UnitGrpCtx, x::ClassGrpCtx; add_orbit::Bool = end end new_add = 0 - while not_larger < not_larger_bound + while not_larger < not_larger_bound add += new_add new_add = 2 k, add_units, s1 = find_candidates(x, u, add) @@ -185,11 +185,11 @@ function _unit_group_find_units(u::UnitGrpCtx, x::ClassGrpCtx; add_orbit::Bool = @v_do :UnitGroup 2 pushindent() m = add_unit!(u, y) - if m + if m new_add = 0 done[i] = true - not_larger = 0 - if has_full_rank(u) + not_larger = 0 + if has_full_rank(u) @vprint :UnitGroup 1 "improved reg, reg is $(tentative_regulator(u))\n" if first idx, expected_reg = _validate_class_unit_group(x, u) @@ -224,7 +224,7 @@ function _unit_group_find_units(u::UnitGrpCtx, x::ClassGrpCtx; add_orbit::Bool = @v_do :UnitGroup 2 popindent() end - + if has_full_rank(u) add_done = false for i = 1:length(elements) @@ -239,7 +239,7 @@ function _unit_group_find_units(u::UnitGrpCtx, x::ClassGrpCtx; add_orbit::Bool = done[i] = true continue end - add_done = add_unit!(u, elements[i]) || add_done + add_done = add_unit!(u, elements[i]) || add_done if expected_reg > divexact(abs(tentative_regulator(u)), 2) done = trues(length(elements)) not_larger = not_larger_bound + 1 @@ -263,14 +263,14 @@ function _unit_group_find_units(u::UnitGrpCtx, x::ClassGrpCtx; add_orbit::Bool = @vprint :UnitGroup 1 "Regulator of current unit group is $(u.tentative_regulator)\n" else @vprint :UnitGroup 1 "current rank is $(length(u.units)), need $r\n" - end + end @vprint :UnitGroup 1 "-"^80 * "\n" @vprint :UnitGroup 1 "Independent unit time: $time_indep\n" @vprint :UnitGroup 1 "Adding dependent unit time: $time_add_dep_unit\n" @vprint :UnitGroup 1 "Torsion test time: $time_torsion\n" - - + + if starting_full_rank return 1, div(starting_idx, _validate_class_unit_group(x, u)[1]) elseif has_full_rank(u) diff --git a/src/NumFieldOrd/NfOrd/Unit/IsUnit.jl b/src/NumFieldOrd/NfOrd/Unit/IsUnit.jl index 63736cb31b..1761586f56 100644 --- a/src/NumFieldOrd/NfOrd/Unit/IsUnit.jl +++ b/src/NumFieldOrd/NfOrd/Unit/IsUnit.jl @@ -10,7 +10,7 @@ Returns whether $x$ is invertible or not. """ function isunit(x::NfOrdElem) - return abs(norm(x)) == 1 + return abs(norm(x)) == 1 end _isunit(x::NfOrdElem) = isunit(x) diff --git a/src/NumFieldOrd/NfOrd/Unit/Map.jl b/src/NumFieldOrd/NfOrd/Unit/Map.jl index e170deeadd..880214409d 100644 --- a/src/NumFieldOrd/NfOrd/Unit/Map.jl +++ b/src/NumFieldOrd/NfOrd/Unit/Map.jl @@ -57,7 +57,7 @@ function unit_group_disc_log(x::FacElem{nf_elem, AnticNumberField} , U::UnitGrpC push!(res, r[i]) end return G(res) -end +end function unit_group_fac_elem(c::ClassGrpCtx; redo::Bool = false) u = unit_group_ctx(c, redo = redo) diff --git a/src/NumFieldOrd/NfOrd/Unit/Reduction.jl b/src/NumFieldOrd/NfOrd/Unit/Reduction.jl index 580a209f87..750e23d9fe 100644 --- a/src/NumFieldOrd/NfOrd/Unit/Reduction.jl +++ b/src/NumFieldOrd/NfOrd/Unit/Reduction.jl @@ -109,6 +109,6 @@ function reduce(u::Vector{T}, prec::Int = 32) where T return u end @vprint :UnitGroup 1 "trying to reduce further...\n" - end + end end diff --git a/src/NumFieldOrd/NfOrd/Unit/Relation.jl b/src/NumFieldOrd/NfOrd/Unit/Relation.jl index a9938ea1f4..74fe17134c 100644 --- a/src/NumFieldOrd/NfOrd/Unit/Relation.jl +++ b/src/NumFieldOrd/NfOrd/Unit/Relation.jl @@ -1,12 +1,12 @@ # Checks whether x[1]^z[1] * ... x[n]^z[n]*y^[n+1] is a torsion unit # This can be improved -function _check_relation_mod_torsion(x::Vector{FacElem{nf_elem, AnticNumberField}}, y::FacElem{nf_elem, AnticNumberField}, z::Vector{fmpz}, p::Int = 16) +function _check_relation_mod_torsion(x::Vector{FacElem{nf_elem, AnticNumberField}}, y::FacElem{nf_elem, AnticNumberField}, z::Vector{fmpz}, p::Int = 16) (length(x) + 1 != length(z)) && error("Lengths of arrays does not fit") r = x[1]^z[1] for i in 2:length(x) r = r*x[i]^z[i] - end + end w = r*y^z[length(z)] @@ -77,7 +77,7 @@ function _find_rational_relation!(rel::Vector{fmpz}, v::arb_mat, bound::fmpz) for i in 1:r rel[i] = numerator(z[i]*dlcm) - end + end rel[r + 1] = -dlcm diff --git a/src/NumFieldOrd/NfOrd/Unit/UnitGrpCtx.jl b/src/NumFieldOrd/NfOrd/Unit/UnitGrpCtx.jl index 15fc47c01b..4fc932049b 100644 --- a/src/NumFieldOrd/NfOrd/Unit/UnitGrpCtx.jl +++ b/src/NumFieldOrd/NfOrd/Unit/UnitGrpCtx.jl @@ -19,7 +19,7 @@ end ################################################################################ # -# Initialization +# Initialization # ################################################################################ @@ -31,7 +31,7 @@ end function _search_rational_relation(U::UnitGrpCtx{S}, y::S, bound::fmpz) where S p = _rel_add_precision(U) r = rank(U) - + @v_do :UnitGroup 1 pushindent() p, B = _conj_log_mat_cutoff_inv(U, p) @@ -83,10 +83,10 @@ function _add_dependent_unit!(U::UnitGrpCtx{S}, y::S, rel_only::Type{Val{T}} = V @assert has_full_rank(U) K = nf(order(U)) - + deg = degree(K) r = rank(U) - + rreg = tentative_regulator(U) bound = _denominator_bound_in_relation(rreg, K) @vprint :UnitGroup 1 "Adding dependent unit ... \n" @@ -302,10 +302,10 @@ function tentative_regulator(U::UnitGrpCtx) if isdefined(U, :tentative_regulator) rreg = U.tentative_regulator else - @vprint :UnitGroup 1 "Computing regulator of independent units with 64 bits ... \n" + @vprint :UnitGroup 1 "Computing regulator of independent units with 64 bits ... \n" rreg = regulator(U.units, 64) U.tentative_regulator = rreg - @vprint :UnitGroup 1 "done \n" + @vprint :UnitGroup 1 "done \n" end return rreg end diff --git a/src/NumFieldOrd/NfOrd/Zeta.jl b/src/NumFieldOrd/NfOrd/Zeta.jl index 7c8bc94623..d300aaf896 100644 --- a/src/NumFieldOrd/NfOrd/Zeta.jl +++ b/src/NumFieldOrd/NfOrd/Zeta.jl @@ -36,7 +36,7 @@ export zeta_log_residue ################################################################################ # -# Macros to make floating point life (hopefully) easier +# Macros to make floating point life (hopefully) easier # ################################################################################ @@ -94,7 +94,7 @@ function _approx_error_bf(disc::fmpz, degree::Int, Tc = BigFloat) logd_up = Tc(0)::Tc logd_down = Tc(0)::Tc sqrt_logd_up = Tc(0)::Tc - + setrounding(Tc,RoundDown) do logd_down = log(Tc(abs(disc))) end @@ -108,9 +108,9 @@ function _approx_error_bf(disc::fmpz, degree::Int, Tc = BigFloat) C1 = @with_round_down(Tc(FlintQQ(2324)//FlintQQ(1000)),Tc) C2 = @with_round_down(Tc(FlintQQ(388)//FlintQQ(100)),Tc) - C3 = Tc(2) + C3 = Tc(2) C4 = @with_round_down(Tc(FlintQQ(426)//FlintQQ(100)),Tc) - + function F(X)#(X::Tc) A1 = @with_round_down(C1*logd_down/(@with_round_up(sqrt(X)*log(3*X),Tc)),Tc) A2 = @with_round_down(1 + C2/@with_round_up(log(X/9),Tc),Tc) @@ -136,18 +136,18 @@ function _find_threshold(f, C, ste, decreasing::Bool, Tc = BigFloat) x1 = 2*x0 y = f(x1) end - + dista = abs(x0-x1) while !( y < C && dista < ste) - if y > C + if y > C x1 = x0 + 3*dista/2 else x1 = x0 - dista/2 end dista = abs(x1-x0) - + x0 = x1 y = f(x0) end @@ -167,11 +167,11 @@ end pro2 = logp*pm2 pro2 = pro2*m - + # Now the inverse inv2 = inv(pro2) - # Now sqrt(x)log(X)/p^(m/2)*m*p + # Now sqrt(x)log(X)/p^(m/2)*m*p pro3 = aa*inv2 pro3 = pro3 - 1 @@ -181,7 +181,7 @@ end function _comp_summand(R, p::Int, m::Int, aa::arb) return _comp_summand(R, fmpz(p), m, aa) end - + # Computing the g_K(X) term of Belabas-Friedmann function _term_bf(O::NfOrd, B::Int, R::ArbField) @@ -211,7 +211,7 @@ function _term_bf(O::NfOrd, B::Int, R::ArbField) prodx9 = logxx09 * sqrtxx09 # small helper function (is this fast?) - + while p < xx0 max_exp = _max_power_in(p, xx0) @@ -222,14 +222,14 @@ function _term_bf(O::NfOrd, B::Int, R::ArbField) summ = summ - summand end - #x += @elapsed + #x += @elapsed lP = prime_decomposition_type(O, p) for P in lP Pnorm = fmpz(p)^P[1] if Pnorm < xx0 max_exp = _max_power_in(Pnorm, xx0) - + for m in 1:max_exp summand = _comp_summand(R, Pnorm, m, prodx) summ = summ + summand @@ -238,7 +238,7 @@ function _term_bf(O::NfOrd, B::Int, R::ArbField) end if p < xx09 - + max_exp = _max_power_in(p, xx09) for m in 1:max_exp @@ -250,7 +250,7 @@ function _term_bf(O::NfOrd, B::Int, R::ArbField) Pnorm = fmpz(p)^P[1] if (Pnorm < xx09) max_exp = _max_power_in(Pnorm, xx09) - + for m in 1:max_exp summand = _comp_summand(R, Pnorm, m, prodx9) summ = summ - summand @@ -280,7 +280,7 @@ function _residue_approx_bf(O::NfOrd, error::Float64) der = Int(20) - @assert error > 0.5^der + @assert error > 0.5^der error_prime = @with_round_down(error - 0.5^der, BigFloat) @@ -297,7 +297,7 @@ function _residue_approx_bf(O::NfOrd, error::Float64) x0 = Int(ceil(_find_threshold(F, error_prime, Float64(10), true, Float64))) x0 = x0 + 1 - prec = 64 + prec = 64 val = _term_bf(O, x0, ArbField(prec, cached = false)) diff --git a/src/NumFieldOrd/NfOrd/norm_eqn.jl b/src/NumFieldOrd/NfOrd/norm_eqn.jl index 5dd8fdd0fb..9e188a2f91 100644 --- a/src/NumFieldOrd/NfOrd/norm_eqn.jl +++ b/src/NumFieldOrd/NfOrd/norm_eqn.jl @@ -8,15 +8,15 @@ function norm_1_generators(A::Vector{NfOrdIdl}) f = matrix(FlintZZ, 1, length(A), [degree(x) for x = A]) k = nullspace(f)[2] - + id = [FacElem(A, [k[i,j] for i=1:length(A)]) for j=1:ncols(k)] - return id + return id end @doc Markdown.doc""" norm_equation(K::AnticNumerField, a) -> nf_elem -For $a$ an integer or rational, try to find $T \in K$ s.th. +For $a$ an integer or rational, try to find $T \in K$ s.th. $N(T) = a$. Raises an error if unsuccessful. """ function norm_equation(K::AnticNumberField, a) @@ -52,15 +52,15 @@ For a fmpz $a$, try to find $T \in K$ s.th. $N(T) = a$ holds. If successful, return true and $T$, otherwise false and some element. In \testtt{extra} one can pass in additional prime numbers that are allowed to occur in the solution. This will then be supplemented. -The element will be returned in factored form. +The element will be returned in factored form. """ function isnorm(K::AnticNumberField, a::fmpz; extra::Vector{fmpz}=fmpz[]) L = lll(maximal_order(K)) - C, mC = narrow_class_group(L) + C, mC = narrow_class_group(L) # println("narrow group is : $C") S = union(Set(keys(factor(a).fac)), Set(keys(factor(discriminant(L)).fac))) S = union(S, Set(extra)) - + g = Set(elem_type(C)[]) for p = S P = prime_ideals_over(L, typeof(p)[p]) diff --git a/src/NumFieldOrd/NumFieldOrdElem.jl b/src/NumFieldOrd/NumFieldOrdElem.jl index b7ca93e1c6..207a636915 100644 --- a/src/NumFieldOrd/NumFieldOrdElem.jl +++ b/src/NumFieldOrd/NumFieldOrdElem.jl @@ -312,7 +312,7 @@ end @doc Markdown.doc""" absolute_tr(a::NumFieldOrdElem) -> fmpz -Return the absolute trace as an integer. +Return the absolute trace as an integer. """ absolute_tr(a::NfAbsOrdElem) = tr(a) absolute_tr(a::NfRelOrdElem) = absolute_tr(tr(a)) @@ -324,7 +324,7 @@ absolute_tr(a::NfRelOrdElem) = absolute_tr(tr(a)) ################################################################################ @doc Markdown.doc""" - norm(a::NumFieldOrdElem) + norm(a::NumFieldOrdElem) Returns the norm of $a$ as an element in the base ring. """ @@ -336,7 +336,7 @@ end @doc Markdown.doc""" absolute_norm(a::NumFieldOrdElem) -> fmpz -Return the absolute norm as an integer. +Return the absolute norm as an integer. """ absolute_norm(a::NfAbsOrdElem) = norm(a) absolute_norm(a::NfRelOrdElem) = absolute_norm(norm(a)) diff --git a/src/NumFieldOrd/NumFieldOrdIdl.jl b/src/NumFieldOrd/NumFieldOrdIdl.jl index 22a83e7eb0..26c3baf8db 100644 --- a/src/NumFieldOrd/NumFieldOrdIdl.jl +++ b/src/NumFieldOrd/NumFieldOrdIdl.jl @@ -162,7 +162,7 @@ function uniformizer(P::NfAbsOrdIdl) if isdefined(P, :gens_normal) && P.gens_normal == p return P.gen_two elseif isone(ramification_index(P)) - return order(P)(p) + return order(P)(p) else if p > 250 r = 500 # should still have enough elements... @@ -358,7 +358,7 @@ function isintegral(I::NfOrdFracIdl) return denominator(I) == 1 end -function isintegral(a::NfRelOrdFracIdl) +function isintegral(a::NfRelOrdFracIdl) @assert ismaximal(order(a)) return defines_ideal(order(a), basis_pmatrix(a, copy = false)) end diff --git a/src/QuadForm/Enumeration.jl b/src/QuadForm/Enumeration.jl index 33ca70e15c..bcffb76029 100644 --- a/src/QuadForm/Enumeration.jl +++ b/src/QuadForm/Enumeration.jl @@ -47,7 +47,7 @@ function __pseudo_cholesky!(C::fmpq_mat, G) C[i, j] = G[i, j] end end - for i = 1:limit-1 + for i = 1:limit-1 for j = i+1:limit C[j, i] = deepcopy(C[i, j]) C[i, j] = divexact(C[i, j], C[i, i]) @@ -82,7 +82,7 @@ function __pseudo_cholesky!(C::Matrix{fmpq}, G) C[i, j] = G[i, j] end end - for i = 1:limit-1 + for i = 1:limit-1 for j = i+1:limit C[j, i] = _deepcopy_cheap(C[i, j]) #C[i, j] = divexact(C[i, j], C[i, i]) @@ -144,7 +144,7 @@ function __enumerate_gram(G::fmpz_mat, l::Union{Nothing, Int}, c::Int) @hassert :Lattice 1 length(__enumerate_gram(G, l, c, Rational{Int128})) == length(res) else @vprint :Lattice 1 "Enumerating using fmpq\n" - res = __enumerate_cholesky(Q, c) + res = __enumerate_cholesky(Q, c) end @hassert :Lattice 1 length(__enumerate_gram(G, l, c, fmpq)) == length(res) return res @@ -208,7 +208,7 @@ function __enumerate_cholesky(Q::Matrix{fmpq}, l::Union{Int, fmpz, Nothing}, c:: #_t = isqrt(FlintZZ(floor(divexact(T[i], Q[i, i])))) #_new_upp = Int(FlintZZ(ceil(_t + 2 - U[i]))) #_new_low = Int(FlintZZ(floor(-(_t + 2) - U[i]))) - 1 - + @inbounds _new_upp, _new_low = _compute_bounds(T[i], Qd[i], U[i], t1, t2, t3, t4, t5) @inbounds x[i] = _new_low @@ -231,7 +231,7 @@ function __enumerate_cholesky(Q::Matrix{fmpq}, l::Union{Int, fmpz, Nothing}, c:: i = i - 1 #U[i] = sum(Q[i, j] * x[j] for j in (i + 1):n) update_U!(U, Q, i, n, x, t1, t2) - @goto compute_bounds + @goto compute_bounds end end @@ -323,14 +323,14 @@ function __enumerate_cholesky(Q::Matrix{S}, l::Union{Int, Nothing}, c::Int) wher #_t = isqrt(FlintZZ(floor(divexact(T[i], Q[i, i])))) #_new_upp = Int(FlintZZ(ceil(_t + 2 - U[i]))) #_new_low = Int(FlintZZ(floor(-(_t + 2) - U[i]))) - 1 - + _new_upp, _new_low = @inbounds _compute_bounds(T[i], Qd[i], U[i]) @inbounds x[i] = _new_low @inbounds L[i] = _new_upp @label main_loop - + @inbounds x[i] = x[i] + 1 @inbounds if x[i] > L[i] @@ -347,7 +347,7 @@ function __enumerate_cholesky(Q::Matrix{S}, l::Union{Int, Nothing}, c::Int) wher #U[i] = sum(Q[i, j] * x[j] for j in (i + 1):n) update_U!(U, Q, i, n, x) - @goto compute_bounds + @goto compute_bounds end end diff --git a/src/QuadForm/Herm/Genus.jl b/src/QuadForm/Herm/Genus.jl index 5d45f2a2df..c5adebe027 100644 --- a/src/QuadForm/Herm/Genus.jl +++ b/src/QuadForm/Herm/Genus.jl @@ -1500,7 +1500,7 @@ function genus_generators(L::HermLat) E = nf(R) D = different(R) b, P0, bad = smallest_neighbour_prime(L) - + local bad_prod::ideal_type(base_ring(R)) if isempty(bad) diff --git a/src/QuadForm/Herm/GenusRep.jl b/src/QuadForm/Herm/GenusRep.jl index ebb3e61fbe..5d02a5144d 100644 --- a/src/QuadForm/Herm/GenusRep.jl +++ b/src/QuadForm/Herm/GenusRep.jl @@ -98,7 +98,7 @@ function genus_representatives(L::HermLat; max = inf, use_auto::Bool = true, missing_mass = Ref(mass) local result::Vector{typeof(L)} - + if definite result = typeof(L)[] for L in LL @@ -291,7 +291,7 @@ function neighbour(L, B, xG, x, h, P, CC, split) local C::ideal_type(R) - if CC isa Int + if CC isa Int C = split ? involution(L)(P) : P else C = CC @@ -353,7 +353,7 @@ function iterated_neighbours(L::HermLat, P; use_auto = false, max = inf, #require IsModular(L, P) : "The lattice must be locally modular"; #require Rank(L) ge 2: "The rank of the lattice must be at least 2"; #require IsIsotropic(L, P): "The lattice must be locally isotropic"; - + if callback == false && isdefinite(L) _callback = stdcallback else @@ -377,7 +377,7 @@ function iterated_neighbours(L::HermLat, P; use_auto = false, max = inf, no_lattices = length(result) - oldlength oldlength = length(result) if use_mass && no_lattices > 0 - _mass = _mass - sum(fmpq[1//automorphism_group_order(result[i]) for i in (length(result) - no_lattices + 1):length(result)]) + _mass = _mass - sum(fmpq[1//automorphism_group_order(result[i]) for i in (length(result) - no_lattices + 1):length(result)]) if iszero(_mass) break end diff --git a/src/QuadForm/Herm/LocallyIsometricSublattice.jl b/src/QuadForm/Herm/LocallyIsometricSublattice.jl index efc7fab0a0..0e9d8a4e4d 100644 --- a/src/QuadForm/Herm/LocallyIsometricSublattice.jl +++ b/src/QuadForm/Herm/LocallyIsometricSublattice.jl @@ -261,7 +261,7 @@ function _locally_isometric_sublattice_even_ramified(M, L, p, P, absolute_map) KM = map_entries(x -> E(h\x), _KM) _new_pmat = _sum_modules(pseudo_matrix(KM * BBM), pM) LL = lattice(ambient_space(M), _new_pmat) - + if islocally_isometric(X, LL, p) break end @@ -287,7 +287,7 @@ function locally_isometric_sublattice(M::HermLat, L::HermLat, p) absolute_map = absolute_simple_field(ambient_space(M))[2] P = D[1][1] - + if length(D) == 2 # split case LL = _locally_isometric_sublattice_split(M, L, p, P, absolute_map) elseif length(D) == 1 && D[1][2] == 1 # inert case diff --git a/src/QuadForm/Herm/Mass.jl b/src/QuadForm/Herm/Mass.jl index dd3968ccfc..c066fcea57 100644 --- a/src/QuadForm/Herm/Mass.jl +++ b/src/QuadForm/Herm/Mass.jl @@ -62,7 +62,7 @@ function _local_factor_dyadic(L::HermLat, p) t = iseven(e) ? k1 : k0 return (q^t + 1) * lf end - + if !b if iseven(e) return q^(m * (f2 - l) - k1) * (q^m1 - 1) * lf @@ -221,7 +221,7 @@ function local_factor(L::HermLat, p) if length(s) == 1 && !ram return fmpq(1) end - + m = rank(L) local f::fmpq if ram @@ -279,7 +279,7 @@ function _standard_mass(L::HermLat, prec::Int = 10) RR = ArbField(wprec, cached = false) _stdmass = RR(stdmass) - + local relzeta::arb while true diff --git a/src/QuadForm/Lattices.jl b/src/QuadForm/Lattices.jl index e542a5d184..9018cc68e3 100644 --- a/src/QuadForm/Lattices.jl +++ b/src/QuadForm/Lattices.jl @@ -877,7 +877,7 @@ function assert_has_automorphisms(L::AbsLat{<: NumField}; redo::Bool = false) end # Create the automorphism context and compute generators as well as orders - + C = ZLatAutoCtx(ZgramL) fl, Csmall = try_init_small(C) if fl @@ -962,7 +962,7 @@ end @doc Markdown.doc""" automorphism_group_generators(L::AbsLat; ambient_representation = true) -Given a definite lattice $L$ returns generators for the automorphism group of $L$. +Given a definite lattice $L$ returns generators for the automorphism group of $L$. If `ambient_representation` is `true` (the default), the transformations are represented with respect to the ambient space of $L$. Otherwise, the transformations are represented with respect to the (pseudo-)basis of $L$. @@ -1092,7 +1092,7 @@ function isisometric(L::AbsLat{<: NumField}, M::AbsLat{<: NumField}; fl, s1 = can_solve_with_solution(BabsmatL, basis_matrix_of_rational_span(L), side = :left) fl, s2 = can_solve_with_solution(basis_matrix_of_rational_span(M), BabsmatM, side = :left) T = s1 * change_base_ring(E, T) * s2 - @hassert :Lattice 1 T * gram_matrix(rational_span(M)) * + @hassert :Lattice 1 T * gram_matrix(rational_span(M)) * _map(transpose(T), involution(L)) == gram_matrix(rational_span(L)) if !ambient_representation @@ -1120,7 +1120,7 @@ end function maximal_sublattices(L::AbsLat, p; use_auto::Bool = false, callback = false, max = inf) @req base_ring(L) == order(p) "asdsd" - + B = local_basis_matrix(L, p, type = :submodule) n = nrows(B) R = base_ring(L) diff --git a/src/QuadForm/LineOrbits.jl b/src/QuadForm/LineOrbits.jl index cf7db5ee2e..e7f9a3ba6b 100644 --- a/src/QuadForm/LineOrbits.jl +++ b/src/QuadForm/LineOrbits.jl @@ -337,7 +337,7 @@ function _line_orbits(G::Vector) end res = Tuple{eltype(P), Int}[] - + visited = trues(l) sofar = zero(BigInt) newline = zero_matrix(K, 1, n) @@ -346,7 +346,7 @@ function _line_orbits(G::Vector) # temporary variables in some cases while sofar < l pt = findfirst(visited) - @assert pt !== nothing + @assert pt !== nothing visited[pt] = false norb = 1 cnd = 1 @@ -407,13 +407,13 @@ function _normalize!(x::gfp_mat) el = x[1, j] if !iszero(el) piv = j - ell = inv(el) + ell = inv(el) break end end @assert piv != 0 - + for j in (piv+1):ncols(x) el = x[j] * ell Nemo.setindex_raw!(x, el.data, 1, j) @@ -465,13 +465,13 @@ function _normalize!(x::MatElem{gfp_fmpz_elem}) el = x[1, j] if !iszero(el) piv = j - ell = inv(el) + ell = inv(el) break end end @assert piv != 0 - + for j in (piv+1):ncols(x) t = x[1, j] mul!(t, t, ell) @@ -560,7 +560,7 @@ function _normalize!(x::fq_nmod_mat) end @assert piv != 0 - + for j in (piv+1):ncols(x) el = ccall((:fq_nmod_mat_entry, libflint), Ptr{fq_nmod}, (Ref{fq_nmod_mat}, Int, Int), x, 0, j - 1) @@ -692,7 +692,7 @@ function _normalize!(x::fq_mat) end @assert piv != 0 - + for j in (piv+1):ncols(x) el = ccall((:fq_mat_entry, libflint), Ptr{fq}, (Ref{fq_mat}, Int, Int), x, 0, j - 1) diff --git a/src/QuadForm/Misc.jl b/src/QuadForm/Misc.jl index c49321c645..e62fb34172 100644 --- a/src/QuadForm/Misc.jl +++ b/src/QuadForm/Misc.jl @@ -133,7 +133,7 @@ function _find_special_class(u, p) K = nf(R) @assert valuation(u, p) == 0 k, _h = ResidueField(R, p) - h = extend(_h, K) + h = extend(_h, K) fl, s = issquare_with_sqrt(h(u)) @assert fl u = divexact(u, (h\s)^2) @@ -141,16 +141,16 @@ function _find_special_class(u, p) e = valuation(2, p) pi = elem_in_nf(uniformizer(p)) val = isone(u) ? inf : valuation(u - 1, p) - while val < 2 * e + while val < 2 * e if isodd(val) return u end fl, s = issquare_with_sqrt(h((u - 1)//pi^val)) - @assert fl + @assert fl # TODO:FIXME the div is wrong for negative valuations I think @assert val >= 0 u = divexact(u, (1 + (h\s) * pi^(div(val, 2)))^2) - val = valuation(u - 1, p) + val = valuation(u - 1, p) end kt, t = PolynomialRing(k, "t", cached = false) return val == 2 * e && isirreducible(kt([h(divexact(u - 1, 4)), one(k), one(k)])) ? u : one(K) @@ -320,7 +320,7 @@ function _idempotents(x::Vector) #println("V:\n", sprint(show, "text/plain", V)) m = lcm(fmpz[minimum(x[i], copy = false) for i in 1:length(x)]) - + H = hnf_modular_eldiv!(V, m) # upper right for i in 2:(1 + d) @@ -676,7 +676,7 @@ end ################################################################################ # -# Treat FlintQQ as a number field +# Treat FlintQQ as a number field # ################################################################################ diff --git a/src/QuadForm/Morphism.jl b/src/QuadForm/Morphism.jl index d7c24c4722..b6faee383f 100644 --- a/src/QuadForm/Morphism.jl +++ b/src/QuadForm/Morphism.jl @@ -198,7 +198,7 @@ mutable struct ZLatAutoCtx{S, T, V} for i in 1:length(z.G) z.issymmetric[i] = issymmetric(z.G[i]) end - + return z end @@ -228,7 +228,7 @@ function init(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1), use_dic # Compute the necessary short vectors r = length(C.G) - + n = nrows(C.G[1]) if bound == -1 @@ -240,7 +240,7 @@ function init(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1), use_dic @vprint :Lattice 1 "Computing short vectors of length $bound\n" - @vtime :Lattice 1 V = _short_vectors_gram_integral(C.G[1], bound) + @vtime :Lattice 1 V = _short_vectors_gram_integral(C.G[1], bound) vectors = Vector{fmpz_mat}(undef, length(V)) @@ -257,7 +257,7 @@ function init(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1), use_dic k += 1 end if v[k] < 0 - v .*= -1 + v .*= -1 end vfmpz = matrix(FlintZZ, 1, n, v) @@ -296,12 +296,12 @@ function init(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1), use_dic for i in 1:dim(C) z[1, C.per[i]] = 1 k = find_point(z, C.V) - C.std_basis[i] = k + C.std_basis[i] = k z[1, C.per[i]] = 0 end end - # + # C.v = Vector{fmpz_mat}(undef, length(C.G)) @@ -338,7 +338,7 @@ function init(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1), use_dic C.ng[1] = 1 # Calculate orbit lengths - + nH = 0 for i in 1:dim(C) @@ -385,7 +385,7 @@ function try_init_small(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1 end @assert bound > 0 - @vtime :Lattice 1 V = _short_vectors_gram_integral(C.G[1], bound) + @vtime :Lattice 1 V = _short_vectors_gram_integral(C.G[1], bound) vectors = Vector{Vector{Int}}(undef, length(V)) @@ -426,7 +426,7 @@ function try_init_small(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1 end if v[k] < 0 - v .*= -1 + v .*= -1 end if vectors_nbits > abs_maxbits_vectors @@ -454,7 +454,7 @@ function try_init_small(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1 end V = VectorList(vectors, lengths, use_dict) - + Csmall.V = V @@ -482,12 +482,12 @@ function try_init_small(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1 for i in 1:dim(Csmall) z[Csmall.per[i]] = 1 k = find_point(z, V) - Csmall.std_basis[i] = k + Csmall.std_basis[i] = k z[Csmall.per[i]] = 0 end end - # + # Csmall.v = Vector{Matrix{Int}}(undef, length(C.G)) @@ -529,7 +529,7 @@ function try_init_small(C::ZLatAutoCtx, auto::Bool = true, bound::fmpz = fmpz(-1 Csmall.ng[1] = 1 # Calculate orbit lengths - + nH = 0 for i in 1:dim(Csmall) @@ -576,7 +576,7 @@ end # vector sums */ # scpvecs(&comb[i].list, &sumveclist, i, fp.e, flags.DEPTH, V, F); #/* compute a basis for the lattice that is generated by the vector sums and -# a transformation matrix that expresses the basis in terms of the +# a transformation matrix that expresses the basis in terms of the # vector sums */ # base(&comb[i], &sumvecbase, sumveclist, F.A[0], dim); # if (flags.PRINT == 1) @@ -683,11 +683,11 @@ function compute_short_vectors(C::ZLatAutoCtx, max::fmpz = fmpz(-1)) for k in 2:length(C.G) z[k] = (m * C.G[k] * mt)[1, 1] end - C.V[i] = m + C.V[i] = m C.V_length[i] = z end #@show length(C.V) - C.max = max + C.max = max return C end @@ -762,7 +762,7 @@ function possible(V, W, F, Ftr, _issymmetric, n, f, per, I, J) end # length is correct - + good_scalar = true @inbounds for k in 1:f @@ -810,10 +810,10 @@ end # for j from per[i] to per[dim-1] the # value f[i][j] in the fingerprint f is # the number of vectors, which have the -# same scalar product with the -# basis-vectors per[0]...per[i-1] as the -# basis-vector j and the same length as -# this vector with respect to all +# same scalar product with the +# basis-vectors per[0]...per[i-1] as the +# basis-vector j and the same length as +# this vector with respect to all # invariant forms function fingerprint(C::ZLatAutoCtx) @@ -856,7 +856,7 @@ function fingerprint(C::ZLatAutoCtx) per[mini], per[i] = per[i], per[mini] - # Set entries below the minimal entry to zero + # Set entries below the minimal entry to zero for j in (i + 1):n fp[j, per[i]] = 0 end @@ -931,7 +931,7 @@ Base.replace!(::typeof(-), m::fmpz_mat) = -m function _operate(point, A, V, tmp) # V.v is a sorted list of length V.n of vectors # of dimension V.dim, the number of V.v[nr]*A in -# the list is returned, where a negative number +# the list is returned, where a negative number # indicates the negative of a vector tmp = _vec_times_matrix!(tmp, V[point], A) #w = V[abs(point)] * A @@ -1012,7 +1012,7 @@ function _orbitlen_naive(point::Int, orblen::Int, G::Vector{fmpz_mat}, nG::Int, while !isempty(working_list) current_point = pop!(working_list) for i in 1:nG - if current_point < 0 + if current_point < 0 new_point_coord = -V[abs(current_point)] * G[i] else new_point_coord = V[current_point] * G[i] @@ -1152,7 +1152,7 @@ function auto(C::ZLatAutoCtx{S, T, U}) where {S, T, U} end end if step == sta - # test, whether on step flags.STAB some generators may be omitted + # test, whether on step flags.STAB some generators may be omitted tries = C.nsg[step] while tries <= C.ng[step] #for tries in C.nsg[step]:C.ng[step] @@ -1193,7 +1193,7 @@ end function _get_generators(C::ZLatAutoCtx{S, T, U}) where {S, T, U} # Extract generators - + gens = T[] orde = prod(fmpz.(C.orders)) @@ -1289,13 +1289,13 @@ function cand(candidates, I, x, C::ZLatAutoCtx{S, T, U}, comb) where {S, T, U} #@show C.V[j] for i in 1:length(C.G) _issym = C.issymmetric[i] - CAiI = C.G[i][C.per[I]] + CAiI = C.G[i][C.per[I]] Cvi = C.v[i] #@show Cvi - + # vec is the vector of scalar products of V.v[j] with the first I base vectors - # x[1]...x[I] - + # x[1]...x[I] + for k in 1:(I - 1) #@show x[k] xk = x[k] @@ -1515,17 +1515,17 @@ end function stab(I, C::ZLatAutoCtx{SS, T, U}) where {SS, T, U} V = C.V -# computes the orbit of fp.e[I] under the -# generators in G->g[I]...G->g[n-1] and elements +# computes the orbit of fp.e[I] under the +# generators in G->g[I]...G->g[n-1] and elements # stabilizing fp.e[I], # has some heuristic break conditions, -# the generators in G->g[i] stabilize -# fp.e[0]...fp.e[i-1] but not fp.e[i], +# the generators in G->g[i] stabilize +# fp.e[0]...fp.e[i-1] but not fp.e[i], # G->ng[i] is the number of generators in G->g[i], # the first G->nsg[i] of which are elements which -# are obtained as stabilizer elements in +# are obtained as stabilizer elements in # g[0],...,G->g[i-1]>, G->ord[i] is the orbit -# length of fp.e[i] under +# length of fp.e[i] under # g[i],...,G->g[n-1]> *****/ #group *G; #fpstruct fp; @@ -1538,8 +1538,8 @@ function stab(I, C::ZLatAutoCtx{SS, T, U}) where {SS, T, U} # #/* some heuristic break conditions for the computation of stabilizer elements: # it would be too expensive to calculate all the stabilizer generators, which -# are obtained from the orbit, since this is highly redundant, -# on the other hand every new generator which enlarges the group is much +# are obtained from the orbit, since this is highly redundant, +# on the other hand every new generator which enlarges the group is much # cheaper than one obtained from the backtrack, # after Maxfail subsequent stabilizer elements, that do not enlarge the group, # Rest more elements are calculated even if they leave the group unchanged, @@ -1563,7 +1563,7 @@ function stab(I, C::ZLatAutoCtx{SS, T, U}) where {SS, T, U} Maxfail += 1 end end - + nH = 0 for i in I:dim nH += C.ng[i] @@ -1609,7 +1609,7 @@ function stab(I, C::ZLatAutoCtx{SS, T, U}) where {SS, T, U} if fail >= Maxfail #/* there have already been Maxfail successive failures, now a random generator - # is applied to a random point of the orbit to get Rest more stabilizer + # is applied to a random point of the orbit to get Rest more stabilizer # elements */ cnd = rand(1:len) i = rand(1:nH) @@ -1673,7 +1673,7 @@ function stab(I, C::ZLatAutoCtx{SS, T, U}) where {SS, T, U} end resize!(Hj, nH + 1) #/* the new generator is appended to H */ -#/* the number of failures is reset to 0 */ +#/* the number of failures is reset to 0 */ else #/* the new stabilizer element S does not enlarge the orbit of e[j] */ fail += 1 @@ -1709,7 +1709,7 @@ function stabil(x1, x2, per, G, V, C) XG = matgen(x, dim, per, V) X2 = matgen(x2, dim, per, V) - + b, S = can_solve_with_solution(X2, XG, side = :left) return S end @@ -1729,7 +1729,7 @@ function stabil(x1, x2, per, G::Matrix{Int}, V, C) SS = zeros(Int, dim, dim) _psolve(SS, X2, XG, dim, C.prime) @hassert :Lattice 1 SS * X22 == XGG - + return SS end @@ -1739,7 +1739,7 @@ zero_matrix(Int, r, c) = zeros(Int, r, c) base_ring(::Vector{Int}) = Int -function _one(::Type{Matrix{Int}}, n::Int) +function _one(::Type{Matrix{Int}}, n::Int) z = zeros(Int, n, n) for i in 1:n z[i, i] = 1 @@ -1755,7 +1755,7 @@ _zero(::Type{fmpz_mat}, n::Int, m::Int) = zero_matrix(FlintZZ, n, m) function matgen(x, dim, per, v) #/***** generates the matrix X which has as row -# per[i] the vector nr. x[i] from the +# per[i] the vector nr. x[i] from the # list v ***** X = zero_matrix(base_ring(v[1]), dim, dim) #@show x @@ -1884,15 +1884,15 @@ function iso(step, x, C, Ci, Co, G) end function isostab(pt, G, C::ZLatAutoCtx{S, T, U}, Maxfail) where {S, T, U} -# computes the orbit of V.v[pt] -# under the generators +# computes the orbit of V.v[pt] +# under the generators # G[0],...,G[nG-1] and elements -# stabilizing V.v[pt], which are +# stabilizing V.v[pt], which are # stored in H, returns the number # of generators in H # a heuristic break condition for the computation of stabilizer elements: # it would be too expensive to calculate all the stabilizer generators, which -# are obtained from the orbit, since this is highly redundant, +# are obtained from the orbit, since this is highly redundant, # on the other hand every new generator which enlarges the group reduces the # number of orbits and hence the number of candidates to be tested, # after Maxfail subsequent stabilizer elements, that do not enlarge the group, @@ -2019,7 +2019,7 @@ function isocand(CI, I, x, Ci::ZLatAutoCtx{S, T, U}, Co) where {S, T, U} end good = true for k in 1:(I - 1) - if vec[k] != Ci.G[i][Ci.per[I], Ci.per[k]] || vec2[k] != Ci.G[i][Ci.per[k], Ci.per[I]] + if vec[k] != Ci.G[i][Ci.per[I], Ci.per[k]] || vec2[k] != Ci.G[i][Ci.per[k], Ci.per[I]] good = false break end @@ -2029,7 +2029,7 @@ function isocand(CI, I, x, Ci::ZLatAutoCtx{S, T, U}, Co) where {S, T, U} end good = true for k in 1:(I - 1) - if vec[k] != -Ci.G[i][Ci.per[I], Ci.per[k]] || vec2[k] != -Ci.G[i][Ci.per[k], Ci.per[I]] + if vec[k] != -Ci.G[i][Ci.per[I], Ci.per[k]] || vec2[k] != -Ci.G[i][Ci.per[k], Ci.per[I]] good = false break diff --git a/src/QuadForm/Quad/Lattices.jl b/src/QuadForm/Quad/Lattices.jl index 91a1595b11..4d2580ef6a 100644 --- a/src/QuadForm/Quad/Lattices.jl +++ b/src/QuadForm/Quad/Lattices.jl @@ -475,7 +475,7 @@ function ismaximal_integral(L::QuadLat, p) for x in PP @assert !iszero(x) xV = matrix(k, 1, length(x), x) * V - e = elem_type(K)[ hext\(xV[1, i]) for i in 1:ncols(xV) ] + e = elem_type(K)[ hext\(xV[1, i]) for i in 1:ncols(xV) ] v = matrix(K, 1, length(e), e) _z = (v * G * transpose(v))[1, 1] # Test if valv >= val2 + 2 @@ -575,7 +575,7 @@ function maximal_integral_lattice(V::QuadSpace) n = norm(L) @assert isintegral(n) end - + return maximal_integral_lattice(L) end diff --git a/src/QuadForm/Quad/NormalForm.jl b/src/QuadForm/Quad/NormalForm.jl index 9526845069..87fadcbacd 100644 --- a/src/QuadForm/Quad/NormalForm.jl +++ b/src/QuadForm/Quad/NormalForm.jl @@ -138,7 +138,7 @@ end Return the normal `D` and the transformation `T` to the `p`-adic normal form of the symmetric matrix `G`, such that `d * D = d * B * G * B'` holds modulo `p^prec`. -If `prec == -1`, +If `prec == -1`, Let `p` be odd and `u` be the smallest non-square modulo `p`. The normal form is a block diagonal matrix with blocks `p^k G_k` such that `G_k` is either the @@ -1087,7 +1087,7 @@ function _normalize_twobytwo(G, p) D = B * G * B' end @assert _val(D[2, 2], p) == 1 - + if mod(lift(det(D)), 8) == 3 # # in this case we can transform D to # # 2 1 diff --git a/src/QuadForm/Quad/Spaces.jl b/src/QuadForm/Quad/Spaces.jl index 06f9df68cf..eaf01cf127 100644 --- a/src/QuadForm/Quad/Spaces.jl +++ b/src/QuadForm/Quad/Spaces.jl @@ -1449,7 +1449,7 @@ function _isisotropic_with_vector(F::MatrixElem) if _isisotropic(D[3:5], p) continue end - + local x::elem_type(K) local y::elem_type(K) diff --git a/src/QuadForm/QuadBin.jl b/src/QuadForm/QuadBin.jl index 7fbc272ebe..1c22b39ed6 100644 --- a/src/QuadForm/QuadBin.jl +++ b/src/QuadForm/QuadBin.jl @@ -465,7 +465,7 @@ function isequivalent(f::QuadBin{fmpz}, g::QuadBin{fmpz}; proper::Bool = true) if proper || is_prop return is_prop end - + # note that our definition of improper equivalence # differs from that of Buchmann and Vollmer # their action is det f * q(f(x,y)) @@ -495,7 +495,7 @@ function isequivalent(f::QuadBin{fmpz}, g::QuadBin{fmpz}; proper::Bool = true) f1 = reduction(binary_quadratic_form(f[3], f[2], f[1])) return f1 == gred end - + return false end end @@ -505,7 +505,7 @@ function _isequivalent_reducible(f::QuadBin{fmpz}, g::QuadBin{fmpz}; proper = tr return false end - c = content(f) + c = content(f) if content(g) != c return false end diff --git a/src/QuadForm/Spaces.jl b/src/QuadForm/Spaces.jl index 259c51602d..2b3f72a25a 100644 --- a/src/QuadForm/Spaces.jl +++ b/src/QuadForm/Spaces.jl @@ -487,7 +487,7 @@ end # ################################################################################ -# TODO: Use absolute_coordinates +# TODO: Use absolute_coordinates function restrict_scalars(V::AbsSpace, K::FlintRationalField, alpha = one(base_ring(V))) E = base_ring(V) diff --git a/src/QuadForm/Torsion.jl b/src/QuadForm/Torsion.jl index 817461aa29..c7fcb6cbc1 100644 --- a/src/QuadForm/Torsion.jl +++ b/src/QuadForm/Torsion.jl @@ -728,8 +728,8 @@ EXAMPLES:: julia> brown_invariant(T) 4 """ -function brown_invariant(T::TorQuadMod) - @req T.modulus_qf == 2 "the torsion quadratic form must have values in Q/2Z" +function brown_invariant(T::TorQuadMod) + @req T.modulus_qf == 2 "the torsion quadratic form must have values in Q/2Z" brown = ResidueRing(ZZ, 8)(0) for p in prime_divisors(exponent(T)) q = normal_form(primary_part(T, p)[1])[1] @@ -744,7 +744,7 @@ end @doc Markdown.doc""" genus(T::TorQuadMod, signature_pair::Tuple{Int, Int}) -> ZGenus - + Return the genus defined by a TorQuadMod T and the ``signature_pair``. If no such genus exists, raise a ``ErrorException``. diff --git a/src/RCF/Types.jl b/src/RCF/Types.jl index 4558ef8a10..1f757ed8ff 100644 --- a/src/RCF/Types.jl +++ b/src/RCF/Types.jl @@ -95,7 +95,7 @@ mutable struct RCFCharacter{S, T} mrcond::Union{MapClassGrp, MapRayClassGrp} mp_cond::GrpAbFinGenMap charcond::Map #Character directly on the rcf given by the conductor - + function RCFCharacter(C::ClassField{S, T}, x::GrpAbFinGenElem, mGhat::Map) where {S, T} z = new{S, T}() z.C = C diff --git a/src/RCF/autos.jl b/src/RCF/autos.jl index 53e1ec484a..b5a34fefde 100644 --- a/src/RCF/autos.jl +++ b/src/RCF/autos.jl @@ -182,25 +182,25 @@ Given a cyclotomic extension $C$ of a number field $K$ and an automorphism $\tau computes an extension of $\tau$ to $C$. """ -function extend_to_cyclotomic(C::CyclotomicExt, tau::NfToNfMor) - K = domain(tau) +function extend_to_cyclotomic(C::CyclotomicExt, tau::NfToNfMor) + K = domain(tau) @assert K == base_field(C.Kr) gKr = gen(C.Kr) if euler_phi(C.n) == degree(C.Kr) #The extension with the roots of unity is disjoint from K #Therefore, the minimal polynomial has coefficient over QQ. return hom(C.Kr, C.Kr, tau, gKr) - end - g = C.Kr.pol - tau_g = parent(g)([tau(coeff(g, i)) for i=0:degree(g)]) - i = 1 - z = deepcopy(gKr) - while gcd(i, C.n) != 1 || !iszero(tau_g(z)) - i += 1 - mul!(z, z, gKr) - end - return hom(C.Kr, C.Kr, tau, z) - + end + g = C.Kr.pol + tau_g = parent(g)([tau(coeff(g, i)) for i=0:degree(g)]) + i = 1 + z = deepcopy(gKr) + while gcd(i, C.n) != 1 || !iszero(tau_g(z)) + i += 1 + mul!(z, z, gKr) + end + return hom(C.Kr, C.Kr, tau, z) + end function new_extend_aut(A::ClassField, auto::T) where T <: Map @@ -473,11 +473,11 @@ function extend_aut_pp(A::ClassField, autos::Vector{NfToNfMor}, p::fmpz) if d == 2 return extend_aut2(A, autos) end - + m = minimum(defining_modulus(A)[1]) ind_image = 1 if !isone(gcd(d, m)) && d != minimum(degree(x) for x in Cp) - #Difficult case. First, we check that the extension and + #Difficult case. First, we check that the extension and #the cyclotomic extension are disjoint ind_image = check_disjoint_cyclotomic(A, p) if !isone(ind_image) @@ -591,7 +591,7 @@ end #This function restricts the automorphisms in autos to the number field generated by the class fields in Cp # incs are the inclusions of the class fields in K function restriction(K::NfRelNS{nf_elem}, Cp::Vector{ClassField_pp{S, T}}, autos::Vector{NfRelNSToNfRelNSMor_nf_elem}, incs::Vector{NfRelToNfRelNSMor_nf_elem}) where {S, T} - + C = cyclotomic_extension(base_field(Cp[1]), maximum(degree(x) for x in Cp)) #First, I compute the images in K of the generators of the class fields # and their images under the automorphisms @@ -1032,7 +1032,7 @@ function extend_autos_hard_case(A::ClassField, autos::Vector{NfToNfMor}, p::fmpz gens_real_KK = Vector{FacElem{nf_elem, AnticNumberField}}(undef, ngens(S)) for i = 1:ngens(S) imgSi = mS(S[i]) - gens_real_KK[i] = prod(KK.gens[j]^imgSi[j] for j = 1:ngens(KK)) + gens_real_KK[i] = prod(KK.gens[j]^imgSi[j] for j = 1:ngens(KK)) end KK_real = kummer_extension(gens_real_KK, S.snf) new_act_on_gens = Vector{Vector{FacElem{nf_elem, AnticNumberField}}}(undef, length(KK.gen)) @@ -1046,7 +1046,7 @@ function extend_autos_hard_case(A::ClassField, autos::Vector{NfToNfMor}, p::fmpz act_on_gen_i[j] = FacElem(D1) end new_act_on_gens[i] = act_on_gen_i - end + end @show find_frob = find_gens(KK_real, new_act_on_gens, minimum(defining_modulus(A)[1])) error("stop") AA, gAA = number_field(KK_real) diff --git a/src/RCF/class_fields.jl b/src/RCF/class_fields.jl index 682c649286..67f1aa816e 100644 --- a/src/RCF/class_fields.jl +++ b/src/RCF/class_fields.jl @@ -320,7 +320,7 @@ end @doc Markdown.doc""" prime_decomposition_type(C::ClassField, p::NfAbsOrdIdl) -> (Int, Int, Int) -For a prime $p$ in the base ring of $r$, determine the splitting type of $p$ +For a prime $p$ in the base ring of $r$, determine the splitting type of $p$ in $r$. ie. the tuple $(e, f, g)$ giving the ramification degree, the inertia and the number of primes above $p$. """ @@ -357,7 +357,7 @@ end ray_class_field(m::MapRayClassGrp) -> ClassField Creates the (formal) abelian extension defined by the map $m: A \to I$ -where $I$ is the set of ideals coprime to the modulus defining $m$ and $A$ +where $I$ is the set of ideals coprime to the modulus defining $m$ and $A$ is a quotient of the ray class group (or class group). The map $m$ must be the map returned from a call to {class_group} or {ray_class_group}. """ @@ -369,7 +369,7 @@ end ray_class_field(m::Union{MapClassGrp, MapRayClassGrp}, quomap::GrpAbFinGenMap) -> ClassField For $m$ a map computed by either {ray_class_group} or {class_group} and -$q$ a canonical projection (quotient map) as returned by {quo} for q +$q$ a canonical projection (quotient map) as returned by {quo} for q quotient of the domain of $m$ and a subgroup of $m$, create the (formal) abelian extension where the (relative) automorphism group is canonically isomorphic to the codomain of $q$. diff --git a/src/RCF/conductor.jl b/src/RCF/conductor.jl index f0a045dfd0..97c39752d5 100644 --- a/src/RCF/conductor.jl +++ b/src/RCF/conductor.jl @@ -473,7 +473,7 @@ function discriminant(C::ClassField) end end - + @assert typeof(m) == NfOrdIdl mR = C.rayclassgroupmap @@ -652,7 +652,7 @@ function norm_group(f::Nemo.PolyElem, mR::T, isabelian::Bool = true; of_closure: end function norm_group(l_pols::Vector{T}, mR::U, isabelian::Bool = true; of_closure::Bool = false, cached::Bool = true, check::Bool = false) where {T <: PolyElem{nf_elem}, U <: Union{MapClassGrp, MapRayClassGrp}} - + R = domain(mR) O = order(codomain(mR)) K = nf(O) @@ -666,19 +666,19 @@ function norm_group(l_pols::Vector{T}, mR::U, isabelian::Bool = true; of_closure #Thus I will check for every prime if the projection has discriminant 0 n = lcm(Int[degree(x) for x = l_pols]) - if of_closure + if of_closure #we cannot work in the quotient, it "could" be lcm(factorial(degree(x)) for x = f) Q, mQ = quo(R, GrpAbFinGenElem[]) else Q, mQ = quo(R, n, false) end - + p = maximum(degree(x)+1 for x = l_pols) - - listprimes = GrpAbFinGenElem[] + + listprimes = GrpAbFinGenElem[] # Adding small primes until it stabilizes - B = prod(Int[degree(x) for x in l_pols]) + B = prod(Int[degree(x) for x in l_pols]) max_stable = 50*n stable = max_stable denom = lcm([denominator(coeff(x, i)) for x in l_pols for i = 0:degree(x)]) @@ -697,7 +697,7 @@ function norm_group(l_pols::Vector{T}, mR::U, isabelian::Bool = true; of_closure continue end if divides(indexO, fmpz(p))[1] - continue + continue end found = false L = prime_decomposition(O, p, 1) @@ -707,9 +707,9 @@ function norm_group(l_pols::Vector{T}, mR::U, isabelian::Bool = true; of_closure continue end F, mF = ResidueFieldSmallDegree1(O, L[i][1]) - mFp = extend_easy(mF, K) + mFp = extend_easy(mF, K) all_deg = Vector{Int}[] - #= + #= the idea, taking 2 polys: f splits in d_i g splits in e_i @@ -747,7 +747,7 @@ function norm_group(l_pols::Vector{T}, mR::U, isabelian::Bool = true; of_closure Q, mQ = quo(R, listprimes, false) found = true stable = max_stable - end + end end if !found stable -= 1 @@ -831,8 +831,8 @@ function norm_group(KK::KummerExt, mp::NfToNfMor, mR::Union{MapRayClassGrp, MapC zk = order(codomain(mR)) # disc(ZK/Q) = N(disc(ZK/zk)) * disc(zk)^deg # we need the disc ZK/k, well a conductor. - - + + n = degree(KK) els = GrpAbFinGenElem[] stable = 0 @@ -990,7 +990,7 @@ end function factored_modulus(A::ClassField_pp{MapClassGrp, T}) where T return Dict{NfOrdIdl, Int}() end - + function maximal_abelian_subfield(A::ClassField, mp::NfToNfMor) k = domain(mp) K = codomain(mp) @@ -1387,7 +1387,7 @@ function Base.intersect(I::NfAbsOrdIdl, R::NfAbsOrd) @assert fl return minimum(m, I) end - + Base.intersect(R::NfAbsOrd, I::NfAbsOrdIdl) = intersect(I, R) function Base.intersect(I::NfOrdFracIdl, R::NfAbsOrd) diff --git a/src/RCF/cyclo.jl b/src/RCF/cyclo.jl index df9b235513..3b8b3b62e2 100644 --- a/src/RCF/cyclo.jl +++ b/src/RCF/cyclo.jl @@ -50,7 +50,7 @@ function simplify!(C::CyclotomicExt) return nothing end Ka, mKa = simplified_absolute_field(C.Kr, cached = false) - Ks, mKs = simplify(Ka, cached = false) + Ks, mKs = simplify(Ka, cached = false) abs2rel = mKs*mKa imKa = inv(abs2rel) small2abs = hom(base_field(C.Kr), Ks, imKa(C.Kr(gen(base_field(C.Kr))))) @@ -194,7 +194,7 @@ function cyclotomic_extension(k::AnticNumberField, n::Int; cached::Bool = true, Kr, Kr_gen = number_field(fk, "z_$n", cached = false, check = false) if degree(fk) != 1 Ka, abs2rel, small2abs = collapse_top_layer(Kr, cached = false) - + if compute_maximal_order && !simplified # An equation order defined from a factor of a # cyclotomic polynomial is always maximal by Dedekind diff --git a/src/RCF/kummer_extensions.jl b/src/RCF/kummer_extensions.jl index 4ae2609f38..158aa2320b 100644 --- a/src/RCF/kummer_extensions.jl +++ b/src/RCF/kummer_extensions.jl @@ -289,7 +289,7 @@ end # ################################################################################ -# In this context, we are computing the Frobenius for conjugate prime ideals +# In this context, we are computing the Frobenius for conjugate prime ideals # We save the projection of the factor base, we can reuse them #Computes a set of prime ideals of the base field of K such that the corresponding Frobenius #automorphisms generate the automorphism group @@ -299,10 +299,10 @@ function find_gens(K::KummerExt, S::PrimesSet, cp::fmpz=fmpz(1)) end k = base_field(K) ZK = maximal_order(k) - R = K.AutG + R = K.AutG sR = Vector{GrpAbFinGenElem}(undef, length(K.gen)) lp = Vector{NfOrdIdl}(undef, length(K.gen)) - + indZK = index(ZK) q, mq = quo(R, GrpAbFinGenElem[], false) s, ms = snf(q) @@ -326,7 +326,7 @@ function find_gens(K::KummerExt, S::PrimesSet, cp::fmpz=fmpz(1)) for i = 1:length(D) D[i] = Vector{gfp_poly}(undef, length(K.gen[i].fac)) end - + first = false for P in LP try @@ -342,7 +342,7 @@ function find_gens(K::KummerExt, S::PrimesSet, cp::fmpz=fmpz(1)) if iszero(mq(f)) continue end - #At least one of the coefficient of the element + #At least one of the coefficient of the element #must be invertible in the snf form. el = ms\f to_be = false @@ -361,7 +361,7 @@ function find_gens(K::KummerExt, S::PrimesSet, cp::fmpz=fmpz(1)) q, mq = quo(R, sR[1:ind-1], false) s, ms = snf(q) end - if order(s) == 1 + if order(s) == 1 break end @vprint :ClassField 3 "Index: $(exponent(s))^($(valuation(order(s), exponent(s))))\n" @@ -396,7 +396,7 @@ end function _compute_frob(K, mF, p, cached, D) z_p = image(mF, K.zeta)^(K.n-1) - + # K = k(sqrt[n_i](gen[i]) for i=1:length(gen)), an automorphism will be # K[i] -> zeta^divexact(n, n_i) * ? K[i] # Frob(sqrt[n](a), p) = sqrt[n](a)^N(p) (mod p) = zeta^r sqrt[n](a) @@ -545,13 +545,13 @@ function reduce_mod_powers(a::FacElem{nf_elem, AnticNumberField}, n::Int, decom: d = d1^(div(k, n) + 1) end b1 *= d^n #non-optimal, but integral... - return FacElem(b1) + return FacElem(b1) end function reduce_mod_powers(a::FacElem{nf_elem, AnticNumberField}, n::Int, primes::Vector{NfOrdIdl}) vals = fmpz[valuation(a, p) for p in primes] lp = Dict{NfOrdIdl, fmpz}(primes[i] => vals[i] for i = 1:length(primes) if !iszero(vals[i])) - return reduce_mod_powers(a, n, lp) + return reduce_mod_powers(a, n, lp) end function reduce_mod_powers(a::FacElem{nf_elem, AnticNumberField}, n::Int) diff --git a/src/RCF/rcf.jl b/src/RCF/rcf.jl index 42beefd202..f61ea55174 100644 --- a/src/RCF/rcf.jl +++ b/src/RCF/rcf.jl @@ -200,7 +200,7 @@ function _s_unit_for_kummer_using_Brauer(C::CyclotomicExt, f::fmpz) if isdefined(ZK, :lllO) ZK = ZK.lllO::NfOrd end - + lP = Hecke.NfOrdIdl[] for p = keys(lf.fac) @@ -298,7 +298,7 @@ end function find_gens_descent(mR::Map, A::ClassField_pp, cp::fmpz) ZK = order(domain(mR)) C = cyclotomic_extension(nf(ZK), degree(A)) - R = codomain(mR) + R = codomain(mR) Zk = order(codomain(A.rayclassgroupmap)) sR = GrpAbFinGenElem[] lp = elem_type(domain(mR))[] @@ -439,7 +439,7 @@ function find_gens_descent(mR::Map, A::ClassField_pp, cp::fmpz) q, mq = quo(R, sR, false) s, ms = snf(q) end - if order(q) == 1 + if order(q) == 1 break end end @@ -631,7 +631,7 @@ function _rcf_find_kummer(CF::ClassField_pp{S, T}) where {S, T} CF.a = FacElem(one(C.Ka)) return nothing end - k, mk = kernel(h, false) + k, mk = kernel(h, false) G = domain(h) # Now, we find the kummer generator by considering the action @@ -688,7 +688,7 @@ end #roots of unit over the base field and the action of the automorphisms on it. #The Kummer generator is always primitive! (Carlo and Claus) function _find_prim_elem(CF::ClassField_pp, AutA) - + AutA_gen = CF.AutG A = domain(AutA_gen[1]) pe = gen(A) @@ -700,7 +700,7 @@ function _find_prim_elem(CF::ClassField_pp, AutA) Auto = Dict{GrpAbFinGenElem, NfRelElem{nf_elem}}(find_orbit(AutA_gen, AutA, pe)) end end - @vprint :ClassField 2 "have action on the primitive element!!!\n" + @vprint :ClassField 2 "have action on the primitive element!!!\n" return pe, Auto end @@ -711,13 +711,13 @@ function find_orbit(auts, AutG, x) order = 1 elements = Tuple{GrpAbFinGenElem, NfRelElem{nf_elem}}[(id(AutG), x)] g = S[1] - + while !iszero(g) order = order +1 push!(elements, (g, auts[1](elements[end][2]))) g = g + S[1] end - + for i in 2:t previous_order = order for j = 1:previous_order @@ -827,7 +827,7 @@ function _aut_A_over_k(C::CyclotomicExt, CF::ClassField_pp) CF.AutR = AutA_rel auts_in_snf!(CF) return nothing - + end function auts_in_snf!(CF::ClassField_pp) @@ -943,7 +943,7 @@ function _rcf_descent(CF::ClassField_pp) else @vprint :ClassField 2 "Computing automorphisms of the extension and orbit of primitive element\n" pe, Auto = _find_prim_elem(CF, AutA) - + @vprint :ClassField 2 ".. interesting...\n" # want: hom: AutA = Gal(A/k) -> Gal(K/k) = domain(mq) # K is the target field. @@ -1022,8 +1022,8 @@ function _rcf_descent(CF::ClassField_pp) end end genssq = NfRelToNfRelMor_nf_elem_nf_elem[gsq] - - + + @assert Int(order(q)) == degree(CF) #now, hopefully either norm or trace will be primitive for the target @@ -1041,11 +1041,11 @@ function _rcf_descent(CF::ClassField_pp) end res = power_sums_to_polynomial(tr_in_K) return res - end + end end - - + + @vprint :ClassField 2 "trying relative trace\n" @assert length(os) > 0 t = os[1] diff --git a/src/RCF/rcf_stark.jl b/src/RCF/rcf_stark.jl index bb065c4182..75937c9216 100644 --- a/src/RCF/rcf_stark.jl +++ b/src/RCF/rcf_stark.jl @@ -11,7 +11,7 @@ end # ################################################################################ -function Base.show(io::IO, C::RCFCharacter) +function Base.show(io::IO, C::RCFCharacter) println(IOContext(io, :compact => true), "Character of $(C.C)") end @@ -272,7 +272,7 @@ function _find_coeffs(K, pol, v) c = coeff(pol, i-1) bn = 3*nbits(Hecke.upper_bound(c, fmpz)) fl, comb = _approximate(c, bconjs, bn) - if !fl + if !fl add = 10 while !fl && add < 100 fl, comb = _approximate(c, bconjs, bn) @@ -328,7 +328,7 @@ function _find_suitable_quadratic_extension(C::T) where T <: ClassField_pp ctx = rayclassgrp_ctx(OK, Int(exponent(C))*2) allow_cache!(ctx.class_group_map) lc = ideals_up_to(OK, bound, conductor(C)[1]) - cnt = 0 + cnt = 0 while true @vprint :ClassField 1 "Batch of ideals with $(length(lc)) elements \n" for I in lc @@ -828,7 +828,7 @@ function _C(chi::RCFCharacter, prec::Int) OK = order(c) nc = norm(c) p = const_pi(RR)^degree(OK) - d = sqrt(RR(abs(discriminant(OK))))*sqrt(RR(nc)) + d = sqrt(RR(abs(discriminant(OK))))*sqrt(RR(nc)) return d//sqrt(p) end @@ -977,11 +977,11 @@ function _compute_A_coeffs(n::Int, nterms::Int, prec::Int) res = Vector{arb}(undef, n+1) q = divexact(i-1, 2) r0 = spi*_coeff_0_odd(n, q) - vg = coeffs_exp_odd[q+1] + vg = coeffs_exp_odd[q+1] res[n+1] = zero(RR) for j = 1:n mul!(vg[n-j+1], vg[n-j+1], r0) - res[j] = vg[n-j+1] + res[j] = vg[n-j+1] end end res_final[i+1] = res diff --git a/src/RCF/rcf_subfield.jl b/src/RCF/rcf_subfield.jl index 913061cade..1ddb7fa394 100644 --- a/src/RCF/rcf_subfield.jl +++ b/src/RCF/rcf_subfield.jl @@ -45,7 +45,7 @@ function translate_extension(mL::NfToNfMor, C::ClassField_pp) for (p, v) in fM0 p1 = Hecke.intersect_prime(mL, p) if !haskey(fm0, p1) - if iscoprime(minimum(p1, copy = false), n) + if iscoprime(minimum(p1, copy = false), n) fm0[p1] = 1 else fm0[p1] = v @@ -57,14 +57,14 @@ function translate_extension(mL::NfToNfMor, C::ClassField_pp) #Now, I have problems, so I need to add the ramification of the other extension. for (p, v) in f if !haskey(fm0, p) - if isone(gcd(minimum(p), n)) + if isone(gcd(minimum(p), n)) fm0[p] = 1 else fm0[p] = v end else - if !isone(gcd(minimum(p), n)) - fm0[p] = max(v, fm0[p]) + if !isone(gcd(minimum(p), n)) + fm0[p] = max(v, fm0[p]) end end lPP = prime_decomposition(mL, p) @@ -77,7 +77,7 @@ function translate_extension(mL::NfToNfMor, C::ClassField_pp) end end infplc = InfPlc[] - if iszero(mod(n, 2)) + if iszero(mod(n, 2)) infplc = real_places(L) end @vprint :ClassField 3 "Checking if I can compute the field over a subfield\n" @@ -87,7 +87,7 @@ function translate_extension(mL::NfToNfMor, C::ClassField_pp) end #Now, the norm group of K over L @vtime :ClassField 3 ngL, mngL = Hecke.norm_group(mL, mr) - @hassert :ClassField 1 divisible(divexact(fmpz(degree(codomain(mL))), degree(domain(mL))), divexact(order(r), order(ngL))) + @hassert :ClassField 1 divisible(divexact(fmpz(degree(codomain(mL))), degree(domain(mL))), divexact(order(r), order(ngL))) if !divisible(order(ngL), degree(C)) || !divisible(exponent(C), n) return false, C end @@ -101,7 +101,7 @@ function translate_extension(mL::NfToNfMor, C::ClassField_pp) fM0[p] = max(v, fM0[p]) else fM0[p] = v - end + end end end inf_plc2 = InfPlc[] @@ -127,7 +127,7 @@ function translate_extension(mL::NfToNfMor, C::ClassField_pp) @hassert :ClassField 1 isisomorphic(cokernel(mk, false)[1], codomain(C.quotientmap)) mp = mk*proj ck, mck = cokernel(mp, false) - #If everything could work, then ck should be the direct product of the abelian extension I am searching for and + #If everything could work, then ck should be the direct product of the abelian extension I am searching for and #the maximal abelian subextension of K/L G1 = snf(cokernel(mngL, false)[1])[1] G2 = snf(codomain(C.quotientmap))[1] @@ -138,7 +138,7 @@ function translate_extension(mL::NfToNfMor, C::ClassField_pp) fl, ms1 = has_complement(ms) @assert fl mq1 = cokernel(ms1, false)[2] - mqq = mck * mq1 + mqq = mck * mq1 @hassert :ClassField 1 domain(mqq) == r C1 = ClassField_pp{MapRayClassGrp, GrpAbFinGenMap}() C1.quotientmap = mqq @@ -161,7 +161,7 @@ function translate_up(mL::NfToNfMor, C::ClassField_pp, C1::ClassField_pp) mul!(img, img, gen(CEK.Kr)) end end - mrel = hom(CEL.Kr, CEK.Kr, mL, img) + mrel = hom(CEL.Kr, CEK.Kr, mL, img) #@hassert :Fields 1 isconsistent(mrel) g = mrel(CEL.mp[1](gen(CEL.Ka))) mp = hom(CEL.Ka, CEK.Ka, CEK.mp[1]\(g), check = false) @@ -183,7 +183,7 @@ function translate_up(mL::NfToNfMor, C::ClassField_pp, C1::ClassField_pp) C.A = number_field(fdef, cached = false, check = false)[1] #Now, the primitive element of the target extension seen in Cpp.K mrel2 = hom(C1.K, C.K, mp, gen(C.K)) - C.pe = mrel2(C1.pe) + C.pe = mrel2(C1.pe) CEKK = cyclotomic_extension(K, d) @hassert :ClassField 1 iszero(map_coefficients(CEKK.mp[2], fdef, cached = false)(C.pe)) C.o = d1 diff --git a/src/Sparse/Matrix.jl b/src/Sparse/Matrix.jl index bcd9c5b728..7c47e3a0a6 100644 --- a/src/Sparse/Matrix.jl +++ b/src/Sparse/Matrix.jl @@ -901,7 +901,7 @@ end # ################################################################################ @doc Markdown.doc""" - push!(A::SMat{T}, B::SRow{T}) where T + push!(A::SMat{T}, B::SRow{T}) where T Appends the sparse row ```B``` to ```A```. """ diff --git a/src/Sparse/Module.jl b/src/Sparse/Module.jl index 6c9917a31f..05f1145ebd 100644 --- a/src/Sparse/Module.jl +++ b/src/Sparse/Module.jl @@ -4,7 +4,7 @@ # Hecke.lift, Hecke.rational_reconstruction, Hecke.elementary_divisors, # Hecke.rank, Hecke.det -export det_mc, id, isupper_triangular, norm2, hadamard_bound2, +export det_mc, id, isupper_triangular, norm2, hadamard_bound2, hnf, hnf!, echelon_with_transform add_verbose_scope(:HNF) @@ -45,7 +45,7 @@ function add_gen!(M::ModuleCtxNmod, g::SRow{nmod}) push!(M.gens, g) return true end - return false + return false end function add_gen!(M::ModuleCtx_fmpz, g::SRow{fmpz}, always::Bool = true) @@ -57,7 +57,7 @@ function add_gen!(M::ModuleCtx_fmpz, g::SRow{fmpz}, always::Bool = true) else always && push!(M.rel_gens, g) end - return false + return false end function check_index(M::ModuleCtx_fmpz) @@ -171,7 +171,7 @@ end function non_trivial_pivot(M::ModuleCtx_fmpz) h = check_index(M) - if h == 0 + if h == 0 return missing_pivot(M) end C = M.basis diff --git a/src/Sparse/Row.jl b/src/Sparse/Row.jl index e2c26b7058..a9953f937f 100644 --- a/src/Sparse/Row.jl +++ b/src/Sparse/Row.jl @@ -421,7 +421,7 @@ end function +(A::SRow{T}, B::SRow{T}) where T if length(A.values) == 0 - return B + return B elseif length(B.values) == 0 return A end @@ -435,7 +435,7 @@ function -(A::SRow{T}, B::SRow{T}) where T else return add_scaled_row(B, A, base_ring(B)(-1)) end - end + end return add_scaled_row(B, A, base_ring(A)(-1)) end @@ -486,7 +486,7 @@ function div(A::SRow{T}, b::T) where T if !iszero(nv) push!(B.pos, p) push!(B.values, nv) - end + end end return B end @@ -650,7 +650,7 @@ function add_scaled_row!(Ai::SRow{fmpz}, Aj::SRow{fmpz}, c::fmpz) n = add!(n, n, Aj.values[pj]) # n = c*Ai.values[pi] + Aj.values[pj] - if !iszero(n) + if !iszero(n) nb = max(nb, nbits(n)) push!(sr.pos, Ai.pos[pi]) push!(sr.values, n) diff --git a/src/Sparse/Solve.jl b/src/Sparse/Solve.jl index 548557bb76..957b8d4eb3 100644 --- a/src/Sparse/Solve.jl +++ b/src/Sparse/Solve.jl @@ -372,8 +372,8 @@ function echelon!(S::SMat{T}; complete::Bool = false) where T <: FieldElem j += 1 end end - i += 1 - end + i += 1 + end if complete for i = nrows(S):-1:2 p = S[i].pos[1] diff --git a/src/analytic.jl b/src/analytic.jl index bc794f8455..a79f425872 100644 --- a/src/analytic.jl +++ b/src/analytic.jl @@ -323,7 +323,7 @@ function class_group_expected(d::fmpz, deg::Int, B::Int, samples::Int = 100) else Int(c) end -end +end #= D is supposed to be the disccriminant n the dimension diff --git a/src/conjugates.jl b/src/conjugates.jl index ac4fd360df..9a4aebcfa0 100644 --- a/src/conjugates.jl +++ b/src/conjugates.jl @@ -1,5 +1,5 @@ -export conjugates_init, isconstant, issquarefree, conjugates, angle, cos, +export conjugates_init, isconstant, issquarefree, conjugates, angle, cos, sin, abs, abs2, sqrt function isconstant(f::PolyElem) @@ -20,7 +20,7 @@ function conjugates_init(f_in::Union{fmpz_poly, fmpq_poly}) end g = PolynomialRing(FlintZZ, string(var(parent(f_in))), cached = false)[1](gz) f = g - else + else f = f_in end isconstant(gcd(f, derivative(f))) || error("poly should be square-free") @@ -36,7 +36,7 @@ function conjugates_init(f_in::Union{fmpz_poly, fmpq_poly}) push!(r_d, rr) continue end - if imag(rr) > 0 + if imag(rr) > 0 push!(c_d, rr) continue end @@ -167,7 +167,7 @@ end function minkowski_matrix(K::AnticNumberField, p::Int = 50) c = roots_ctx(K) - if isdefined(c, :minkowski_matrix) + if isdefined(c, :minkowski_matrix) if c.minkowski_mat_p == p return c.minkowski_matrix elseif c.minkowski_mat_p >= p diff --git a/src/helper.jl b/src/helper.jl index c306b14976..ea378e3ebd 100644 --- a/src/helper.jl +++ b/src/helper.jl @@ -70,7 +70,7 @@ function check_return_type(f::DataType, M::Module, print_only_bad::Bool = false) print("--------------------------------------------------------------------------------\n") end end -end +end function check_bad_return_type(M::Module) for x in names(M) diff --git a/system/Build.jl b/system/Build.jl index 7c67ffd0e6..8f3a30cc9e 100644 --- a/system/Build.jl +++ b/system/Build.jl @@ -11,7 +11,7 @@ println(f, "using Pkg") println(f, "Hecke.system(\"precompile.jl\")") close(f) -PackageCompiler.create_sysimage([:Hecke], sysimage_path="/tmp/Hecke.$(Libdl.dlext)", precompile_execution_file="/tmp/CompileHecke.jl") +PackageCompiler.create_sysimage([:Hecke], sysimage_path="/tmp/Hecke.$(Libdl.dlext)", precompile_execution_file="/tmp/CompileHecke.jl") println("(re)start julia as") println("\tjulia -J /tmp/Hecke.$(Libdl.dlext)") \ No newline at end of file diff --git a/system/HeckeProfile.jl b/system/HeckeProfile.jl index 1c6b171357..0e577e5bf6 100644 --- a/system/HeckeProfile.jl +++ b/system/HeckeProfile.jl @@ -94,7 +94,7 @@ end iz = find(bt .== 0) then bt[1:iz[1]-1] is a complete trace bt[iz[1]+1:iz[2]-1] the next, ... -=# +=# function callers_frame(fname::Symbol, bt::Vector, lidict::Profile.LineInfoDict) counts = [] @@ -127,7 +127,7 @@ function callers_frame(fname::Symbol, bt::Vector, lidict::Profile.LineInfoDict) break end end - end + end return counts end @@ -146,7 +146,7 @@ function leafs(bt::Vector, lidict::Profile.LineInfoDict, skipC::Bool = false) push!(M, fr.func) skip = true break - end + end else skip = f!=0 end @@ -161,14 +161,14 @@ function counts(bt::Vector, lidict::Profile.LineInfoDict, skipC::Bool = false) continue end for fr = lidict[f] - if skipC + if skipC if !fr.from_c push!(M, fr.func) end else push!(M, fr.func) end - end + end end return M end @@ -198,8 +198,8 @@ function prune(fname::Symbol, bt::Vector, lidict::Profile.LineInfoDict) push!(last, g) break end - end - end + end + end if bingo append!(rt, reverse(last)) push!(rt, UInt(0)) @@ -265,7 +265,7 @@ function graph(bt::Vector, lidict::Profile.LineInfoDict, skipC::Bool = true, ski e[t] = 1 end last = fn - end + end end return g end @@ -278,7 +278,7 @@ end function parents_with_count(g::Graph{T}, c::T) where {T} return [(a, d) for ((a,b), d) = g.e if b==c] -end +end function children(g::Graph{T}, c::T) where {T} return [b for (a,b) = keys(g.e) if a==c] @@ -296,6 +296,6 @@ end HeckeProfile.children(G, :+) ... -=# +=# end diff --git a/test/AlgAss/AlgMat.jl b/test/AlgAss/AlgMat.jl index c7bfb10e26..dfa56b215d 100644 --- a/test/AlgAss/AlgMat.jl +++ b/test/AlgAss/AlgMat.jl @@ -15,7 +15,7 @@ end @testset "Radical" begin - + mats = [[0 0 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0; diff --git a/test/AlgAssAbsOrd/Conjugacy/Conjugacy.jl b/test/AlgAssAbsOrd/Conjugacy/Conjugacy.jl index 88141f7609..a4c112f166 100644 --- a/test/AlgAssAbsOrd/Conjugacy/Conjugacy.jl +++ b/test/AlgAssAbsOrd/Conjugacy/Conjugacy.jl @@ -4,7 +4,7 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -9604, -7056, -12076, -2392, -2253, 952, 46, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -4900, -140] - + b = fmpz[-4645900, -49391, -3848404, -16744, -15771, 6664, 17066, 470484, 33488, 3779643, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, -2, 0, -26, 0, -8, 0, 1, 0, 0, 1, 0, 9, -55750240, -592692, diff --git a/test/EllCrv/EllCrv.jl b/test/EllCrv/EllCrv.jl index 5214cb71aa..27d63bdea6 100644 --- a/test/EllCrv/EllCrv.jl +++ b/test/EllCrv/EllCrv.jl @@ -96,7 +96,7 @@ @test @inferred isfinite(P) @test @inferred !isinfinite(P) -# the error is/was from doing QQ(K(0)) - which is possible now +# the error is/was from doing QQ(K(0)) - which is possible now # @test_throws MethodError E43_a1([gen(K), gen(K)]) @test_throws ErrorException E43_a1([2, 2]) diff --git a/test/Examples/MultiQuad.jl b/test/Examples/MultiQuad.jl index a4a873f6bf..01a3659008 100644 --- a/test/Examples/MultiQuad.jl +++ b/test/Examples/MultiQuad.jl @@ -10,6 +10,6 @@ # f = MultiQuad.saturate(e, 2) # @test MultiQuad.Hecke.class_group_get_pivot_info(f) == (1, BitSet([])) -end +end diff --git a/test/FieldFactory/FieldFactory.jl b/test/FieldFactory/FieldFactory.jl index 6e2f9f19e6..c7c357e52b 100644 --- a/test/FieldFactory/FieldFactory.jl +++ b/test/FieldFactory/FieldFactory.jl @@ -5,7 +5,7 @@ @testset "Quadratic Fields" begin lq = fields(2, 1, fmpz(10)^4) @test length(lq) == 6086 - + lqreal = fields(2, 1, fmpz(10)^4, only_real = true) @test length(lqreal) == 3043 @@ -17,17 +17,17 @@ end @test ind == 3043 end - end + end println("Biquadratic Fields") @time begin @testset "Biquadratic Fields" begin l = fields(4, 2, fmpz(10)^6) @test length(l) == 1014 - + l1 = fields(4, 2, fmpz(10)^6, only_real = true) @test length(l1) == 196 - + ind = 0 for x in l if istotally_real(x.field) @@ -43,7 +43,7 @@ @testset "Abelian fields" begin l = fields(6, 2, fmpz(10)^6) @test length(l) == 10 - + l1 = fields(9, 2, fmpz(10)^13) @test length(l1) == 4 end @@ -55,11 +55,11 @@ @testset "Direct product decomposition" begin @time l_direct_product = fields(12, 4, fmpz(10)^13) @test length(l_direct_product) == 25 - + @time l_without = fields(12, 4, fmpz(10)^13, using_direct_product = false) @test length(l_without) == 25 - d1 = length(fields(24, 13, fmpz(10)^24)) + d1 = length(fields(24, 13, fmpz(10)^24)) d2 = length(fields(24, 13, fmpz(10)^24, using_direct_product = false)) @test d1 == d2 @@ -96,14 +96,14 @@ l = fields(4, 2, fmpz(10)^6) forQ8 = Hecke.check_obstruction(l, L, 2, [2]) @test length(forQ8) == 53 - - + + lQ8 = fields(8, 4, fmpz(10)^12) @test length(lQ8) == 2 - + lQ8_2 = fields(8, 4, forQ8, fmpz(10)^12) @test length(lQ8_2) == 2 - + lQ8real = fields(8, 4, forQ8, fmpz(10)^12, only_real = true) @test length(lQ8real) == 1 end @@ -124,7 +124,7 @@ @test length(lsieved) == 24 end end - + println("Obstructions: prime power case") @time begin @testset "Obstructions: prime_power_case" begin @@ -153,7 +153,7 @@ end end - + println("Some examples") @time begin @testset "Some examples" begin diff --git a/test/FunField/DegreeLocalization.jl b/test/FunField/DegreeLocalization.jl index 5826f85878..9eee1c2534 100644 --- a/test/FunField/DegreeLocalization.jl +++ b/test/FunField/DegreeLocalization.jl @@ -72,7 +72,7 @@ L = Localization(R, degree) @test divides(L(1//x), L(1//x)) == (true, L(1)) @test_throws DivideError divexact(L(1//(x + 1)), L()) - + for i in 1:300 a = rand(L, 0:10, -10:10) b = rand(L, 0:10, -10:10) diff --git a/test/GrpAb/Elem.jl b/test/GrpAb/Elem.jl index 4715af4480..3fe32e380d 100644 --- a/test/GrpAb/Elem.jl +++ b/test/GrpAb/Elem.jl @@ -75,11 +75,11 @@ aa = @inferred(2 * a) @test aa == G([2, 0, 0]) - + aa = @inferred(a * 2) @test aa == G([2, 0, 0]) - + aa = @inferred(fmpz(2) * a) @test aa == G([2, 0, 0]) end @@ -87,7 +87,7 @@ @testset "Neutral element" begin G = abelian_group([3, 3, 3]) a = G[1] - + aa = @inferred(a * fmpz(2)) @test aa == G([2, 0, 0]) @@ -180,7 +180,7 @@ @test length(collect(G)) == 3*9*27 end - + @testset "Helper" begin @testset "Reduce mod Hermite normal form" begin a = FlintZZ[21 32 43] @@ -198,7 +198,7 @@ Hecke.reduce_mod_hnf_ur!(a, H) @test a == FlintZZ[0 0 1] end - + @testset "Smith normal form with transform" begin M = MatrixSpace(FlintZZ,1,1)([0]) S = MatrixSpace(FlintZZ,1,1)([0]) diff --git a/test/GrpAb/GrpAbFinGen.jl b/test/GrpAb/GrpAbFinGen.jl index 3c6bf2a98d..a948303584 100644 --- a/test/GrpAb/GrpAbFinGen.jl +++ b/test/GrpAb/GrpAbFinGen.jl @@ -220,7 +220,7 @@ H, mH = @inferred sub(G, fmpz(2)) @test isisomorphic(H, abelian_group([3, 3, 6, 5])) - + G = abelian_group([2, 2, 6, 6]) H, mH = @inferred sub(G, 2) @test isisomorphic(H, abelian_group([3, 3])) @@ -316,10 +316,10 @@ A = abelian_group([3 1; 0 3]) B = abelian_group([9 2 1; 0 12 1; 0 0 25]) C = abelian_group([3, 4, 0]) - @test isisomorphic(hom(tensor_product(A, B, task = :none), C)[1], + @test isisomorphic(hom(tensor_product(A, B, task = :none), C)[1], hom(A, hom(B, C)[1])[1]) end - + @testset "Complement" begin d = rand(2:1000) d1 = rand(2:1000) diff --git a/test/GrpAb/Lattice.jl b/test/GrpAb/Lattice.jl index ab7d7d8c4b..43ec173f35 100644 --- a/test/GrpAb/Lattice.jl +++ b/test/GrpAb/Lattice.jl @@ -118,7 +118,7 @@ b, M = @inferred Hecke.can_map_into(L, Q, H) @test !b - + HH, mHH = sub(G, [G[2]], true, L) b, GG, MH, MHH = @inferred Hecke.can_map_into_overstructure(L, H, HH) @test b diff --git a/test/GrpAb/Map.jl b/test/GrpAb/Map.jl index 235c22fcc0..f319edd04b 100644 --- a/test/GrpAb/Map.jl +++ b/test/GrpAb/Map.jl @@ -77,7 +77,7 @@ b = @inferred issurjective(h) @test b end - + @testset "Bijectivity" begin G = abelian_group([4, 4, 4]) H = abelian_group([4, 4, 4]) diff --git a/test/GrpAb/SubgroupEnum.jl b/test/GrpAb/SubgroupEnum.jl index 223e99925c..0268dd7f77 100644 --- a/test/GrpAb/SubgroupEnum.jl +++ b/test/GrpAb/SubgroupEnum.jl @@ -11,7 +11,7 @@ end @testset "Given subgroup type" begin - + T = psubgroups(G, 3, subtype = [3]) @test 0 == length(collect(T)) @@ -25,7 +25,7 @@ T = psubgroups(G, 3, subtype = [2]) @test 9 == length(collect(T)) @test all([snf(t[1])[1].snf == fmpz[9] for t in T]) - + T = psubgroups(G, 3, subtype = [1, 1]) @test 13 == length(collect(T)) @test all([snf(t[1])[1].snf == fmpz[3, 3] for t in T]) @@ -51,7 +51,7 @@ TH = psubgroups(G, 3, subtype = [2]) @test 9 == length(collect(TH)) @test all([snf(t[1])[1].snf == fmpz[9] for t in TH]) - + TH = psubgroups(G, 3, subtype = [1, 1]) @test 13 == length(collect(TH)) @test all([snf(t[1])[1].snf == fmpz[3, 3] for t in TH]) @@ -73,7 +73,7 @@ T = psubgroups(G, 3, quotype = [1, 1], fun = quo) @test 13 == length(collect(T)) @test all([snf(t[1])[1].snf == fmpz[3, 3] for t in T]) - + T = psubgroups(G, 3, quotype = [2, 1, 1], fun = quo) @test 1 == length(collect(T)) @test all([snf(t[1])[1].snf == fmpz[3, 3, 9] for t in T]) @@ -81,7 +81,7 @@ T = psubgroups(G, 3, quotype = Int[], fun = quo) @test 1 == length(collect(T)) @test all([order(t[1]) == 1 for t in T]) - + TH = psubgroups(G, 3, quotype = [2], fun = quo) @test 9 == length(collect(TH)) @test all([snf(t[1])[1].snf == fmpz[9] for t in TH]) @@ -89,7 +89,7 @@ TH = psubgroups(G, 3, quotype = [1, 1], fun = quo) @test 13 == length(collect(TH)) @test all([snf(t[1])[1].snf == fmpz[3, 3] for t in TH]) - + TH = psubgroups(G, 3, quotype = [2, 1, 1], fun = quo) @test 1 == length(collect(TH)) @test all([snf(t[1])[1].snf == fmpz[3, 3, 9] for t in TH]) @@ -98,7 +98,7 @@ @test 1 == length(collect(TH)) @test all([order(t[1]) == 1 for t in TH]) end - + @testset "Given order" begin T = psubgroups(G, 3, order = 1) @@ -112,11 +112,11 @@ T = psubgroups(G, 3, order = 9) @test 22 == length(collect(T)) @test all([order(t[1]) == 9 for t in T]) - + T = psubgroups(G, 3, order = 81) @test 1 == length(collect(T)) @test all([order(t[1]) == 81 for t in T]) - + TH = psubgroups(G, 3, order = 1) @test 1 == length(collect(TH)) @test all([order(t[1]) == 1 for t in TH]) @@ -128,7 +128,7 @@ TH = psubgroups(G, 3, order = 9) @test 22 == length(collect(TH)) @test all([order(t[1]) == 9 for t in TH]) - + TH = psubgroups(G, 3, order = 81) @test 1 == length(collect(TH)) @test all([order(t[1]) == 81 for t in TH]) @@ -147,11 +147,11 @@ T = psubgroups(G, 3, index = 9, fun = quo) @test 22 == length(collect(T)) @test all([order(t[1]) == 9 for t in T]) - + T = psubgroups(G, 3, index = 81, fun = quo) @test 1 == length(collect(T)) @test all([order(t[1]) == 81 for t in T]) - + TH = psubgroups(G, 3, index = 1, fun = quo) @test 1 == length(collect(TH)) @test all([order(t[1]) == 1 for t in TH]) @@ -163,7 +163,7 @@ TH = psubgroups(G, 3, index = 9, fun = quo) @test 22 == length(collect(TH)) @test all([order(t[1]) == 9 for t in TH]) - + TH = psubgroups(G, 3, index = 81, fun = quo) @test 1 == length(collect(TH)) @test all([order(t[1]) == 81 for t in TH]) @@ -192,7 +192,7 @@ T = subgroups(G, subtype = [5, 5, 9, 3]) @test 1 == length(collect(T)) @test all([snf(t[1])[1].snf == fmpz[15, 45] for t in T]) - + T = subgroups(G, subtype = [3, 5, 9, 5]) @test 1 == length(collect(T)) @test all([snf(t[1])[1].snf == fmpz[15, 45] for t in T]) @@ -202,12 +202,12 @@ @testset "Given quotype" begin T = subgroups(G, quotype = [25, 27], fun = quo) @test 0 == length(collect(T)) - + T = subgroups(G, quotype = [5, 7], fun = quo) @test 6 == length(collect(T)) @test all([snf(t[1])[1].snf == fmpz[35] for t in T]) end - + @testset "Given order" begin T = subgroups(G, order = 5*7*3) @test 24 == length(collect(T)) diff --git a/test/LocalField/Conjugates.jl b/test/LocalField/Conjugates.jl index b97a4ec93c..98ceb27c6c 100644 --- a/test/LocalField/Conjugates.jl +++ b/test/LocalField/Conjugates.jl @@ -16,7 +16,7 @@ end @testset "Completion" begin - + if VERSION < v"1.6.0-DEV.1332" L1, mL1 = completion(k, 37, 1) L2, mL2 = completion(k, 37, 3) @@ -42,5 +42,5 @@ end end end - + diff --git a/test/LocalField/LocalField.jl b/test/LocalField/LocalField.jl index 23d9a82375..fbd2b6c704 100644 --- a/test/LocalField/LocalField.jl +++ b/test/LocalField/LocalField.jl @@ -1,5 +1,5 @@ @testset "LocalField" begin - + @testset "Creation" begin Qx, x = FlintQQ["x"] f = x^2-2*x+2 @@ -16,7 +16,7 @@ @test degree(L) == 2 @test absolute_degree(L) == 4 @test prime(L) == 2 - + Q2 = PadicField(2, 10) Q2s, s = PolynomialRing(Q2, "s") f = s^2+s+1 @@ -42,9 +42,9 @@ K = QadicField(3, 4, 10)[1] Kx, x = PolynomialRing(K, "x") L = eisenstein_extension(x^20+3)[1] - b = @inferred basis(L) + b = @inferred basis(L) for i = 1:10 - r = 1+2*uniformizer(L)^i * sum([rand(1:10)*b[i] for i in 1:5]) + r = 1+2*uniformizer(L)^i * sum([rand(1:10)*b[i] for i in 1:5]) M = @inferred representation_matrix(r) n = @inferred norm(r) @test n == det(M) @@ -129,12 +129,12 @@ Kx, x = PolynomialRing(K, "x", cached = false) L, b = Hecke.eisenstein_extension(x^7+2, "a") pi = uniformizer(L) - @test iszero(log(pi)) + @test iszero(log(pi)) B = basis(L) for i = 15:20 el = sum([rand(FlintZZ, 0:10)*B[j] for j = 1:7])*pi^i explog = exp(log(1+el)) - logexp = log(exp(el)) + logexp = log(exp(el)) @test iszero(setprecision(explog, precision(explog)-35) - 1 - el) @test iszero(setprecision(logexp, precision(logexp)-35)-el) end diff --git a/test/LocalField/Poly.jl b/test/LocalField/Poly.jl index 65bb60b5cd..4d89c36539 100644 --- a/test/LocalField/Poly.jl +++ b/test/LocalField/Poly.jl @@ -3,8 +3,8 @@ K = PadicField(2, 100) Kx, x = PolynomialRing(K, "x") L, gL = eisenstein_extension(x^2+2, "a") - - @testset "Fun Factor" for F in [K, L] + + @testset "Fun Factor" for F in [K, L] Fx, x = PolynomialRing(F, "x") f = x^5 for i = 0:4 @@ -16,29 +16,29 @@ c = K(rand(FlintZZ, 1:100)) u += 2*c*x^i end - + g = f*u u1, f1 = @inferred Hecke.fun_factor(g) @test u == u1 @test f1 == f end - + @testset "Gcd" for F in [K, L] Fx, x = PolynomialRing(F, "x") f = (2*x+1)*(x+1) g = x^3+1 gg = @inferred gcd(f, g) - @test gg == x+1 - + @test gg == x+1 + f = (2*x+1)*(x+1) g = (2*x+1)*(x+2) @test gcd(f, g) == 2*x+1 - + f = (x + 1//K(2)) * (2*x^2+x+1) g = 2*x+1 @test gcd(f, g) == g end - + @testset "Gcdx" for F in [K, L] Fx, x = PolynomialRing(F, "x") f = (2*x+1)*(x+1) @@ -46,24 +46,24 @@ d, u, v = gcdx(f, g) @test d == gcd(f, g) @test u*f + v*g == d - + f = (2*x+1)*(x+1) g = (2*x+1)*(x+2) d, u, v = @inferred gcdx(f, g) @test gcd(f, g) == d @test d == u*f + v*g - + f = (x + 1//K(2)) * (2*x^2+x+1) g = 2*x+1 d, u, v = gcdx(f, g) @test g == d @test u*f + v*g == d - end - + end + @testset "Hensel" for F in [K, L] Fx, x = PolynomialRing(F, "x") - f = (x+1)^3 - g = (x^2+x+1) + f = (x+1)^3 + g = (x^2+x+1) h = x^2 +2*x + 8 ff = f*g*h lf = @inferred Hecke.Hensel_factorization(ff) @@ -84,5 +84,5 @@ b = derivative(a) rab = @inferred resultant(a, b) @test rab == det(sylvester_matrix(a, b)) - end + end end diff --git a/test/Map/NumField.jl b/test/Map/NumField.jl index df6e7cfe40..48fb0a1d23 100644 --- a/test/Map/NumField.jl +++ b/test/Map/NumField.jl @@ -52,7 +52,7 @@ end # AnticNumberField -> NfRel{nf_elem} - + QQQ, q = NumberField(x - 1, "q") QQQt, t = QQQ["t"] K, a = NumberField(x^2 - 2, "a") @@ -190,7 +190,7 @@ @test f(L(a)) == LL(-a) # NfRel to NfRelNfRel - + Qx, x = QQ["x"] _K, a = NumberField(x^2 - 2, "a") _Ky, y = _K["y"] @@ -201,7 +201,7 @@ f = hom(Ka, K, c, inverse = (-_b^2 - _b + 5, _b)) # NfAbsNS - + K, a = NumberField([x^2 - 2]) f = @inferred id_hom(K) for i in 1:10 diff --git a/test/Map/NumberField.jl b/test/Map/NumberField.jl index 623c0bed31..b76a25cb0d 100644 --- a/test/Map/NumberField.jl +++ b/test/Map/NumberField.jl @@ -20,12 +20,12 @@ end for i = 1:length(lP) I_new = A[2](lP1[1]) id = findfirst(isequal(I_new), lP1) - @test id != nothing + @test id != nothing end f = hom(K, K, a^4//12+a//2) E = EquationOrder(K) I = ideal(E, E(a)) - @test_throws ErrorException Hecke.induce_image(f, I) + @test_throws ErrorException Hecke.induce_image(f, I) end diff --git a/test/Misc/NumberField.jl b/test/Misc/NumberField.jl index 4f213149ee..e36da2e06a 100644 --- a/test/Misc/NumberField.jl +++ b/test/Misc/NumberField.jl @@ -7,11 +7,11 @@ c, KtoL = Hecke.issubfield(K, L) @test c == true @test parent(KtoL(a)) == L - + c, KtoL = Hecke.issubfield_normal(K, L) @test c == true @test parent(KtoL(a)) == L - + OK = maximal_order(K) OL = maximal_order(L) c, KtoL = Hecke.issubfield(K, L) diff --git a/test/Misc/Places.jl b/test/Misc/Places.jl index ed717dd3a6..ae54509d4f 100644 --- a/test/Misc/Places.jl +++ b/test/Misc/Places.jl @@ -33,7 +33,7 @@ @test S[1] != S[2] string(S[1]); # Just check that it does not error - + S = infinite_places(K2) @test length(S) == 5 @@ -47,7 +47,7 @@ r = conjugates_arb(a2) @test overlaps(r[1], SR[1].r) - @test overlaps(r[2], SC[1].r) && overlaps(r[3], SC[2].r) && overlaps(r[4], SC[3].r) && overlaps(r[5], SC[4].r) + @test overlaps(r[2], SC[1].r) && overlaps(r[3], SC[2].r) && overlaps(r[4], SC[3].r) && overlaps(r[5], SC[4].r) P = infinite_place(K2, 1) @test P == S[1] @@ -82,7 +82,7 @@ @test !ispositive(b, infinite_places(K1)) @test ispositive(b, [C]) @test !istotally_positive(b) - + c = b^10*b^2 sc = signs(c) @test sc == Dict(P => 1) @@ -120,7 +120,7 @@ @test !ispositive(b, [P, C]) @test !ispositive(b, infinite_places(K3)) @test !istotally_positive(b) - + c = b^10*b^2 @test signs(c) == Dict(P => 1, P2 => 1) @test sign(c, P) == 1 diff --git a/test/Misc/Poly.jl b/test/Misc/Poly.jl index 3ca191e6d5..3528928eaf 100644 --- a/test/Misc/Poly.jl +++ b/test/Misc/Poly.jl @@ -55,7 +55,7 @@ end function random_symmetric_matrix(x::Int) - M = zero_matrix(FlintZZ, x, x) + M = zero_matrix(FlintZZ, x, x) for i = 1:x for j= i:x a = rand(1:5) @@ -69,6 +69,6 @@ for i = 1:20 @test _test_sturm() end - - + + end diff --git a/test/Misc/Primes.jl b/test/Misc/Primes.jl index 120d6e41d0..d358b46313 100644 --- a/test/Misc/Primes.jl +++ b/test/Misc/Primes.jl @@ -42,7 +42,7 @@ @test length(PP) == 35 @test PP[1] == T(101) @test PP[end] == T(991) - @test all(isprime(p) && iszero(mod(p - T(1), T(5))) for p in P) + @test all(isprime(p) && iszero(mod(p - T(1), T(5))) for p in P) P = @inferred PrimesSet(T(100), T(1000)) PP = collect(P) @@ -58,7 +58,7 @@ a = rand(0:modd) end P = @inferred PrimesSet(T(B), 2 * T(B), T(modd), T(a)) - @test all(isprime(p) && iszero(mod(p - T(a), T(modd))) for p in P) + @test all(isprime(p) && iszero(mod(p - T(a), T(modd))) for p in P) end end diff --git a/test/Misc/RelFinField.jl b/test/Misc/RelFinField.jl index 057d0e1bb9..bcbb06ef88 100644 --- a/test/Misc/RelFinField.jl +++ b/test/Misc/RelFinField.jl @@ -10,7 +10,7 @@ bK = @inferred base_field(K) @test bK == F o = @inferred order(K) - @test o == 27^2 + @test o == 27^2 @test absolute_degree(K) == 6 end @@ -45,7 +45,7 @@ @test gL^3 == gL*gL*gL @test gL^5 == 2*(gL^4+gL^2+1) @test isone(-gL^5-gL^4-gL^2) - end + end @testset "Norm, Trace, Minpoly" begin F, gF = FiniteField(3, 3, cached = false) @@ -62,12 +62,12 @@ f = @inferred Hecke.absolute_minpoly(gL) Fx = parent(f) x = gen(Fx) - @test f == x^5+x^4+x^2+1 + @test f == x^5+x^4+x^2+1 g = @inferred minpoly(gL+1) @test iszero(g(gL+1)) Rx = parent(g) y = gen(Rx) - @test g(y+1) == y^5+y^4+y^2+1 + @test g(y+1) == y^5+y^4+y^2+1 end @testset "Absolute basis and coordinates" begin diff --git a/test/Misc/jordan_test.jl b/test/Misc/jordan_test.jl index 4c191f5e16..44ec1b2d41 100644 --- a/test/Misc/jordan_test.jl +++ b/test/Misc/jordan_test.jl @@ -27,7 +27,7 @@ @test S*M*inv(S) == J for i = 1:6 for j = 1:i-1 - @test iszero(J[i, j]) + @test iszero(J[i, j]) end end for i = 1:5 @@ -50,5 +50,5 @@ CF, TM = rational_canonical_form(C) @test CF == C @test TM * C * inv(TM) == CF - + end diff --git a/test/Misc/meataxe.jl b/test/Misc/meataxe.jl index 72c78f342c..d8d3a4a6cd 100644 --- a/test/Misc/meataxe.jl +++ b/test/Misc/meataxe.jl @@ -7,9 +7,9 @@ @test iszero(Hecke.cleanvect(M,v)) v[1,3]=1 @test !iszero(Hecke.cleanvect(M,v)) - + end - + @testset "closure and spinning" begin G=[MatrixSpace(F,4,4)([1,2,0,0,1,1,0,0,0,0,1,2,0,0,1,1])] M=Hecke.ModAlgAss(G) @@ -21,7 +21,7 @@ @test nrows(Hecke.closure(v,M.action))==4 end - + @testset "meataxe" begin G=[MatrixSpace(F,4,4)([1,2,0,0,1,1,0,0,0,0,1,2,0,0,1,1])] M=Hecke.ModAlgAss(G) @@ -29,19 +29,19 @@ @test !bool @test nrows(B)==2 #@test nrows(Hecke.closure(B, M.action))==2 - + N=Hecke._actsub(B,G) bool,B=meataxe(N) @test bool - + G=[MatrixSpace(F,3,3)([1,0,0,0,0,1,0,1,0]), MatrixSpace(F,3,3)([0,0,1,1,0,0,0,1,0])] M=Hecke.ModAlgAss(G) bool,B=meataxe(M) @test !bool #@test nrows(Hecke.closure(B, M.action))==nrows(B) - + end - + @testset "composition factors and series" begin G=[MatrixSpace(F,4,4)([1,2,0,0,1,1,0,0,0,0,1,2,0,0,1,1])] M=Hecke.ModAlgAss(G) @@ -58,27 +58,27 @@ N=Hecke.ModAlgAss([matrix(F,2,2,[0,2,1,0])]) M.isirreducible= 1 @test Hecke.isisomorphic(M,N) - - + + M1=matrix(F,2,2,[1,0,1,1]) M2=matrix(F,2,2,[1,1,0,1]) M=Hecke.ModAlgAss([M1,M2]) M.isirreducible= 1 - + N1=matrix(F,2,2,[2,2,1,0]) N2=matrix(F,2,2,[1,1,0,1]) N=Hecke.ModAlgAss([N1,N2]) - + @test Hecke.isisomorphic(M,N) - + end - + @testset "Submodules" begin A=MatrixSpace(F,3,3)(1) M=Hecke.ModAlgAss([A]) ls=minimal_submodules(M) @test length(ls)==13 - + F = f(2) #FiniteField(2, 1, "a") A=MatrixSpace(F,6,6)(1) A[5,6]=1 diff --git a/test/Misc/stable_subgroups.jl b/test/Misc/stable_subgroups.jl index 908be7b3c7..396650ee6e 100644 --- a/test/Misc/stable_subgroups.jl +++ b/test/Misc/stable_subgroups.jl @@ -1,23 +1,23 @@ @testset "ZpnGModules" begin @testset "Minimal Submodules" begin - + F, a = FiniteField(3,1,"a") R = ResidueRing(FlintZZ,9) - + V=abelian_group([3,3,9,9]) - + l=[1,1,3,0,2,1,3,3,1,1,1,1,0,0,0,1] l1=[1,1,1,0,2,1,1,1,0,0,1,1,0,0,0,1] A=MatrixSpace(R,4,4)(l) A1=MatrixSpace(F,4,4)(l1) - + M = ZpnGModule(V,[A]) M1 = Hecke.ModAlgAss([A1]) - + ls = minimal_submodules(M) ls1 = minimal_submodules(M1) - + @test length(ls) == length(ls1) for y in ls @test Hecke.issubmodule(M,y) @@ -26,7 +26,7 @@ @testset "Dual Module" begin - + R=ResidueRing(FlintZZ,9) V=abelian_group([3,3,9,9]) V.issnf=true @@ -40,12 +40,12 @@ for y in ls @test Hecke.issubmodule(M,Hecke._dualize(y,V,v)) end - + end - - + + @testset "submodules with given structure" begin - + R=ResidueRing(FlintZZ,8) V=abelian_group([2,4,8,8]) V.issnf=true @@ -59,12 +59,12 @@ M=ZpnGModule(V,[A,B,C]) ls=submodules(M,typesub=[2,3]) y=subgroups(V,quotype=[4,8]) - + mp1=Hecke.GrpAbFinGenMap(V,V,lift(A)) mp2=Hecke.GrpAbFinGenMap(V,V,lift(B)) mp3=Hecke.GrpAbFinGenMap(V,V,lift(C)) act=[mp1,mp2,mp3] - + i=0 for el in y if Hecke.isstable(act,el[2]) @@ -72,7 +72,7 @@ end end @test i==length(ls) - + ls=submodules(M,typesub=[3]) y=subgroups(V,quotype=[8]) i=0 @@ -82,11 +82,11 @@ end end @test i==length(ls) - + end - + @testset "submodules" begin - + R=ResidueRing(FlintZZ,4) V=abelian_group([2,2,4]) V.issnf=true @@ -96,7 +96,7 @@ ls=submodules(M) lsub=subgroups(V) @test length(collect(ls))==length(collect(lsub)) - + end diff --git a/test/NfAbs/Elem.jl b/test/NfAbs/Elem.jl index ab39b10748..f8abf31874 100644 --- a/test/NfAbs/Elem.jl +++ b/test/NfAbs/Elem.jl @@ -99,7 +99,7 @@ end @test length(factor(t^10)) == 1 end - K, a = NumberField(x - 1, "a") + K, a = NumberField(x - 1, "a") Kt, t = K["t"] f = t^5 -3 * t^4 - 104 * t^3 + 312 * t^2 + 400*t -1200 @test length(factor(f)) == 5 @@ -108,13 +108,13 @@ end for i in 1:10 n = rand(1:10) d = rand(1:10) - K, a = NumberField(n//d * change_base_ring(FlintQQ, x - 1), "a") + K, a = NumberField(n//d * change_base_ring(FlintQQ, x - 1), "a") Kt, t = K["t"] f = t^5 -3 * t^4 - 104 * t^3 + 312 * t^2 + 400*t -1200 @test length(factor(f)) == 5 @test length(factor(f*t)) == 6 - - K, a = NumberField(change_base_ring(FlintQQ, x) - n//d, "a") + + K, a = NumberField(change_base_ring(FlintQQ, x) - n//d, "a") Kt, t = K["t"] f = t^5 -3 * t^4 - 104 * t^3 + 312 * t^2 + 400*t -1200 @test length(factor(f)) == 5 @@ -123,7 +123,7 @@ end #Tommys K, a = number_field(x^2 - x - 4) - Ky, y = K["y"] + Ky, y = K["y"] f = y^16+(39)*y^14+(449)*y^12+(1794)*y^10+(2830)*y^8+(1794)*y^6+(449)*y^4+(39)*y^2+(1) @test length(factor(f)) == 2 diff --git a/test/NfOrd/Clgp.jl b/test/NfOrd/Clgp.jl index 58dbf83411..f5492cdcec 100644 --- a/test/NfOrd/Clgp.jl +++ b/test/NfOrd/Clgp.jl @@ -22,7 +22,7 @@ using Random Cl, mCl = Hecke.class_group(O, redo = true) U, mU = Hecke.unit_group(O) @test order(Cl) == h - + Cl, mCl = Hecke.class_group(O, redo = true, do_lll = false) U, mU = Hecke.unit_group(O) @test order(Cl) == h @@ -46,7 +46,7 @@ using Random Cl, mCl = Hecke.class_group(O, redo = true, do_lll = false) U, mU = Hecke.unit_group(O) @test order(Cl) == 1 - + O = Order(K, shuffle(basis(O)), isbasis = true) O.ismaximal = 1 Cl, mCl = Hecke.class_group(O, redo = true, do_lll = false) @@ -60,7 +60,7 @@ using Random O = maximal_order(K) Cl, mCl = Hecke.class_group(O) @test order(Cl) == 8 - + O = Order(K, shuffle(basis(O)), isbasis = true) O.ismaximal = 1 Cl, mCl = Hecke.class_group(O, redo = true, do_lll = false) @@ -95,7 +95,7 @@ end @testset "K = Q" begin K, a = NumberField(x, "a", cached = false) O = maximal_order(K) - + Cl, mCl = Hecke.class_group(O, redo = true) U, mU = Hecke.unit_group(O) @test order(Cl) == 1 @@ -117,7 +117,7 @@ end @test U.torsion_units_order == 2 @test contains(AF(0.88137358701),U.tentative_regulator) @test order(Cl) == 1 - + O = Order(K, shuffle(basis(O)), isbasis = true) O.ismaximal = 1 Cl, mCl = Hecke.class_group(O, redo = true, do_lll = false) @@ -158,7 +158,7 @@ end @test U.torsion_units_order == 2 @test contains(AF(2027.9289425180057),U.tentative_regulator) @test order(Cl) == 5 - + O = Order(K, shuffle(basis(O)), isbasis = true) O.ismaximal = 1 Cl, mCl = Hecke.class_group(O, redo = true, do_lll = false) @@ -174,7 +174,7 @@ end @test contains(AF(2027.9289425180057),U.tentative_regulator) @test order(Cl) == 5 end - + @testset "Cyclotomic Field 13" begin K, a = cyclotomic_field(13, cached = false) O = maximal_order(K) @@ -188,7 +188,7 @@ end @test order(U) == O @test U.torsion_units_order == 26 @test order(Cl) == 1 - + O = Order(K, shuffle(basis(O)), isbasis = true, cached = false) O.ismaximal = 1 Cl, mCl = Hecke.class_group(O, redo = true, do_lll = false) @@ -202,7 +202,7 @@ end @test U.torsion_units_order == 26 @test order(Cl) == 1 end - + @testset "f = Q[x]/(f), f = x^18 + 18*x^16 + 135*x^14 + 192*x^12 - 2961*x^10 - 17334*x^8+ 20361*x^6 + 315108*x^4 + 514944*x^2 + 123904" begin K, a = NumberField(x^18 + 18*x^16 + 135*x^14 + 192*x^12 - 2961*x^10 - 17334*x^8+ 20361*x^6 + 315108*x^4 + 514944*x^2 + 123904, "a") O = maximal_order(K) @@ -211,7 +211,7 @@ end UU, mU = Hecke.unit_group(O) @test order(Cl)== 36 - + O = Order(K, shuffle(basis(O)), isbasis = true) O.ismaximal = 1 @@ -220,7 +220,7 @@ end @test order(Cl)== 36 end - + @testset "S3 field" begin Qx, x = PolynomialRing(FlintQQ, "x") f = x^6-24*x^4+157*x^2-162 diff --git a/test/NfOrd/Elem.jl b/test/NfOrd/Elem.jl index b2370db28a..6b740649ca 100644 --- a/test/NfOrd/Elem.jl +++ b/test/NfOrd/Elem.jl @@ -66,7 +66,7 @@ b = O1(a1//2, false) @test_throws ErrorException coordinates(b) - + b = O1(a1) c = @inferred K1(b) @test c == a1 @@ -132,7 +132,7 @@ c = @inferred divexact(O1(a1^2), O1(a1)) @test c == O1(a1) - + c = @inferred divexact(O1(a1^2), O1(a1), true) @test c == O1(a1) @@ -190,7 +190,7 @@ @test_throws ErrorException divexact(b, O1(4*a1)) end - + @testset "Exponentiation" begin b = O1(a1) c = @inferred b^3 @@ -238,7 +238,7 @@ b = O1(a1) c = @inferred tr(b) @test c == 0 - end + end @testset "Norm" begin b = O1(a1) @@ -319,7 +319,7 @@ fac = @inferred factor(b) @test isunit(unit(fac)) == 1 @test b == unit(fac) * prod(p^e for (p, e) in fac) - + K, a = NumberField(x^3 - 2, "a") OK = maximal_order(K) b = rand(OK, -10:10) diff --git a/test/NfOrd/FracIdl.jl b/test/NfOrd/FracIdl.jl index 58c6179880..e8477ed95c 100644 --- a/test/NfOrd/FracIdl.jl +++ b/test/NfOrd/FracIdl.jl @@ -1,7 +1,7 @@ Qx, x = PolynomialRing(FlintQQ, "x") K2, a2 = NumberField(x^3 - 2, "a1") K3, (a3,) = NumberField([x^3 - 2], "a2") -@testset "Fractional ideals for $K1" for (K1, a1) in [(K2, a2), (K3, a3)] +@testset "Fractional ideals for $K1" for (K1, a1) in [(K2, a2), (K3, a3)] O1 = Order(K1, Hecke.FakeFmpqMat(FlintZZ[1 0 0; 0 2 0; 0 0 4], one(FlintZZ))) i = ideal(O1, O1(2*a1)) diff --git a/test/NfOrd/Ideal.jl b/test/NfOrd/Ideal.jl index 26b0db3cd9..fe6a361e66 100644 --- a/test/NfOrd/Ideal.jl +++ b/test/NfOrd/Ideal.jl @@ -32,7 +32,7 @@ @test I == J && J == K && K == M && M == L && L == I I2 = @inferred ideal(O2, O2(1 + a2)) - + Ib = basis(I2) II = ideal(O2, Ib) @test I2 == II @@ -190,7 +190,7 @@ I = @inferred pradical(O1, 2) @test I == ideal(O1, FlintZZ[2 0 0; 0 1 0; 0 0 1]) end - + @testset "Prime Decomposition" begin L = NumberField(x^30-x^29+x^28-x^27+x^26+743*x^25-1363*x^24-3597*x^23-22009*x^22+458737*x^21+2608403*x^20+6374653*x^19-1890565*x^18-112632611*x^17-467834081*x^16-1365580319*x^15-1188283908*x^14+3831279180*x^13+28661663584*x^12+89106335984*x^11+226912479680*x^10+443487548480*x^9+719797891328*x^8+946994403328*x^7+1015828094976*x^6+878645952512*x^5+555353440256*x^4+124983967744*x^3+67515711488*x^2-5234491392*x+400505700352)[1] OL = maximal_order(L) @@ -212,7 +212,7 @@ lp = prime_decomposition(OK, 7) P = lp[1][1] @test Hecke.frobenius_automorphism(P) != id_hom(K) - end + end @testset "Minimum" begin k, = number_field(x^2 - 2); diff --git a/test/NfOrd/Ideal/Prime.jl b/test/NfOrd/Ideal/Prime.jl index 0bcd9db32c..2b8030bcf5 100644 --- a/test/NfOrd/Ideal/Prime.jl +++ b/test/NfOrd/Ideal/Prime.jl @@ -19,13 +19,13 @@ S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100), indexdivisors = false, ramified = false) @test @inferred length(collect(S)) == 33 S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100), indexdivisors = false, ramified = false, degreebound = 1) - @test @inferred length(collect(S)) == 20 + @test @inferred length(collect(S)) == 20 K, a = NumberField(x^5 - x + 1, "a") O = maximal_order(K) S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100)) - @test @inferred length(collect(S)) == 51 + @test @inferred length(collect(S)) == 51 S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100), degreebound = 1) @test @inferred length(collect(S)) == 18 @@ -45,19 +45,19 @@ P = prime_decomposition(O, 2)[1][1] S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100), coprimeto = P) - @test @inferred length(collect(S)) == 50 - + @test @inferred length(collect(S)) == 50 + el = Hecke.find_elem_of_valuation_1(P, P^2) @test valuation(el, P) == 1 - + S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100), coprimeto = 2) @test @inferred length(collect(S)) == 49 S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100), coprimeto = fmpz(6)) - @test @inferred length(collect(S)) == 48 + @test @inferred length(collect(S)) == 48 S = @inferred PrimeIdealsSet(O, fmpz(2), fmpz(100), coprimeto = O(30)) - @test @inferred length(collect(S)) == 47 + @test @inferred length(collect(S)) == 47 @test_throws ErrorException PrimeIdealsSet(O, fmpz(-1), fmpz(1)) @test_throws ErrorException PrimeIdealsSet(O, fmpz(1), -2) diff --git a/test/NfOrd/LinearAlgebra.jl b/test/NfOrd/LinearAlgebra.jl index c7a33f855f..5a50ce7b78 100644 --- a/test/NfOrd/LinearAlgebra.jl +++ b/test/NfOrd/LinearAlgebra.jl @@ -61,8 +61,8 @@ # Construct random pseudo-matrices over different fields and check if the # pseudo hermite normal form span the same module - - @testset "Q[x]/x^$i - 10)" for i in 2:5 + + @testset "Q[x]/x^$i - 10)" for i in 2:5 K, a = NumberField(x^i - 10, "a") O = maximal_order(K) #println(" Testing over field $(x^i - 10)") diff --git a/test/NfOrd/NfOrd.jl b/test/NfOrd/NfOrd.jl index a709782a1b..03c6774006 100644 --- a/test/NfOrd/NfOrd.jl +++ b/test/NfOrd/NfOrd.jl @@ -63,7 +63,7 @@ #@test O7 == O77 #@test !(O7 === O77) - + O8 = Order(K6, [a1]) @test O8 == EquationOrder(K1) @@ -392,7 +392,7 @@ 7222691559*x^80 + 31283828160*x^79 + 525642325551*x^78 + 1906118141542*x^77 + 24142920697938*x^76 + 79592960305643*x^75 + 838232263382574*x^74 + 2605205454422475*x^73 + 24565284675046150*x^72 + - 70981918657774030*x^71 + 641054201228592185*x^70 + + 70981918657774030*x^71 + 641054201228592185*x^70 + 1734903783394973997*x^69 + 15495356543087563190*x^68 + 39815058831494401595*x^67 + 351972255697672269132*x^66 + 866446351271000834294*x^65 + 7284533695483449887998*x^64 + @@ -450,9 +450,9 @@ 132835684951238038126841006782845727573364179*x^7 + 101387674327323669504054265029073554782913385*x^6 - 12293053226599581249247685498068796993543192*x^5 + - 1490584272544043051357580914905419718739398*x^4 - + 1490584272544043051357580914905419718739398*x^4 - 180650443636285117226206582673575773019341*x^3 + - 21986977593862597199128608447146928784347*x^2 - + 21986977593862597199128608447146928784347*x^2 - 2582145971030886336723659422476783673912*x + 373314295307719514165340295548734564161 K, a = NumberField(f) diff --git a/test/NfOrd/RayClassGroup.jl b/test/NfOrd/RayClassGroup.jl index 095be804ed..f0d798dd93 100644 --- a/test/NfOrd/RayClassGroup.jl +++ b/test/NfOrd/RayClassGroup.jl @@ -11,12 +11,12 @@ end @testset "quadratic fields" begin - + Qx,x=PolynomialRing(FlintQQ,"x") K,a=NumberField(x^2+199,"a") O=maximal_order(K) C,mC=class_group(O) - + for i=9:13 R1,mR1=ray_class_group(ideal(O,i), n_quo=3) for r in R1 @@ -26,12 +26,12 @@ q,mq=quo(R,3) @test Hecke.isisomorphic(R1,q) end - + K,a=NumberField(x^2-5,"a") O=maximal_order(K) C,mC=class_group(O, redo = true) inf_plc=real_places(K) - + for i=9:13 R1,mR1=ray_class_group(ideal(O,i),inf_plc) for r in R1 @@ -45,9 +45,9 @@ @test Hecke.isisomorphic(q1,R2) end end - + @testset "infinite places" begin - + Qx, x = PolynomialRing(FlintQQ, "x"); K, a = NumberField(x^4-4*x^3-11*x^2+30*x+20, cached = false) O = maximal_order(K) @@ -57,9 +57,9 @@ @test el == mr\(mr(el)) end end - + @testset "stable subgroups" begin - + Qx,x=PolynomialRing(FlintQQ,"x"); f=x^2+1; K,a=NumberField(f,"a"); @@ -78,7 +78,7 @@ end end @test length(x)==i - + x=Hecke.stable_subgroups(r, act, op = quo, quotype = [2,4]); y=subgroups(r, quotype=[2,4]) i=0 @@ -88,7 +88,7 @@ end end @test length(x)==i - + r,mr=ray_class_group(ideal(O,9*19*29), n_quo=9); act=Hecke.induce_action(mr, auts); x=Hecke.stable_subgroups(r, act, op = quo, quotype = [9]); @@ -100,7 +100,7 @@ end end @test length(x)==i - + x=Hecke.stable_subgroups(r, act, op = quo, quotype = [3,9]); y=subgroups(r, quotype=[3,9]) i=0 @@ -111,5 +111,5 @@ end @test length(x)==i end - + end diff --git a/test/NfOrd/ResidueField.jl b/test/NfOrd/ResidueField.jl index 884101bc08..090364d197 100644 --- a/test/NfOrd/ResidueField.jl +++ b/test/NfOrd/ResidueField.jl @@ -15,7 +15,7 @@ @test order(F1) == order(F2) @test order(F1) == order(F3) @test order(F1) == order(F) - + for b in B a1 = mF(b) a2 = mF1(b) @@ -27,7 +27,7 @@ @test (mF3\(a4) - b) in P end end - + lp = prime_decomposition(OK, 47) for i = 1:length(lp) P = lp[i][1] @@ -38,7 +38,7 @@ @test order(F1) == order(F2) @test order(F1) == order(F3) @test order(F1) == order(F) - + for b in B a1 = mF(b) a2 = mF1(b) diff --git a/test/NumField/Elem.jl b/test/NumField/Elem.jl index 9d813a8a9e..352400eba2 100644 --- a/test/NumField/Elem.jl +++ b/test/NumField/Elem.jl @@ -152,7 +152,7 @@ f = x^2 + 12x - 92 K, a = NumberField(f, "a") Ky, y = K["y"] - L, b = NumberField(y^2 + y + 1, "b") + L, b = NumberField(y^2 + y + 1, "b") Lt, t = PolynomialRing(L) L1, gL1 = number_field([t^3-2]) L1rel, mL1rel = relative_simple_extension(L1, K) @@ -215,7 +215,7 @@ end @test isone(mA(A[1])^6) @test !isone(mA(A[1])^3) @test !isone(mA(A[1])^2) - + Kt, t = PolynomialRing(K, cached = false) Ls, gLs = number_field(t^2+1) G, mG = torsion_unit_group(Ls) @@ -227,7 +227,7 @@ end @test isone(g^12) @test !isone(g^4) @test !isone(g^3) - + Lns, gLns = number_field([t^2+1, t^2+2]) G, mG = torsion_unit_group(Lns) @test ngens(G) == 1 diff --git a/test/NumField/Hilbert.jl b/test/NumField/Hilbert.jl index 4479ed92f2..d02c01a1d6 100644 --- a/test/NumField/Hilbert.jl +++ b/test/NumField/Hilbert.jl @@ -31,7 +31,7 @@ for P in prime_ideals_up_to(OK, 200) @test hilbert_symbol(b, -3, P) == 1 end - + # Test where Magma div(x, y) differs from julia div(x, y) (internally) K, a = CyclotomicRealSubfield(8, "a") # x^2 - 2 z = 9278908160780559301//4*a+6561375391013480455//2 diff --git a/test/NumField/NfAbs/MPolyAbsFact.jl b/test/NumField/NfAbs/MPolyAbsFact.jl index 138fcca4ca..01ed7e7d33 100644 --- a/test/NumField/NfAbs/MPolyAbsFact.jl +++ b/test/NumField/NfAbs/MPolyAbsFact.jl @@ -3,7 +3,7 @@ f = Hecke.MPolyFact.example(wildanger_field(3, 13)[1], 3, 5) @test length(factor_absolute(f)) >= 2 - f = Hecke.MPolyFact.example(cyclotomic_field(4)[1], 3, 5) + f = Hecke.MPolyFact.example(cyclotomic_field(4)[1], 3, 5) @test length(factor_absolute(f)) >= 2 @test length(factor(f, ComplexField(40)).fac) >= 2 diff --git a/test/QuadForm/Genus.jl b/test/QuadForm/Genus.jl index f17a471953..22d8169ea9 100644 --- a/test/QuadForm/Genus.jl +++ b/test/QuadForm/Genus.jl @@ -13,7 +13,7 @@ GG = G[1] u = @inferred uniformizer(GG) @assert parent(u) == K - + p = prime_decomposition(maximal_order(K), 17)[1][1] G = @inferred local_genera_hermitian(L, p, 5, 5, 5) @test length(G) == 7 @@ -21,7 +21,7 @@ @test rank(G[i]) == 5 @test (@inferred representative(G[i])) in G[i] end - + K, a = CyclotomicRealSubfield(8, "a") Kt, t = K["t"] L, b = number_field(t^2 - gen(K) * t + 1) @@ -62,7 +62,7 @@ end # Representatives - + Qx, x = FlintQQ["x"] K, a = NumberField(x - 1, "a") Kt, t = K["t"] @@ -108,7 +108,7 @@ @test length(Hecke.local_genera_quadratic(K, p, rank = 2, det_val = 1)) == 8 # Addition of genera - + K, a = CyclotomicRealSubfield(8, "a") Kt, t = PolynomialRing(K, "t") L, b = number_field(t^2 - gen(K) * t + 1) diff --git a/test/QuadForm/Lattices.jl b/test/QuadForm/Lattices.jl index 924f43518a..5d9b22af75 100644 --- a/test/QuadForm/Lattices.jl +++ b/test/QuadForm/Lattices.jl @@ -56,7 +56,7 @@ V = hermitian_space(L, L(a) * identity_matrix(L, 3)) M = @inferred Hecke.maximal_integral_lattice(V) @test Hecke.genus(M, p) == genus(HermLat, L, p, [(-2, 2, 1, 0), (0, 1, -1, 0)]) - + V = hermitian_space(L, L(10) * identity_matrix(L, 3)) M = @inferred Hecke.maximal_integral_lattice(V) @test Hecke.genus(M, p) == genus(HermLat, L, p, [(-2, 2, 1, 0), (0, 1, 1, 0)]) diff --git a/test/QuadForm/Quad/GenusRep.jl b/test/QuadForm/Quad/GenusRep.jl index b0646f9074..0e9d070a38 100644 --- a/test/QuadForm/Quad/GenusRep.jl +++ b/test/QuadForm/Quad/GenusRep.jl @@ -71,7 +71,7 @@ # Rank 2 case # This is the Zlattice with basis [1 2; 3 4] - + Qx, x = PolynomialRing(FlintQQ, "x", cached = false) f = x - 1; K, a = number_field(f) diff --git a/test/QuadForm/Quad/NormalForm.jl b/test/QuadForm/Quad/NormalForm.jl index 093c5384b3..43de81f0d4 100644 --- a/test/QuadForm/Quad/NormalForm.jl +++ b/test/QuadForm/Quad/NormalForm.jl @@ -22,25 +22,25 @@ end for R in [ZZ, GF(3)] W = R[1;] V = R[0 1; 1 0] - + L = diagonal_matrix([W, V]) @test (@inferred diagonal_matrix(Hecke.collect_small_blocks(L))) == L - + L = diagonal_matrix([W, W]) @test diagonal_matrix(Hecke.collect_small_blocks(L)) == L - + L = diagonal_matrix([W, V, W]) @test diagonal_matrix(Hecke.collect_small_blocks(L)) == L - + L = diagonal_matrix([W]) @test diagonal_matrix(Hecke.collect_small_blocks(L)) == L - + L = diagonal_matrix([V]) @test diagonal_matrix(Hecke.collect_small_blocks(L)) == L - + L = diagonal_matrix([V, W, W, V, V, W, W]) @test diagonal_matrix(Hecke.collect_small_blocks(L)) == L - + L = zero_matrix(ZZ, 0, 0) @test Hecke.collect_small_blocks(L) == typeof(L)[] end diff --git a/test/QuadForm/Quad/ZGenus.jl b/test/QuadForm/Quad/ZGenus.jl index 85daee7278..93b97febbb 100644 --- a/test/QuadForm/Quad/ZGenus.jl +++ b/test/QuadForm/Quad/ZGenus.jl @@ -247,7 +247,7 @@ G2 = genus(L2) @test G==G2 end - + for d in 1:(long_test ? 400 : 10) for sig in [(2,0), (1,1), (0,3),(1,2), (4,0), (2,2)] for G in genera(sig, d) diff --git a/test/QuadForm/Torsion.jl b/test/QuadForm/Torsion.jl index 182dfb645c..924556f7d3 100644 --- a/test/QuadForm/Torsion.jl +++ b/test/QuadForm/Torsion.jl @@ -74,7 +74,7 @@ @test Hecke.gram_matrix_quadratic(Hecke.rescale(t, 3)) == matrix(QQ, 2, 2, [1,0,0,1//3]) #The next form is defined modulo `4` @test Hecke.gram_matrix_quadratic(Hecke.rescale(t, 4)) == matrix(QQ, 2, 2, [4//3,0,0,4//9]) - + #test for normal form L1 = Zlattice(gram=matrix(ZZ, [[-2,0,0],[0,1,0],[0,0,4]])) @@ -98,13 +98,13 @@ L3 = Zlattice(gram=matrix(ZZ, [[2,0,0,-1],[0,2,0,-1],[0,0,2,-1],[-1,-1,-1,2]])) T=torsion_quadratic_module((1//6)*dual(L3), L3) n3 = normal_form(T)[1] - g3 = QQ[1//6 1//12 0 0 0 0 0 0; - 1//12 1//6 0 0 0 0 0 0; - 0 0 1//12 1//24 0 0 0 0; - 0 0 1//24 1//12 0 0 0 0; - 0 0 0 0 1//9 0 0 0; - 0 0 0 0 0 1//9 0 0; - 0 0 0 0 0 0 1//9 0; + g3 = QQ[1//6 1//12 0 0 0 0 0 0; + 1//12 1//6 0 0 0 0 0 0; + 0 0 1//12 1//24 0 0 0 0; + 0 0 1//24 1//12 0 0 0 0; + 0 0 0 0 1//9 0 0 0; + 0 0 0 0 0 1//9 0 0; + 0 0 0 0 0 0 1//9 0; 0 0 0 0 0 0 0 1//9] @test Hecke.gram_matrix_quadratic(n3) == g3 T2 = torsion_quadratic_module((1//6)*dual(L3), L3, modulus=fmpq(1//36)) @@ -121,7 +121,7 @@ #test for brown invariant L1 = Zlattice(gram=matrix(ZZ, [[2,-1,0,0],[-1,2,-1,-1],[0,-1,2,0],[0,-1,0,2]])) - T1 = discriminant_group(L1) + T1 = discriminant_group(L1) @test Hecke.brown_invariant(T1) == 4 L2 = Zlattice(matrix(ZZ, 2,2,[4,2,2,4])) T2 = Hecke.discriminant_group(L2) @@ -143,7 +143,7 @@ D = discriminant_group(L) @test_throws ErrorException isgenus(D, (4,0)) L1 = Zlattice(gram=matrix(ZZ, [[2, -1, 0, 0, 0, 0],[-1, 2, -1, -1, 0, 0],[0, -1, 2, 0, 0, 0],[0, -1, 0, 2, 0, 0],[0, 0, 0, 0, 6, 3],[0, 0, 0, 0, 3, 6]])) - T1 = discriminant_group(L1) + T1 = discriminant_group(L1) @test isgenus(T1, (6,0)) == true @test isgenus(T1, (4,2)) == false @test isgenus(T1, (16,2)) == true diff --git a/test/RCF/conductor_sieve.jl b/test/RCF/conductor_sieve.jl index 2992217c7f..be9a34f38d 100644 --- a/test/RCF/conductor_sieve.jl +++ b/test/RCF/conductor_sieve.jl @@ -1,7 +1,7 @@ @testset "RCF" begin @testset "abelian extensions && related examples" begin - + Qx, x = PolynomialRing(FlintQQ, "x") K, a = NumberField(x - 1, "a") l = Hecke.abelian_normal_extensions(K, Int[2,2], fmpz(10)^4) @@ -9,7 +9,7 @@ l1 = collect(Hecke.C22_extensions(10^4)) @test length(l1)==47 @test length(abelian_fields(FlintQQ, [3], fmpz(10)^3)) == 5 - + K, a = number_field(x^2+1, "a") auts = small_generating_set(automorphisms(K, copy = false)) l = Hecke.abelian_normal_extensions(K, Int[2], fmpz(10)^5) diff --git a/test/RCF/rcf.jl b/test/RCF/rcf.jl index 3ead4c4ef3..d586e41608 100644 --- a/test/RCF/rcf.jl +++ b/test/RCF/rcf.jl @@ -42,13 +42,13 @@ L2 = number_field(H, using_stark_units = true, redo = true) @test isisomorphic(Hecke.simplified_absolute_field(L1)[1], Hecke.simplified_absolute_field(L2)[1])[1] @test length(closure(Hecke.absolute_automorphism_group(H), *)) == 10 - + r, mr = Hecke.ray_class_groupQQ(Z, 32, true, 8); q, mq = quo(r, [r[1]]) C = ray_class_field(mr, mq) KC = number_field(C) auts = Hecke.rel_auto(C) - @test length(closure(auts, *)) == 8 + @test length(closure(auts, *)) == 8 k, a = wildanger_field(3, 13) zk = maximal_order(k) @@ -56,7 +56,7 @@ @test degree(r0) == 9 r1 = ray_class_field(4*zk, n_quo = 2) r2 = ray_class_field(5*zk, n_quo = 2) - @test isone(conductor(intersect(r1, r2))[1]) + @test isone(conductor(intersect(r1, r2))[1]) @test conductor(r1 * r2)[1] == 20*zk @test Hecke.issubfield(r1, r1*r2) @test !Hecke.issubfield(r0, r1*r2) @@ -88,7 +88,7 @@ K, _ = compositum(k, wildanger_field(3, 13)[1]) A = maximal_abelian_subfield(ClassField, K) @test degree(A) == 2 - @test degree(intersect(A, cyclotomic_field(ClassField, 10))) == 1 + @test degree(intersect(A, cyclotomic_field(ClassField, 10))) == 1 end @testset "Some abelian extensions" begin diff --git a/test/Sparse/Matrix.jl b/test/Sparse/Matrix.jl index 5e7d28dd12..da6e4c2574 100644 --- a/test/Sparse/Matrix.jl +++ b/test/Sparse/Matrix.jl @@ -5,7 +5,7 @@ using SparseArrays M = SMatSpace(R, 3, 3) @test R == @inferred base_ring(M) - + A = identity_matrix(FlintZZ, 3) Asparse = sparse_matrix(A) @@ -145,7 +145,7 @@ using SparseArrays v = fmpz[1 1 1; 1 2 3; 0 0 4; 0 0 0] w = @inferred mul(D, view(v, 2:4, :)) @test w == fmpz[1 2 23; 0 0 0; 0 0 4] - + v = matrix(FlintZZ, fmpz[1 2 3; 0 0 4; 0 0 0]) w = @inferred mul(D, v) @test w == matrix(FlintZZ, fmpz[1 2 23; 0 0 0; 0 0 4])