let rec eval_poly = function
  p, a -> if is_null_poly (p)
            then cons_rat ("0""1")
            else
              let
                (a1, q) = inv_cons_poly (p)
              in
                add_rat (a1, mult_rat (a, eval_poly (q, a)))