Write the k-subset actions of Alt(n) and Sym(n) as calls - #85
Open
fingolfin wants to merge 3 commits into
Open
Conversation
PGAltOnSets(n,k) and PGSymOnSets(n,k) are whole entries: the order, the Johnson suborbits Binomial(k,i)*Binomial(n-k,i), the transitivity, the name and the socle all follow from n and k, so the entry is the call. At n = 45, k = 2 that replaces a 56-digit order and the pair 86, 903 spelled out beside it. Field 9 is ["sets", inner, k], where inner names a construction rather than being one, so that PSL(2,q) on the 2-subsets of the projective line needs a case in PRIMGRP_InnerGroup rather than a form of its own. PGOnSetsGroup checks that the inner group really is k-homogeneous instead of assuming it, since otherwise the degree would silently be wrong, and sorts the orbit before acting on it, since Orbit promises no order and which group comes out depends on it. dev/convert-ksets.g decides which of the two a given entry is by evaluating both and comparing, and then builds the group and measures it, because field 9 stops holding permutations and the group afterwards is a different conjugate. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
All 258 of them, degrees 10 to 4095, converted by dev/convert-ksets.g:
gap -q -b -A --quitonbreak -l "ROOT;" -c 'conv_dir:="data";;' \
dev/convert-ksets.g
data/ falls from 16.97 MB to 14.65 MB. None was left behind.
196 entries change, and only in two fields, which was checked by dumping fields
1 to 8 of all 24558 entries before and after and comparing them field by field.
162 have their suborbits sorted. They were held in whatever order the
generators produced them; field 5 is compared as a set at its one use in
PrimitiveIdentification, so the order carries no information.
244 are renamed. Three conventions were in use at once -- "A(n)" up to degree
50, "Alt(n)" above it, and no name at all for the 58 entries past degree 2555 --
and they collapse to the first, which is what the natural alternating and
symmetric groups have always shown.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #85 +/- ##
==========================================
+ Coverage 99.11% 99.12% +0.01%
==========================================
Files 46 46
Lines 38323 38360 +37
==========================================
+ Hits 37984 38025 +41
+ Misses 339 335 -4
🚀 New features to boost your workflow:
|
ThomasBreuer
approved these changes
Sep 8, 2026
Contributor
There was a problem hiding this comment.
Looks good.
I would suggest to replace the function calls of the form PGAltOnSets(6,2) by descriptions of the form ["PGAltOnSets",6,2] (likewise for PGSymOnSets), and to postpone the evaluation until the entry in question is really accessed. There are already similar situations, the functions PGAlt and PGSym occur as entries.
(I understand that the drawback of this idea is that it may be more complicated to verify that the situations before and after the changes are the same.)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PGAltOnSets(n,k)andPGSymOnSets(n,k)return a wholePRIMGRPentry. The order, the transitivity, the socle, the name and the suborbits all follow from n and k, so nothing is stored but the call. The suborbits are the subdegrees of the Johnson scheme: the stabiliser of a k-set S has one orbit for each i, holding the k-sets that agree with S in all but i of its points. At n = 45, k = 2 that replaces a 56-digit order and the pair 86, 903 written out beside it.Field 9 becomes
["sets", <inner>, <k>], where<inner>describes the group being acted with rather than being it. A family with a different inner group, such as PSL(2,q) on the 2-subsets of the projective line, then needs a case inPRIMGRP_InnerGroupand not a form of its own.PGOnSetsGroupchecks that the inner group really is k-homogeneous rather than assuming it, since otherwise the degree would silently be wrong, and sorts the orbit before acting on it, sinceOrbitpromises no order and which permutation group comes out depends on it.All 258 such entries are converted.
data/falls by 2.3 MB.Two fields change besides field 9, and both are declared:
A(n)up to degree 50,Alt(n)above it, and no name at all for the 58 entries past degree 2555. They collapse toA(n)andS(n), which is whatPrimitiveGroupalready displayed for the natural actions.PrimitiveIdentification, so the order carries no information.Everything else is unchanged: fields 1 to 8 of all 24558 entries were dumped before and after and compared. Which of the two constructors an entry is was decided by evaluating both and comparing, then by building the group and measuring its degree, order, primitivity, transitivity and suborbits, because field 9 stops holding permutations and the group afterwards is a different conjugate.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
As before, this PR has three commits: one which adds scripts for doing the conversion, one which applies them, one which drops the scripts again (I've retained a local copy of those scripts so we can re-use them for the order 8191 import)