-
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
Merging #2640 broke Semigroups #2737
Comments
That's unfortunate. The latest release of Semigroups did not compile with master branch since mid-June (see semigroups/Semigroups#497) and while testing this PR there was no way to spot this. The fix for the compilation problem was merged in Semigroups repository on June 18th (semigroups/Semigroups#499) but no release followed, so who knew? First, I am now setting up another Travis test which will use nightly build Docker container for master branch with packages-master.tar.gz archive to test development versions of packages. This will be limited to packages from gap-packages organisation as an additional benefit of hosting a package repository there. Second, dependently on how complicated reworking the Semigroups is as @james-d-mitchell thinks, we can:
|
Side remark: I have a version which gets a Docker container |
Just for the record, the reason that Semigroups didn't compile against GAP The matrix code in Semigroups has been there since June 2017, it is likely to be complicated to resolve this, and it is unlikely that I can resolve the issues before September. |
Maybe I should also add that I'm in favour of the MatrixObj stuff and that the matrix stuff in Semigroups was only ever meant to be a temporary solution. |
@james-d-mitchell so I think we will have to revert #2640 for GAP 4.10. Maybe even not being too fast in merging it back into master and breaking Semigroups, but wait till you will hopefully be ready to start to update Semigroups? |
I would strongly prefer not to revert #2640. This has been cooking for far too long, without progress, and we need it exposed to catch conflicts like this. What exactly are the conflicts? I don't have time to test right now, but from the issue description, it sounded as if "only" the If so, we could temporarily disable/rename the new Yet another alternative: perhaps I or somebody else can make a "fix" for semigroups that @james-d-mitchell then only has to merge. But that only helps if James has time to cut a release of semigroups; but it didn't quite sound like that? |
As far as I can see right now there are two problems:
|
One possible suggestion, rather than un-merge from master we could add a temporary constant boolean, set to false by default until after 4.10 is released, to enable/disable MatrixObj? (I haven't looked at the code carefully, so I don't know if that is a reasonable suggestion, sorry). |
This is now a crucial issue to decide before branching off stable-4.10... |
@alex-konovalov @ChrisJefferson and @markuspf just discussed a way forward on this for 4.10; The suggestion is to introduce a command-line option (say I was looking into this but am now: I would probably disable the whole lot of methods installed for Do any other packages already rely on matrixobj? |
I can try renaming the operation |
Just renaming I have a fairly small pull request coming up of which I'd like to see the test outcomes. It fixes |
Thanks @markuspf, I'll be happy to make a release of Semigroups if we can make a suitable fix. |
Just to mention: from my POV, if necessary it would also be a possibility to modify the ranks of the GAP I hope I can free my brain to help deal with this issue sometime soon; in the meantime, thanks to all who are looking into it as well. |
Markus and I have discussing this, and it seems to us that there is no "proper" fix for this issue in the Semigroups package, but that change in GAP is required. One problem is the following:
If I recall correctly, some time in the past we changed the filter for As far as I can see, to use
this would work, but
wouldn't work. This would break backwards compatibility for Semigroups, since the latter works with GAP 4.9, but not with the Would it possible to fix GAP so that:
?? |
BTW: the documentation of
which the return value of |
I can see there's a huge appetite to resolve this issue⸮ Another possibility would be to leave GAP broken in this regard (the status quo for many years), and for the Semigroups package to simply ignore the |
I do think there is "appetite" to resolve this; but just like you, James, others are busy with other stuff / ill / on vacation etc, so it's unfortunately slow going; but I am confident we can and will resolve this (first with a workaround for 4.10; then properly later). As it is, I am a bit confused: I thought PR #2754 was supposed to be the workaround. But it wasn't merged, so perhaps there is a problem with it? But I see no hint for that on that PR?!? |
I think the confusion stems from the fact that we're trying to decide which is the best option going forward, for #2754 fixes the We identified the underlying cause for our issues to be that with the matrices returned by How will we address this issue? For a collection of matrices to be eligible to be generators of a semigroup (or monoid) they need an associative multication defined between them, such as We could write some "surface code" (for the lack of a better word) that a user can give even a list of lists of lists of semiring elements to and convert those to an appropriate (semigroups internal?) So for the purposes of (Incidentally see also #2776) |
I agree with @markuspf, there are any number of hacks that can fix this issue temporarily, but I'd like to understand what a "proper" fix, might look like. In particular, if It is probably not a very important issue for GAP what happens in |
@markuspf |
So, part of a solution to this situations is to simply not require (or rely) on @james-d-mitchell wrote:
I do not understand this. First off, why does the return value of Warning: RANT ON ;-) Also, you go on to talk about how you wait for a decision, and how what semigroups needs may not be important etc. etc. -- but as I repeatedly said before: the point of RANT OFF Anyway, on the short term, I can't make any promises on what |
Alright @fingolfin that’s all the answer I need. |
Update: so actually I am afraid that changing this now would cause all kinds of legacy code to break. The "best" solution (as far as I can judge it right now) seems to be to add a new "compressed matrix" implementation which implements the new-style MatrixObj API only - so it doesn't try to act and look like a list-of-lists, gets its own family, doesn't support unbinding entries in the middle of the matrix, and is truly compact -- see issue #2148 for details. Back to the old claim that |
Merging of #2640 broke Semigroups
(Semigroups has its own implementation of matrices, and now the
Matrix
methods from the GAP library take precedence over the semigroups ones, reworking semigroups is a bit of an undertaking).The text was updated successfully, but these errors were encountered: