-
-
Notifications
You must be signed in to change notification settings - Fork 479
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
Implement a hook to access free (graded) resolutions #34379
Comments
comment:1
@kwankyu How broadly is Singular's functionality for free (graded) resolutions support to work? I can't seem to find anything definitive in the online documentation. Will it work for any commutative ring? How about any integral domain, such as
The submodule code currently does not quite do this. (I am doing #34380 to be able to make submodules over more arbitrary integral domains.) |
comment:2
Replying to @tscrim:
Only quotients of free modules over multivariate polynomial rings.
This is pretty definitive: https://www.singular.uni-kl.de/Manual/4-3-1/sing_988.htm#SEC1047
Definitely not. Singular uses Groebner bases, which do not apply to arbitrary commutative rings. Or do I misunderstand your question? |
comment:3
Replying to @kwankyu:
I don't find it so clear. What
I am not an expert in (computational) commutative algebras; thank you for the explanation. So I will likely have to raise |
comment:4
Replying to @tscrim:
I agree that it is vague. It says that In Singular, a monomial order > can be global, local, or mixed. Depending on this, K[x]_> may define just K[x], a localization of K[x], or something more complicated. So according to the above definition, I never worked in Singular with a monomial order other than global, the usual monomial orders. As far as I know, Sage also uses Singular's functionality limited to global monomial orders. For (graded) free resolutions imported into Sage in a recent ticket, I just looked over Singular manual, and I found no example of computing a free resolution for a module where
|
comment:5
It seems that #33950 doesn't handle the univariate case either:
Is this expected? From the Singular documentation, I am guessing it also requires the polynomial ring to be over a field (mainly Z is not allowed either)? |
Dependencies: #32324 |
comment:6
Of course, I can trick Sage into making the univariate polynomial ring believe it is a multivariate one implemented in Singular. Although I would hope there would be an easier mechanism for doing this. |
comment:7
For example
|
comment:8
Another way of asking the above is there an easy way to make the univariate case work without converting everything to the Singular implementation? |
comment:9
Univariate polynomial rings over fields are PIDs and submodules of free modules over PIDs are free, right? So perhaps we should just handle this case within Sage? |
comment:10
A very minor typographical bug:
|
comment:11
Replying to @tscrim: You meant #33950.
Right.
Perhaps Singular requires K of K[x] to be a field. With R univariate polynomial ring, there is nothing interesting with free resolutions, as all submodules are free as you said. |
comment:12
Replying to @kwankyu:
Yes; I fixed this above.
It actually doesn't seem to be too hard to have a check for this and tweak the code to handle these cases. |
comment:13
Replying to @tscrim:
How did you get this? What is |
comment:14
I am using |
comment:16
Replying to @kwankyu:
Actually, there is no way it is the one from comment:7...I just forgot which one I used in my haste.
Will do. |
Author: Travis Scrimshaw |
Commit: |
comment:17
Okay, it is finally all ready. It took me a bit of time to figure out that when the matrix over-determines the system over a PID, then we should compute the echelon form. One point of controversy might be the repr for the multigraded cases. My change effects the prints New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:19
This should now pass the patchbot. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:60
In In |
comment:61
Replying to Kwankyu Lee:
This is what we agreed on: special check for matrices because you wanted the code to handle it but not add a method to the matrix classes. Thus, the main entry point needs to process it. Everything else is delegated to
I require the ideal is principal, which is automatically free because it has a single generator. This case holds for all commutative rings, right? All other cases will raise an |
comment:62
Replying to Travis Scrimshaw:
Yes.
I see. Okay. |
comment:63
If you’re good with my changes and the patchbot comes back green (or you are confident with the appropriate tests being run), then positive review? |
comment:64
Replying to Travis Scrimshaw:
No. I wanted that the matrix input is kept in ( For |
comment:65
You removed
from |
comment:66
Replying to Kwankyu Lee:
This isn't really that much of a burden, especially since we don't fundamentally want to work with the module but the underlying matrix. We have a good justification for the special case of matrices.
If the class accepts a matrix, then the dispatcher should be able to handle the matrix. I think it would be really strange to have this discrepancy. Plus the constructor does some things to sanitize the input; in particular, it makes sure the matrix is immutable as this can lead to some very subtle bugs that are very hard to track down. (For example, you pass a mutable matrix into the constructor, compute the resolution, mutate the matrix; now the resolution does not necessarily match the input matrix.) Actually, this makes me think of a case it should also handle: a free resolution input (where it would just return the input up to maybe stripping/adding the grading). |
comment:67
Replying to Kwankyu Lee:
These are handled by the respective |
comment:69
Replying to Travis Scrimshaw:
Why? This is strange. |
comment:70
trac is buggy... |
comment:71
Replying to Kwankyu Lee:
Right, that was dumb of me. I was thinking it was more Do you think it would be useful to implement a method in graded free resolutions like |
comment:72
Replying to Travis Scrimshaw:
No as far as I know. Let's leave that as a future work for who needs it. |
comment:73
Now let this go. |
Branch pushed to git repo; I updated commit sha1 and set ticket back to needs_review. New commits:
|
comment:76
Thank you. This improved the code from my original proposal. It took me a minute to realize that this is equivalent to the way I am used to seeing the definition of a resolution with |
comment:77
Replying to Travis Scrimshaw:
Thank you for the work. If we want to be more mathematical, matrix input may be entirely removed. But we may regard matrix input as an added conveniency feature. I am happy in either way.
A resolution of https://faculty.math.illinois.edu/Macaulay2/Book/ComputationsBook/book/book.pdf It seems that "resolution of
where the canonical map |
Changed branch from public/rings/free_gr_res_hook-34379 to |
In #33950, free (graded) resolutions for modules over polynomial rings were added. However, one needs to import a top-level function to do the construction. The goal of this ticket is to add a method, such as
free_resolution()
, to these (sub)modules (and ideals) to ease access.Depends on #33950
CC: @kwankyu
Component: user interface
Author: Travis Scrimshaw
Branch/Commit:
6dba5e5
Reviewer: Kwankyu Lee
Issue created by migration from https://trac.sagemath.org/ticket/34379
The text was updated successfully, but these errors were encountered: