# UnivariateSkewPolynomialCategoryOps(R, C)ΒΆ

UnivariateSkewPolynomialCategoryOps provides products and divisions of univariate skew polynomials.

apply: (C, R, R, Automorphism R, R -> R) -> R

apply(p, c, m, sigma, delta) returns p(m) where the action is given by x m = c sigma(m) + delta(m).

leftDivide: (C, C, Automorphism R) -> Record(quotient: C, remainder: C) if R has Field

leftDivide(a, b, sigma) returns the pair [q, r] such that a = b*q + r and the degree of r is less than the degree of b. This process is called left division\ ''. \sigma is the morphism to use.

monicLeftDivide: (C, C, Automorphism R) -> Record(quotient: C, remainder: C) if R has IntegralDomain

monicLeftDivide(a, b, sigma) returns the pair [q, r] such that a = b*q + r and the degree of r is less than the degree of b. b must be monic. This process is called left division\ ''. \sigma is the morphism to use.

monicRightDivide: (C, C, Automorphism R) -> Record(quotient: C, remainder: C) if R has IntegralDomain

monicRightDivide(a, b, sigma) returns the pair [q, r] such that a = q*b + r and the degree of r is less than the degree of b. b must be monic. This process is called right division\ ''. \sigma is the morphism to use.

rightDivide: (C, C, Automorphism R) -> Record(quotient: C, remainder: C) if R has Field

rightDivide(a, b, sigma) returns the pair [q, r] such that a = q*b + r and the degree of r is less than the degree of b. This process is called right division\ ''. \sigma is the morphism to use.

times: (C, C, Automorphism R, R -> R) -> C

times(p, q, sigma, delta) returns p * q. \sigma and \delta are the maps to use.