Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How to properly declare indeterminates so that they exisist in the coefficient ring.

I'm working on a project regarding generalization of symmetric polynomials.

For the sake of simplicity, I will ask my question in the context of a minimalistic (not) working example.

Let say I am working with Symmetric Functions, I'll write an erroneous code so that you get the idea of what I'm looking for

QQt = QQ['t'].fraction_field()
Sym = SymmetricFunctions(QQt); Sym.inject_shorthands()

a0 = var('a0')
expr1 = m[1,1]
expr2 = m[2] + a0*m[1,1]

eqsys = expr1.scalar_jack(expr2)
solve(eqsys, a0)

The I get the error unsupported operand parent(s) for *: 'Symbolic Ring' and 'Symmetric Functions over Fraction Field of Univariate Polynomial Ring in alpha over Rational Field in the monomial basis' OK, so I tried this instead

QQt = QQ['t,a0'].fraction_field()
t, a0 = QQt.gens()
Sym = SymmetricFunctions(QQt); Sym.inject_shorthands()
expr1 = m[1,1]
expr2 = m[2] + a0*m[1,1]
eqsys = expr1.scalar_jack(expr2)
solve(eqsys, a0)

a0 is not a valid variable So then I did the following

 sln = solve(SR(eqsys), SR(a0))

and it works. But the probleme is that I can't convert the solution back

QQt(sln)

('cannot convert {!r}/{!r} to an element of {}', {a0: 2/(t + 1)}, 1, Fraction Field of Multivariate Polynomial Ring in t, a0 over Rational Field)

And anyway this last solution does not seem very canonical. How should I proceed? I guess that somehow what I am asking is how to declare a0, a1, ... as symbols element of QQt.

How to properly declare indeterminates so that they exisist in the coefficient ring.

I'm working on a project regarding generalization of symmetric polynomials.

For the sake of simplicity, I will ask my question in the context of a minimalistic (not) working example.

Let say I am working with Symmetric Functions, I'll write an erroneous code so that you get the idea of what I'm looking for

QQt = QQ['t'].fraction_field()
Sym = SymmetricFunctions(QQt); Sym.inject_shorthands()

a0 = var('a0')
expr1 = m[1,1]
expr2 = m[2] + a0*m[1,1]

eqsys = expr1.scalar_jack(expr2)
solve(eqsys, a0)

The I get the error unsupported operand parent(s) for *: 'Symbolic Ring' and 'Symmetric Functions over Fraction Field of Univariate Polynomial Ring in alpha over Rational Field in the monomial basis' OK, so I tried this instead

QQt = QQ['t,a0'].fraction_field()
t, a0 = QQt.gens()
Sym = SymmetricFunctions(QQt); Sym.inject_shorthands()
expr1 = m[1,1]
expr2 = m[2] + a0*m[1,1]
eqsys = expr1.scalar_jack(expr2)
solve(eqsys, a0)

a0 is not a valid variable So then I did the following

 sln = solve(SR(eqsys), SR(a0))

and it works. But the probleme is that I can't convert the solution back

QQt(sln)

('cannot convert {!r}/{!r} to an element of {}', {a0: 2/(t + 1)}, 1, Fraction Field of Multivariate Polynomial Ring in t, a0 over Rational Field)

And anyway this last solution does not seem very canonical. How should I proceed? I guess that somehow what I am asking is how to declare a0, a1, ... as symbols element of QQt.