let rec deriv_poly = function p -> if is_null_poly (p) then null_poly () else let (a, q) = inv_cons_poly (p) in add_poly (q, x_times (deriv_poly (q)))