-
Notifications
You must be signed in to change notification settings - Fork 36
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
Method rank adjustment needed in GreensXClassOfElement #531
Comments
Just to comment that the checking for finiteness inside the method (not in the filter) is intentional, since we have some methods for checking if some types of semigroups are finite, without enumerating them. |
Of course! |
Is this resolved @wilfwilson ? Or are we waiting for something? If it's resolve, please close the issue. Thanks! |
Sorry, don't close the issue but mark it |
This specific problem is resolved, but we should expect similar such problems in the future. |
Why should we expect similar such problems in the future @wilfwilson ?? |
In GAP's master branch, gap-system/gap#2773 was merged, fixing gap-system/gap#2513. The result is that the applicability of methods is now being calculated correctly. In particular, for semigroup-related objects, this means that in some cases different methods are being applied from before, and not necessarily the ones that we want. This is causing problems, and I believe it is our problem to fix these things when they arise. For instance, in this issue, the Semigroups package methods for My belief is that there will be other places where this causes problems in the Semigroups package, so we should be on the lookout for GAP library methods (or methods in other packages) being applied to semigroups-related things when we think the Semigroups package methods should apply instead. The fixes will require rank adjustments, or adjustments to the actual filters. |
Unfortunately @james-d-mitchell this situation is messier than I had hoped. In my PR #533 I stopped the specific thing above from being a problem. But it's not enough in general. My 'fix' was to add The problem is that, if enough packages are loaded and implications added, The nice solution to this is to use Alternatively, we add some huge constants, like Or we could add methods whose filters match the GAP methods' filters, and which do what we want. (Our methods would beat GAP thanks to being loaded later; they would always have equal rank). But such code duplication seems silly. |
Resolved in v3.0.20. |
Example:
GreensDClassOfElement
has filters[IsSemigroup, IsMultiplicativeElement]
, which (now that GAP master branch has fixed ranks of methods) is beaten by the library method with filters[IsSemigroup and HasIsFinite and IsFinite, IsObject]
. The method is the Semigroups package also applies only to finite semigroups, but since it first checks whether its argument is finite, the result is that it has a lower rank than the worse library method.Therefore the following things happen:
This leads to horrendous diffs in the test files.
The text was updated successfully, but these errors were encountered: