 Overview - Maple Help

Overview of the OreTools Package Calling Sequence OreTools[command](arguments) command(arguments) Description

 • Pseudo-linear algebra (also known as Ore algebra) is the study of common properties and common mathematical abstraction of linear functional equations such as differential and difference equations. The objects of study in pseudo-linear algebra are skew polynomials, which represent single equations, and pseudo-linear operators, which represent systems.
 • Algebraic algorithms have been generalized to arbitrary pseudo-linear equations. This includes algorithms to:
 - Uncouple systems of linear functional equations
 - Construct the minimal annihilator
 - Solve the accurate integration problem
 - Find the d'Alembertian solution of linear functional equations
 • The OreTools package is designed to perform the basic arithmetic in Ore algebra. The routines are classified as follows.
 -  Define an Ore ring: SetOreRing
 -  Perform basic arithmetic: Add, Minus, ScalarMultiply, Multiply, Quotient, Remainder, Euclidean, ExtendedGCD, GCD, LCM, Primitive, Content, Normalize, MonicAssociate
 -  Apply an Ore operator to a given expression: Apply
 -  Convert between different representations by functions in the submodule Converters: Converters[FromOrePolyToLinearEquation], Converters[FromLinearEquationToOrePoly], Converters[FromOrePolyToPoly], Converters[FromPolyToOrePoly]
 -  Perform fraction-free computation by functions in the submodule FractionFree: FractionFree[RightPseudoRemainder], FractionFree[RightPseudoQuotient], FractionFree[RightEuclidean]
 -  Perform certain mathematical constructions by functions in the submodule MathOperations: MathOperations[AccurateIntegration], MathOperations[HilbertTwistReduction], MathOperations[InverseOfHilbertTwistReduction]
 -  Perform modular arithmetic by functions in the submodule Modular: Modular[Add], Modular[Minus], Modular[ScalarMultiply], Modular[Multiply], Modular[RightRemainder], Modular[RightQuotient], Modular[RightPseudoRemainder], Modular[RightPseudoQuotient], Modular[RightEuclidean], Modular[FractionFreeRightEuclidean], Modular[GCRD], Modular[LCLM]
 -  Access properties of a given algebra by functions in the submodule Properties: Properties[GetRingName], Properties[GetVariable], Properties[GetSigma], Properties[GetSigmaInverse], Properties[Getdelta], Properties[GetTheta1]
 -  Compute various coefficients and degrees of  an Ore polynomial by functions in the submodule Utility: Utility[Coefficient], Utility[Coefficients], Utility[LeadingCoefficient], Utility[TrailingCoefficient], Utility[Degree], Utility[LowDegree], Utility[VariableDegree]
 • For a brief review of pseudo-linear algebra (also known as Ore algebra), see OreAlgebra.
 • For a description of the OrePoly structure, which is used to represent an Ore polynomial, see OrePoly.
 • The main difference between the OreTools and Ore_algebra packages is that, in the OreTools package, the skew polynomial rings are defined over a field, whereas in the Ore_algebra package, the skew polynomial rings are defined over a ring.
 • Each command in the OreTools package can be accessed by using either the long form or the short form of the command name in the command calling sequence.
 As the underlying implementation of the OreTools package is a module, it is also possible to use the form OreTools:-command to access a command from the package. For more information, see Module Members. List of OreTools Package Commands

 • The following is a list of available commands.

 • To display the help page for a particular OreTools command, see Getting Help with a Command in a Package. List of OreTools Subpackages

 • The following is a list of OreTools subpackages. Examples

 > $\mathrm{with}\left(\mathrm{OreTools}\right)$
 $\left[{\mathrm{Add}}{,}{\mathrm{AdjointOrePoly}}{,}{\mathrm{AdjointRing}}{,}{\mathrm{Apply}}{,}{\mathrm{Consequences}}{,}{\mathrm{Content}}{,}{\mathrm{Converters}}{,}{\mathrm{Convertors}}{,}{\mathrm{Euclidean}}{,}{\mathrm{ExtendedGCD}}{,}{\mathrm{FractionFree}}{,}{\mathrm{GCD}}{,}{\mathrm{LCM}}{,}{\mathrm{MathOperations}}{,}{\mathrm{Minus}}{,}{\mathrm{Modular}}{,}{\mathrm{MonicAssociate}}{,}{\mathrm{Multiply}}{,}{\mathrm{Normalize}}{,}{\mathrm{ParametricGCRD}}{,}{\mathrm{Primitive}}{,}{\mathrm{Properties}}{,}{\mathrm{Quotient}}{,}{\mathrm{Remainder}}{,}{\mathrm{ScalarMultiply}}{,}{\mathrm{SetOreRing}}{,}{\mathrm{Utility}}\right]$ (1)

