let rec mult_poly = function
  p1, p2 -> if is_null_poly (p1)
              then null_poly ()
              else
                let
                  (a1, q1) = inv_cons_poly (p1)
                in
                  add_poly (rat_times_poly (a1, p2), x_times (mult_poly (q1, p2)))