-
-
Notifications
You must be signed in to change notification settings - Fork 491
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
Add free and multigraded free resolutions with libSingular backend #33950
Comments
Branch: u/klee/33950 |
Commit: |
This comment has been minimized.
This comment has been minimized.
Author: Kwankyu Lee |
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
Branch pushed to git repo; I updated commit sha1. This was a forced push. Last 10 new commits:
|
comment:10
It is very nice to have this feature in Sage; it is something that has been missing for a long time. Sorry for taking so long to get to reviewing it. I have some issues with the overall design that I would like to discuss:
Some more trivial points:
|
comment:11
Replying to @tscrim:
No. Just thank you for attention.
As you see, the gist of the code is to convert the resolution object computed by Singular to a Sage object as fast as possible and the Sage object contains detailed information (degrees(multi degrees) of generators of component modules and the length) about the resolution. By my experiments, the resolution computation is as fast as Macaulay2. Then what do you mean by doing the computation lazily? For instance, the length is immediately available after the conversion. And I don't see anything to do lazily in this conversion. #33953 is dependent on this ticket and requires fast resolution computation. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:13
Replying to @kwankyu:
Indeed. I want to keep that in Cython, but moved to the interface file. I feel that is the more appropriate place for it.
This is what I mean: Do not ask Singular to do the computation until it is required by something the user wants to do. Now this can be improved by making the A followup ticket would be to make the API for this play nicely with FP graded modules. I would likely want an object for those resolutions, but that will take a little bit of work to handle the potentially infinite length. I can likely modify what I did for the Hochschild complex for that. Based on that, I would want to convert this to a subclass of New commits:
|
Changed branch from u/klee/33950 to public/rings/free_multigraded_resolutions-33950 |
Reviewer: Travis Scrimshaw |
comment:14
Replying to @tscrim:
The lazy computation looks good to me.
Okay. Feel free to modify the code for your needs, till the code pass the original doctests and run as fast as before. |
comment:15
Replying to @tscrim:
I felt that too, but also thought that keeping |
comment:16
I was hoping to get to this today, but something unexpected came up. The speed of the functions is not affected by being in the same Cython file. Now there will be some slight slowdown for converting the resolution class to a Python file (versus Cython), but since that is all of the boilerplate code that is called infrequently to only once (e.g., the Is there some tests I should use that are particularly good for timing purposes? |
Changed author from Kwankyu Lee to Kwankyu Lee, Travis Scrimshaw |
comment:23
Replying to @kwankyu:
Bikeshedding (nor do I really care that much): I am not sure I agree with calling it
That was not my takeaway from that discussion; nobody wanted to make a policy. Yet, I don't care too much about this file to insist.
Thank you.
Thank you for testing.
Using the numbers you gave, it less than 1% slower by comparing the means. So if this is something that is going to be called very frequently or in a tight loop, then we might want to care about it. Although I am fairly certain it will become even smaller on larger examples. If everything is good with you, then you can set a positive review and I will try to review #33953. |
comment:24
Replying to @tscrim:
Perhaps I learned somewhere that an abstract class defines interfaces, and a subclass provides implementations. A generic class provides common operations...
Thank you! |
comment:25
Replying to @kwankyu:
There isn't universal definitions of this IIRC. My understanding of Sage is a generic class is one that can do most functionality on its own, but lacks some specific features that subclasses can do. Consequently, anything that requires a subclass to implement even partial functionality should be considered an abstract class. Well, it is possible that the |
comment:27
PDF docs don't build:
|
comment:28
You either need to update
or use ⨁ (2A01) instead of ⊕ (2295). |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:30
Replying to @tscrim:
Thanks. This ⨁ (2A01) looks too big on my terminal. |
comment:31
Thanks. |
Changed branch from public/rings/free_multigraded_resolutions-33950 to |
Sage lacks free resolution computation. We add free and multigraded free resolutions pulling libSingular's resolutions. This will be a ground work for further commutative algebra and algebraic geometry computations.
Depends on #33868
Component: algebra
Author: Kwankyu Lee, Travis Scrimshaw
Branch/Commit:
73f746f
Reviewer: Travis Scrimshaw, Kwankyu Lee
Issue created by migration from https://trac.sagemath.org/ticket/33950
The text was updated successfully, but these errors were encountered: