# MPolyCatRationalFunctionFactorizer(E, OV, R, PRF)ΒΆ

This package exports a factor operation for multivariate polynomials with coefficients which are rational functions over some ring `R` over which we can factor. It is used internally by packages such as primary decomposition which need to work with polynomials with rational function coefficients, i.e. themselves fractions of polynomials.

factor: PRF -> Factored PRF

`factor(prf)` factors a polynomial with rational function coefficients.

pushdown: (PRF, OV) -> PRF

`pushdown(prf, var)` pushes all top level occurrences of the variable var into the coefficient domain for the polynomial `prf`.

pushdterm: (SparseUnivariatePolynomial PRF, OV) -> PRF

`pushdterm(monom, var)` pushes all top level occurrences of the variable var into the coefficient domain for the monomial `monom`.

pushucoef: (SparseUnivariatePolynomial Polynomial R, OV) -> PRF

`pushucoef(upoly, var)` converts the anonymous univariate polynomial `upoly` to a polynomial in var over rational functions.

pushuconst: (Fraction Polynomial R, OV) -> PRF

`pushuconst(r, var)` takes a rational function and raises all occurrences of the variable var to the polynomial level.

pushup: (PRF, OV) -> PRF

`pushup(prf, var)` raises all occurrences of the variable var in the coefficients of the polynomial `prf` back to the polynomial level.

totalfract: PRF -> Record(sup: Polynomial R, inf: Polynomial R)

`totalfract(prf)` takes a polynomial whose coefficients are themselves fractions of polynomials and returns a record containing the numerator and denominator resulting from putting `prf` over a common denominator.