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)))