let cons_poly = function
a, p
->
match p with P (la) -> if not (eq_rat (a, cons_rat ("0", "1")))
then P (cons_list ((a, 0),
(List.map (function (x, d) -> (x, d + 1))) (la)))
else
if not (is_empty_list (la))
then P ((List.map (function (x, d) -> (x, d + 1))) (la))
else failwith ("cons_poly : at least one argument must be non-null")