# MonomialExtensionTools(F, UP)ΒΆ

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.