Define the shift polynomial ring.

 > $A≔\mathrm{SetOreRing}\left(n,'\mathrm{shift}'\right)$
 ${A}{≔}{\mathrm{UnivariateOreRing}}{}\left({n}{,}{\mathrm{shift}}\right)$ (2)
 > $\mathrm{Ore1}≔\mathrm{OrePoly}\left(-\frac{n}{n-1},-\frac{-5n+{n}^{2}+3}{n-1},n-3\right)$
 ${\mathrm{Ore1}}{≔}{\mathrm{OrePoly}}{}\left({-}\frac{{n}}{{n}{-}{1}}{,}{-}\frac{{{n}}^{{2}}{-}{5}{}{n}{+}{3}}{{n}{-}{1}}{,}{n}{-}{3}\right)$ (3)
 > $\mathrm{Ore2}≔\mathrm{OrePoly}\left(-n,3n-{n}^{2}-1,{\left(n-1\right)}^{2}\right)$
 ${\mathrm{Ore2}}{≔}{\mathrm{OrePoly}}{}\left({-}{n}{,}{-}{{n}}^{{2}}{+}{3}{}{n}{-}{1}{,}{\left({n}{-}{1}\right)}^{{2}}\right)$ (4)
 > $\mathrm{GCD}\left['\mathrm{right}'\right]\left(\mathrm{Ore1},\mathrm{Ore2},A\right)$
 ${\mathrm{OrePoly}}{}\left({-1}{,}{1}\right)$ (5)
 > $\mathrm{GCD}\left['\mathrm{left}'\right]\left(\mathrm{Ore1},\mathrm{Ore2},A\right)$
 ${\mathrm{OrePoly}}{}\left({1}\right)$ (6)
 > $\mathrm{LCM}\left['\mathrm{left}'\right]\left(\mathrm{Ore1},\mathrm{Ore2},A\right)$
 ${\mathrm{OrePoly}}{}\left({-}\frac{{n}{+}{1}}{{n}{}\left({{n}}^{{2}}{-}{3}{}{n}{+}{2}\right)}{,}{-}\frac{{2}{}{{n}}^{{3}}{-}{4}{}{{n}}^{{2}}{-}{3}{}{n}{+}{3}}{{{n}}^{{2}}{}\left({{n}}^{{2}}{-}{3}{}{n}{+}{2}\right)}{,}{-}\frac{{{n}}^{{3}}{-}{4}{}{{n}}^{{2}}{+}{n}{+}{3}}{{{n}}^{{2}}{}\left({n}{-}{2}\right)}{,}{1}\right)$ (7)
 > $\mathrm{LCM}\left['\mathrm{right}'\right]\left(\mathrm{Ore1},\mathrm{Ore2},A\right)$
 ${\mathrm{OrePoly}}{}\left(\frac{\left({{n}}^{{6}}{-}{20}{}{{n}}^{{5}}{+}{152}{}{{n}}^{{4}}{-}{560}{}{{n}}^{{3}}{+}{1036}{}{{n}}^{{2}}{-}{880}{}{n}{+}{271}\right){}{n}}{{{n}}^{{9}}{-}{35}{}{{n}}^{{8}}{+}{524}{}{{n}}^{{7}}{-}{4376}{}{{n}}^{{6}}{+}{22246}{}{{n}}^{{5}}{-}{70218}{}{{n}}^{{4}}{+}{133143}{}{{n}}^{{3}}{-}{134227}{}{{n}}^{{2}}{+}{43670}{}{n}{+}{18200}}{,}\frac{{2}{}{n}{}\left({{n}}^{{7}}{-}{18}{}{{n}}^{{6}}{+}{122}{}{{n}}^{{5}}{-}{388}{}{{n}}^{{4}}{+}{550}{}{{n}}^{{3}}{-}{118}{}{{n}}^{{2}}{-}{465}{}{n}{+}{316}\right)}{\left({{n}}^{{4}}{-}{17}{}{{n}}^{{3}}{+}{106}{}{{n}}^{{2}}{-}{288}{}{n}{+}{288}\right){}\left({{n}}^{{5}}{-}{9}{}{{n}}^{{4}}{+}{21}{}{{n}}^{{3}}{-}{5}{}{{n}}^{{2}}{-}{31}{}{n}{+}{31}\right)}{,}\frac{{n}{}\left({{n}}^{{8}}{-}{17}{}{{n}}^{{7}}{+}{99}{}{{n}}^{{6}}{-}{206}{}{{n}}^{{5}}{-}{92}{}{{n}}^{{4}}{+}{988}{}{{n}}^{{3}}{-}{1503}{}{{n}}^{{2}}{+}{1029}{}{n}{-}{299}\right)}{\left({{n}}^{{3}}{-}{8}{}{{n}}^{{2}}{+}{21}{}{n}{-}{18}\right){}\left({{n}}^{{5}}{-}{4}{}{{n}}^{{4}}{-}{5}{}{{n}}^{{3}}{+}{14}{}{{n}}^{{2}}{-}{9}{}{n}{+}{8}\right){}\left({n}{-}{5}\right)}{,}{-}\frac{{2}{}{n}{}\left({{n}}^{{7}}{-}{6}{}{{n}}^{{6}}{-}{5}{}{{n}}^{{5}}{+}{66}{}{{n}}^{{4}}{-}{49}{}{{n}}^{{3}}{-}{60}{}{{n}}^{{2}}{-}{32}{}{n}{+}{46}\right)}{\left({{n}}^{{2}}{-}{4}{}{n}{+}{4}\right){}\left({{n}}^{{5}}{+}{{n}}^{{4}}{-}{11}{}{{n}}^{{3}}{-}{15}{}{{n}}^{{2}}{-}{7}{}{n}{+}{5}\right){}\left({n}{-}{4}\right)}{,}{1}\right)$ (8)

