-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CRISP pcgs error #327
Comments
I took the liberty of editing your submission slightly for readability. |
To anybody reading this: Please note that issue #160 actually already has some discussion on this (@hungaborhorvath it would have saved me some time if you had mentioned that ;-). In particluar, @bh11 did some tests which indicate that this may be a regression on the master branch, as it does not occur with stable-4.7. |
I used
The issue occurs in neither parent, it seems. So I looked at the diff to the previous state of the master branch, and some guessing finally lead me to this commit:
Reversing that commit (i.e. removing that method) resolves the problem. So perhaps that method does something wrong. Or maybe it is perfectly right, but something else relies on it not being there. Or...??? Perhaps @hulpke knows more? |
Thank you for editing my post, I have no idea how to properly format or post here. I even mentioned issue 160 in my original post, but apparently, it was not readable because of the formatting. Sorry. |
@hungaborhorvath You did mention issue #160 in your original post, and it was quite readable (BTW: the way to make it into a hyperlink is to add a hash sign # in front of th enumber. More information on this and other styling options can be found by clicking the Styling with Markdown is suported link which is shown over the text entry field). My point just was: What you wrote didn't make clear to methat behind this link I would find additional information on this issue, and the start of a full discussion of it; the fact that the link comes after dozens of lines of text doesn't help. So perhaps starting the report like this would have helped: "The following problem has already been discussed at issue #160, but since that issue is really about something else, I decided to open a new issue for it." Anyway, this is really not important :). Let me stick to the more importan point: Thank you for taking the time to report an issue! I hope we'll be able to resolve it. |
@fingolfin I don't see an problem in the code of mine you quote. It simply copies the indices at while el. ab. layers start from a parent, if the parent has such indices stored. (This was necessary to deal efficiently with subgroups in some situations. Please do not remove it.) I'm not sure about the logic of blaming this library routine: Without the package the calculation works OK. With the package it runs in an error. The library change thus exposes an issue in the package. (CRISP is providing alternate methods for some PCGS functions that also have code in the library. I am not sure whether these are really needed. If they are more efficient I would argue that they should be in the library and not in a package, as the current setup makes it easy to get such inconsistencies.) |
@hulpke Sorry for being unclear, I never meant to say or suggest that the above commit is at fault, nor that it shold be undone. And in particular, I did not mean to assign any kind of blame, least of all to you! But I think knowing about the involement of this commit in the issue at hand is helpful for debugging it. After all, we have an issue that does not occur without CRISP, but also not with CRISP and GAP 4.7. And now we know which change in GAP 4.7 -> 4.8 triggers the issue. This is purely a matter of determining the facts. Now that we know that temporarily removing that GAP method (in your local copy of the code, I mean, not the repository) avoids the issue, I hope this can help @bh11 to debug it and find the true cause. Finally I also think that it is risky that CRISP modifies library functions for PCGS'es the way it does; it necessarily relies on internal APIs; and this makes it likely that there will be breakage whenver the library PCGS code gets changed. So on the long run, I think it would be useful to change that. But this is likely not something that can be done quickly, and fixing this issue would be nice on the short run, too. |
@fingolfin It's not true that CRISP relies on internal GAP APIs - it exclusively only uses documented GAP functionality to create new pcgs when needed, and also installs a few new methods for existing documented operations. I can see nothing wrong with that. Since the bug mainifests itself in GAP code which I don't understand (with a modulo pcgs created by CRISP using standard library methods), I currently don't see how I can make any progress. |
@bh11 : Can you provide an example of this bug, where CRISP is not loaded (so extract the pcgs)? Sorry if this already exists, and I've missed it! |
@bh11: To quote the CRIPS source code, file
UPDATE: Aha, but it turns out that this file is not loaded at all. |
Just had a look at IndicesNormalSteps: imo, this method is wrong because it does not check if additional indices become normal in the smaller group. I'm not sure how this is related to the bug, CRISP doesn't use "IndicesNormalSteps". |
@fingolfin: The pcgs cache code has long been moved into the main GAP library (to avoid the mentioned problems). It's only there in CRISP to provide backward compatibility with GAP 4.4, and does not load in recent versions of GAP. But probably it's a good idea to get rid of it altogether, and to drop GAP 4.4 compatibility. |
I've looked more at the bug and tried to find where things diverge. Luckily it seems the different PCGS methods -- though I still think it is not a good idea to have this in a package -- seem to be unrelated. A binary search through the code of CRISP indicates that the error arises through its method for Looking at the code in CRISP, it calls it for a particular Indeed, if I slightly edit the method to ensure PCGS and series compatibility:
the problem vanishes. I suspect that is the cause. |
@hulpke: No, the code in SolvableSocleComponents makes no assumption about ser and any pcgs. Indeed, this is a very common situation in CRISP. EANormalSeriesByPcgs, otoh, isn't guaranteed to return a chief series, and will therefore not work in general. |
@bh11 Ah -- I have used `IndicesNormalSteps' to not require maximum refinement (but give layer steps at which lifting is possible). I will have to separate this into another attribute that does not require this maximal refinement. |
@hulpke: Seems that, indeed, the new IndicesNormalSteps method is the cause of the problem. It's being used (by some function in the GAP library) just before the problem arises. There seems to be an unwritten (?) convention that all IndicesXXX functions for pcgs add a last entry denoting the trivial subgroup (i.e., Length(pcgs)+1). Adding such an entry in your method already suffices to get rid of the bug. Btw., do you really have to introduce a new attribute? There are lots of IndicesXXX attributes available which are intended as more efficient replacements of IndicesNormalSteps and which can be "inherited" by induced pcgs using code like yours. |
I have replaced uses of |
Looks good to me – the bug is gone. |
Issue gap-system#327 is resolved.
The following code is a rewriting of the original DirectFactorsOfGroup code as
However, testing shows that on a 96-element group it gives only two direct factors, rather than the correct three, if_CRISP_is_used. Without CRISP it gives the correct result.
The code:
With CRISP I have only two direct factors.
The problem with CRISP does not always happen, but if I rerun it, then about every second time it appears. Without CRISP the result is always 3 direct factors, that are isomorphic, but not always the same three:
Burkhard observed in issue #160 that if one sets the assertion level to 1, a CRISP routine detects an inconsistency: a modulo pcgs returns wrong exponents, e.g., at the break caused by the assertion, enter
which will return [0,0] instead of [1,0].
Could someone please diagnose this? The above code would be crucial for a new DirectFactorsOfGroup code, but currently I cannot test it properly. Thank you.
Edit: apparently "permutation group of size 24 with 4 generators" and "permutation group of size 48 with 5 generators" are not visible if I put them between smaller and bigger signs as they appear in GAP output. I put them inside apostrophes.
The text was updated successfully, but these errors were encountered: