Warning

## Homework 06 - Multivariate Polynomial Division Algorithm

Implement the algorithm of multivariate polynomial division for more than one divisor (the examples and pseudo-algorithm of polynomial division can be found in lab slides from week 8 or lecture slides from week 9 and 10. )

Allowed libraries: sympy

Forbidden methods: sympy.polys.polytools.reduced

Create a function poly_div(f, divs, mo) for dividing the polynomial f by the list of polynomials divs using the specified monomial ordering mo.

Input/Output specifications for poly_div:

1. f : Poly object
2. divs : list of Poly objects
3. mo : String. It can take the following values (according to SymPy documentation):
1. “lex” - lexicographic order
2. “grlex” - graded lexicographic order
3. “grevlex” - graded reversed lexicographic order
4. Return value : dictionary with 2 keys “q” and “r”, whose values are the list of quotient polynomials (list of Poly objects) and the remainder of the division (Poly object), respectively. That is,

$$f = \sum_{i}q[i]\cdot divs[i] + r, \quad \mathrm{LT}(r) \text{ is not divisible by any of } \mathrm{LT}(divs[i]) \;\text{ or }\; r = 0.$$

For the explanation of how to work with Poly objects see Sympy documentation.

Upload a zip archive hw07.zip (via the course ware) containing the following files:
1. hw07.py - python script containing the implemented function poly_div 