Define the q-shift polynomial ring.

 > $A≔\mathrm{SetOreRing}\left(\left[x,q\right],'\mathrm{qshift}'\right)$
 ${A}{≔}{\mathrm{UnivariateOreRing}}{}\left({x}{,}{\mathrm{qshift}}\right)$ (9)
 > $\mathrm{Poly}≔\mathrm{OrePoly}\left(-q\left(1-qx\right),1\right)$
 ${\mathrm{Poly}}{≔}{\mathrm{OrePoly}}{}\left({-}{q}{}\left({-}{q}{}{x}{+}{1}\right){,}{1}\right)$ (10)
 > $\mathrm{Apply}\left(\mathrm{Poly},s\left(x\right),A\right)$
 ${-}{q}{}\left({-}{q}{}{x}{+}{1}\right){}{s}{}\left({x}\right){+}{s}{}\left({q}{}{x}\right)$ (11)
 > $\mathrm{Poly1}≔\mathrm{AdjointOrePoly}\left(\mathrm{Poly},A\right)$
 ${\mathrm{Poly1}}{≔}{\mathrm{OrePoly}}{}\left({q}{}\left({q}{}{x}{-}{1}\right){,}{1}\right)$ (12)
 > $\mathrm{Apply}\left(\mathrm{Poly1},s\left(x\right),A\right)$
 ${q}{}\left({q}{}{x}{-}{1}\right){}{s}{}\left({x}\right){+}{s}{}\left({q}{}{x}\right)$ (13) References

 Abramov, S. A.; Le, H. Q.; and Li, Z. "OreTools: a computer algebra library for univariate Ore polynomial rings." Technical Report CS-2003-12, School of Computer Science, University of Waterloo, 2003.
 Bronstein, M., and Petkovsek, M. "An introduction to pseudo-linear algebra" Theoretical Computer Science. Vol. 157, (1996): 3-33.
 Ore, O. "Theory of non-commutative polynomials." Annals of Mathematics. Vol. 34, (1933): 480-508.