Ore_algebra[dual_algebra]  return the dual algebra of an Ore algebra, that is, its opposite ring
Ore_algebra[dual_polynomial]  map a skew polynomial of an Ore algebra to the dual algebra
Ore_algebra[reverse_algebra]  return an Ore algebra with opposite normal forms
Ore_algebra[reverse_polynomial]  change normal form of a skew polynomial in an Ore algebra

Calling Sequence


dual_algebra(A, x_set)
dual_polynomial(p, A, x_set)
reverse_algebra(A, x_set)
reverse_polynomial(p, A, x_set)


Parameters


A



Ore algebra

x_set



subset of the (polynomial) indeterminates of the algebra, or the string to denote all indeterminates

p



skew polynomial





Description



Both commands are useful to compute left gcds and to perform other calculations based on left skew Euclidean division (see examples below and skew_gcdex).

•

Skew polynomials of an Ore algebra A in the indeterminates (see skew_algebra) are represented under the normal form where all the x[i]s stand on the left of the monomials and all the d[i]s on the right.

•

The reverse_polynomial(p, A, x_set) function changes the representation of a skew polynomial p in A by moving all the d[i]s in x_set to the left of monomials, and the corresponding x[i]s to the right.

•

Correspondingly, the reverse_algebra(A, x_set) function returns an Ore algebra in which calculations with the new normal forms (returned by reverse_polynomial take place.

•

These functions are part of the Ore_algebra package, and so can be used in the form dual_algebra(..), dual_polynomial(..), reverse_algebra(..) or reverse_polynomial(..) only after performing the command with(Ore_algebra) or with(Ore_algebra,<function>). The functions can always be accessed in the long form Ore_algebra[dual_algebra](..), Ore_algebra[dual_polynomial](..), Ore_algebra[reverse_algebra](..) and Ore_algebra[reverse_polynomial](..).



Examples


>


Differential operators
>


Dual and reverse polynomials look similar, but the dual polynomial is a polynomial in Dx with coefficients in x while the reverse polynomial is a polynomial in x with coefficients in Dx.
>


 (1) 
>


 (2) 
>


 (3) 
>


 (4) 
>


 (5) 
Shift operators
>


Dual and reverse polynomials look similar, but the dual polynomial is a polynomial in Sn with coefficients in n while the reverse polynomial is a polynomial in n with coefficients in Sn.
>


 (6) 
>


 (7) 
>


 (8) 
>


 (9) 
>


 (10) 
Eulerian operators
>


Dual and reverse polynomials look similar, but the dual polynomial is a polynomial in Tx with coefficients in x while the reverse polynomial is a polynomial in x with coefficients in Tx.
>


 (11) 
>


 (12) 
>


 (13) 
>


 (14) 
>


 (15) 
`q`Shift operators
>


Only dual polynomials are available.
>


 (16) 
>


>


 (17) 
>


>


 (18) 
>


 (19) 
Computation of left gcds and left lcms
The function Ore_algebra[skew_gcdex] inputs two polynomials p and q and computes a list such that and . The polynomial g is a right gcd of p and q. Applying the dualization operator yields a list such that and , where is a left gcd of and . The following method to compute left gcds is based on this idea.
>


Define two polynomials P and Q that share a left common divisor.
>


 (20) 
>


 (21) 
>


 (22) 
>


 (23) 
>


 (24) 
Introduce their dual polynomials and compute their right gcd in the dual algebra, corresponding the to left gcd of the original polynomials in the original algebra.
>


 (25) 
>


 (26) 
>


>


 (27) 
The dual of a dual polynomial is the polynomial.
>


 (28) 
This is the left gcd, up to renormalization (by multiplication by a rational function on the right).
>


 (29) 
This is also the builtin left factor r, up to renormalization (by multiplication by a rational function on the right).
>


 (30) 
This calculation is that performed by Ore_algebra[skew_gcdex] with the options and .
>


 (31) 

