# MonomialExtensionTools(F, UP)ΒΆ

- F: Field
- UP: UnivariatePolynomialCategory F

Tools for handling monomial extensions.

- decompose: (Fraction UP, UP -> UP) -> Record(poly: UP, normal: Fraction UP, special: Fraction UP)
`decompose(f, D)`

returns`[p, n, s]`

such that`f = p+n+s`

, all the squarefree factors of`denom(n)`

are normal`w`

.`r`

.`t`

.`D`

,`denom(s)`

is special`w`

.`r`

.`t`

.`D`

, and`n`

and`s`

are proper fractions (no pole at infinity).`D`

is the derivation to use.

- normalDenom: (Fraction UP, UP -> UP) -> UP
`normalDenom(f, D)`

returns the product of all the normal factors of`denom(f)`

.`D`

is the derivation to use.

- split: (UP, UP -> UP) -> Record(normal: UP, special: UP)
`split(p, D)`

returns`[n, s]`

such that`p = n s`

, all the squarefree factors of`n`

are normal`w`

.`r`

.`t`

.`D`

, and`s`

is special`w`

.`r`

.`t`

.`D`

.`D`

is the derivation to use.

- splitSquarefree: (UP, UP -> UP) -> Record(normal: Factored UP, special: Factored UP)
`splitSquarefree(p, D)`

returns`[n_1 n_2\^2 ... n_m\^m, s_1 s_2\^2 ... s_q\^q]`

such that`p = n_1 n_2\^2 ... n_m\^m s_1 s_2\^2 ... s_q\^q`

, each`n_i`

is normal`w`

.`r`

.`t`

.`D`

and each`s_i`

is special`w`

.`r`

.`t`

`D`

.`D`

is the derivation to use.