Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #6409 +/- ##
==========================================
- Coverage 79.08% 79.03% -0.05%
==========================================
Files 685 685
Lines 293698 294480 +782
Branches 8664 8641 -23
==========================================
+ Hits 232262 232741 +479
- Misses 59635 59936 +301
- Partials 1801 1803 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
stertooy
left a comment
There was a problem hiding this comment.
Very happy to see this PR revived!
One thing I'm a bit wary of, is how PreImagesSet( f, U ) always returns [ ] if U is not a subset of Range( f ), even if they have non-empty intersection. Intuitively, I would expect this function to follow the standard(?) mathematical definition of
PreImagesSetNC( Intersection( Range( f ), U ) )
|
@stertooy It's so good to get feedback on this work - I will get on with making the changes you suggest. |
|
Now I am really confused. The manual states: "If elms is a subset of the range of the general mapping map then PreImagesSet returns the set of all preimages of elms under map." Sticking to that, PreImagesSet should return fail if U is not a subset of the range. Alternatively, we could ditch PreImagesSetNC, and redefine PreImagesSet to return the preimage of the intersection, which could be []. |
|
Perhaps this is why I returned [] in PreImagesElm when the test failed: |
I think the question is what we want the non-NC functions to do for elements/sets not contained in the range. I see two options:
The former option keeps the NC and non-NC versions closer together, with the only difference being a extra check, which is what an NC version usually indicates in GAP. The latter option sticks closer to the standard mathematical definitions. Either option is fine with me (with a preference for option 2), but it should at least be consistent across all the affected functions.
I think we should still keep Perhaps @fingolfin @ThomasBreuer @hulpke want to weigh in, given that they were active in #4809 and #5173? |
|
Thanks for working on this again, @cdwensley. Unfortunately I don't have the bandwidth available to read all here, think about it, and come up with a good stance right now -- we'll get there, but I am afraid not in time for GAP 4.16.0 -- but I am confident it'll get merged eventually, certainly before 4.17.0. I'll try to get back to this when I have some mental capacity for it |
|
I think part of the reason of NC functions is to actually not have to worry about issues such as membership (which might require an extra test). |
|
Never expected it to make 4.16.0 but I will try to keep it up-to-date with gapdev.On 28 May 2026, at 01:03, Max Horn ***@***.***> wrote:fingolfin left a comment (gap-system/gap#6409)
Thanks for working on this again, @cdwensley. Unfortunately I don't have the bandwidth available to read all here, think about it, and come up with a good stance right now -- we'll get there, but I am afraid not in time for GAP 4.16.0 -- but I am confident it'll get merged eventually, certainly before 4.17.0.
I'll try to get back to this when I have some mental capacity for it
—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
|
Agree - will make adjustments in due course.On 28 May 2026, at 02:49, Alexander Hulpke ***@***.***> wrote:hulpke left a comment (gap-system/gap#6409)
I think part of the reason of NC functions is to actually not have to worry about issues such as membership (which might require an extra test).
I.e. the result of PreImagesSetNC should undefined if the set is not in the image of the map, but if it is returns the same as PreImagesSet.
—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Teach args helper about multi-arg variadic functions.
…s were not supported (#6401) Add runtime argument checks to the user-facing GF2 and 8-bit kernel entry points instead of relying on debug-only assertions or unchecked representation assumptions. Use shared Require helpers for compressed vectors and matrices, and tighten plain-list validation where these entry points expect list-backed inputs. Harden the exported vec8bit kernel entry points that assumed a first row existed, and fix SHIFT_VEC8BIT_RIGHT for empty compressed vectors. AI assistance from OpenAI Codex helped prepare these kernel validation changes. Co-authored-by: Codex <codex@openai.com>
Resolves #2570 Co-authored-by: Codex <codex@openai.com>
If input group is infinite or not solvable, fail is returned.
Mostly avoid putting to many things on one line, for better readability and more accurate code coverage tracking. Also remove obsolete restrictions for perfect group orders 86016, 368640, 737280
... as discussed on PR #6357
This undocumented function accepted more than one argument, but ignored any beyond the first. Apparently this was introduced in the GAP 4.5 days for compatibility reasons? But compatibility with what? No package known to me calls this. For reference in GAP 4.4 it had two arguments (but also was undocumented, and not called by any outside code).
The OrbitStabilizer entry in the reference manual only documented the algorithm, not what the operation returns. Adds: - A short sentence explicitly stating the return value is an immutable record with `orbit` (the orbit as a list) and `stabilizer` (the point stabilizer subgroup of G). - A small example block using the same `g:=Group((1,3,2),(2,4,3));;` setup already used by the adjacent `Stabilizer` example, so the rendered output is identical to verified output already in this file.
|
Many thanks @ThomasBreuer for all these corrections - sorry about the silly error. |
ThomasBreuer
left a comment
There was a problem hiding this comment.
Thanks.
One more suggestion for fixing a typo.
And I am wondering whether also PreImageElm should be changed in the same spirit.
What is missing now is some text for the release notes. The following description would fit but is admittedly quite long.
- Change the definitions of
PreImagesElm,PreImagesRepresentative,PreImagesSetin the case that the given element or set is not contained in theRangeof the general mapping:
Up to now, nothing was guaranteed in this case.
From now on, an error message is shown in this case. - Introduce new operations
PreImagesElmNC,PreImagesRepresentativeNC,PreImagesSetNC,
turn all GAP library methods forPreImagesElm,PreImagesRepresentative,PreImagesSetinto methods for the newNCvariants, and install methods for the non-NCvariants that first test the given element or set for containment in theRangeof the given general mapping and then delegate to theNCvariants. - In all GAP library methods for
PreImagesElm,PreImagesRepresentative,PreImagesSet, check whether the given element or set is contained in theImageof the given general mapping.
Up to now, some of the methods had assumed this and thus gave a wrong answer if the assumption was wrong. - Users' code may benefit from changing calls to
PreImagesElm,PreImagesRepresentative,PreImagesSetinto calls of theNCvariants where possible.
Co-authored-by: Thomas Breuer <sam@math.rwth-aachen.de>
|
Regarding PreImageElm - this only applies to bijective maps, and I see no reason to change it. |
|
Interestingly, PreImage is called around 150 times in the main library, but PreImages not at all. |
|
How many of these should be changed? For example, in ghomperm.gi, line 308, |
The documentation of
The idea was that |
* Commented variables in autsr * PERFORMANCE: Make sure group knows it is autom. * Set flag that triggers the standard handling of automorphism groups.
Implements a chunked caching scheme for evaluating bijective GroupGeneralMappingByPcgs homomorphisms on PC words. Splits the source pcgs into chunks, caching linear combinations of generator images per exponent pattern, with the bottom elementary abelian layer handled via a matrix over the corresponding prime field. Includes a corresponding ImagesRepresentative method that uses this cached data for a >2.5x speedup, per the included GAPDoc example.
… results (i.e., with some entries representing the same conjugacy classes) (#6460) When mapping perm orbits first in DoConjugateInto, avoid duplication if orbit images are equivalent. Co-authored-by: Alexander Hulpke <hulpke@math.colostate.edu> Co-authored-by: Max Horn <max@quendi.de> Co-authored-by: Codex <codex@openai.com>
…files (#6467) Corrects misprints and grammatical errors (misspellings, subject/verb agreement, stray commas, non-idiomatic phrasing, etc.) in comments across all files listing Alexander Hulpke as a (co)author. Boilerplate headers, citation keys, GAP identifiers, GAPDoc markup, non-English notes, and genuinely ambiguous/garbled comments were left untouched. Co-authored-by: hulpke <hulpke@math.colostate.edu> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
... and in general make its phrasing more consistent. Also update some several outdated sections of the documentation about break loops and error handling. Co-authored-by: Codex <codex@openai.com>
* Align and clarify break loop instructions further * Adjust <Log> blocks to new late error msg * Regenerate tst/testspecial
They are not referenced anywhere and nowadays at most of historical interest.
|
Thanks for your comments. Away for a few days - will address them when we return. |
|
There was a merge conflict in |
Restyle the browser GAP page to match www.gap-system.org (Ubuntu fonts, GAP logo, crimson accents, dark-mode support) and vendor all runtime assets (xterm 4.17.0, xterm-pty 0.9.4, the fit addon, logo, fonts) so the deployed site has no CDN dependency. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
As suggested last week I have removed the recently introduced PreImagesNC from the library, though PreImages remains. In fact there were 12 calls to PreImages in the library which were changed to PreImagesNC and are now back to PreImages (in alglie.gi, grp.gi, grpnice.gi, grpprmcs.gi, mapprep.gi and relation.gi). Entries for PreImages in mapping.gd and mapping.gi have reverted to the versions in master. |
This aims to continue work on the process outlined in issue #4809, and started in PR #5073.
(The latter PR was so far out of sync with the master that rebasing has proved to be very difficult, hence this version.)
The operations PreImages, PreImagesSet, PreImagesElm and PreImagesRepresentative have all been renamed throughout the library by adding 'NC' to their names. New versions of the four operations have been introduced which just add a simple test and then call the NC versions.
Authors of packages which include a method for one of the four operations have been asked to adjust their packages to prepare for the change. The packages which have merged a PR, and made a release after that are: cryst, fr, orb, polycyclic, matgrp, qpa, rcwa, semigroups, utils and wedderga, while fga has merged a PR but not made a release.
The fining package has closed PR#28 without merging it - it installs another method for PreImagesSet.