Skip to content

SchubertPolynomialRing causes symmetrica and Sage to crash on bad input #12924

@VivianePons

Description

@VivianePons

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

CC: @sagetrac-sage-combinat @nthiery

Component: combinatorics

Keywords: days38, Schubert polynomials

Author: Viviane Pons

Reviewer: Mike Hansen

Merged: sage-5.3.beta1

Issue created by migration from https://trac.sagemath.org/ticket/12924

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions