#29543 closed enhancement (fixed)
normal_basis for positivedimensional ideals
Reported by:  ghmwageringel  Owned by:  

Priority:  major  Milestone:  sage9.1 
Component:  commutative algebra  Keywords:  singular 
Cc:  klee  Merged in:  
Authors:  Markus Wageringel  Reviewers:  Travis Scrimshaw, Kwankyu Lee 
Report Upstream:  N/A  Work issues:  
Branch:  8fd5628 (Commits, GitHub, GitLab)  Commit:  8fd56280a16c52638ae9a0e324162e4c6258acf4 
Dependencies:  Stopgaps: 
Description
This ticket adds a degree
option to the normal_basis
method of ideals.
This allows to limit the output to monomials of a particular degree, which is useful when the corresponding quotient ring is not finitedimensional as a vector space.
sage: R.<x,y,z> = QQ[] sage: I = R.ideal(x^2 + y^2  1) sage: [I.normal_basis(d) for d in (0..3)] [[1], [z, y, x], [z^2, y*z, x*z, y^2, x*y], [z^3, y*z^2, x*z^2, y^2*z, x*y*z, y^3, x*y^2]]
Previously, the method could only be used when the quotient ring was finitedimensional.
This functionality is provided by Singular. For reference, the corresponding Singular function is kbase.
Change History (8)
comment:1 Changed 17 months ago by
 Branch set to u/ghmwageringel/29543
 Commit set to 223802c0c46154392886f77378a80d41d24ae87c
 Keywords singular added
 Status changed from new to needs_review
 Summary changed from normal_basis() for positivedimensional ideals to normal_basis for positivedimensional ideals
comment:2 Changed 17 months ago by
 Reviewers set to Travis Scrimshaw
Note that this change is backwards incompatible for anyone who was passing algorithm
to normal_basis
but not as a keyword. IMO, this is sufficiently unlikely to warrant additional action, but you could do a deprecation warning if isinstance(degree, str):
to possibly catch this. I leave that choice up to you. Either way you decide, you can set a positive review (after adding the deprecation).
comment:3 Changed 17 months ago by
Some comments:
(1) An explicit OUTPUT seems better.
INPUT:   ``degree``  integer; if not ``None``, return only the monomials of  the given degree +  ``degree``  ``None`` or integer + + OUTPUT: + + If ``degree`` is an integer, only the monomials of the given degree in + the normal basis.
(2) Some trimming.
"""  Return a vector space basis (consisting of monomials) of the  quotient ring of this ideal. + Return a vector space basis of the quotient ring of this ideal. INPUT:   ``degree``  integer (default: ``None``); if not ``None``, return  only the monomials of the given degree    ``algorithm``  string (default: ``"libsingular"``); if different  from the default, this will use the ``kbase()`` command from  Singular instead of libsingular    ``singular``  instance of Singular interface (default: the default  instance); the singular interpreter to use when ``algorithm`` is not  ``"libsingular"`` +  ``degree``  integer (default: ``None``) + +  ``algorithm``  string (default: ``"libsingular"``); if not the + default, this will use the ``kbase()`` command from Singular + +  ``singular``  the singular interpreter to use when ``algorithm`` is + not ``"libsingular"`` (default: the default instance) + + OUTPUT: + + Monomials in the basis. If ``degree`` is given, only the monomials of + the given degree.
comment:4 Changed 17 months ago by
 Commit changed from 223802c0c46154392886f77378a80d41d24ae87c to 8fd56280a16c52638ae9a0e324162e4c6258acf4
Branch pushed to git repo; I updated commit sha1. New commits:
8fd5628  29543: add deprecation and reformat docstring

comment:5 Changed 17 months ago by
Thanks for the suggestions. I have implemented them accordingly. Indeed, it is good to keep backward compatibility when possible.
comment:6 Changed 17 months ago by
 Reviewers changed from Travis Scrimshaw to Travis Scrimshaw, Kwankyu Lee
 Status changed from needs_review to positive_review
comment:7 Changed 17 months ago by
 Branch changed from u/ghmwageringel/29543 to 8fd56280a16c52638ae9a0e324162e4c6258acf4
 Resolution set to fixed
 Status changed from positive_review to closed
comment:8 Changed 17 months ago by
 Milestone changed from sage9.2 to sage9.1
New commits:
29543: add degree option to normal_basis