SchubertPolynomialRing causes symmetrica and Sage to crash on bad input
|Reported by:||VivianePons||Owned by:||VivianePons|
|Component:||combinatorics||Keywords:||days38, Schubert polynomials|
|Cc:||sage-combinat, nthiery||Merged in:||sage-5.3.beta1|
|Authors:||Viviane Pons||Reviewers:||Mike Hansen|
|Report Upstream:||N/A||Work issues:|
Description (last modified by )
The SchubertPolynomialRing? expects a permutation as an index. When a list is given which is not a permutation, the object is created anyway. The problem comes when one tries to expand the polynomial, if the index is not a valid permutation, it makes symmetrica crash which makes Sage crash !
sage: S = SchubertPolynomialRing(ZZ) sage: pol = S([2,1,3]) sage: pol.expand() x0 sage: pol = S([2,1,1]) sage: pol.expand() function: mult_apply_integer(2) python: function: mult_apply_integer(2) : Operation not permitted
So the idea would be to check when the polynomial is created that the input is correct and raise an exception at this point if it's not.
New behaviour is now :
sage: X = SchubertPolynomialRing(QQ) sage: X._element_constructor_([1,2,1]) Traceback (most recent call last): ... ValueError: The input [1, 2, 1] is not a valid permutation sage: X._element_constructor_(Permutation([1,2,1])) Traceback (most recent call last): ... ValueError: The input [1, 2, 1] is not a valid permutation
Tests have been added into the documentation.
The patch is attached to the ticket and also available into Sage-Combinat
Change History (8)
Changed 5 years ago by
comment:1 Changed 5 years ago by
- Description modified (diff)
- Status changed from new to needs_review