let of_poly q l = let m = if Q.is_zero q then l else mk_num q :: l in match m with | [] -> mk_zero | [x] -> x | _ -> Term.mk_app add m