module type Univariate_polynomial_sig = sig type 'coeff t (* include Ring with type 'coeff t := 'coeff t *) val create : ('coeff * int) list -> 'coeff t val degree : 'coeff t -> Signed.Long.t val get_coeff : 'coeff t -> int -> 'coeff val eval : 'coeff t -> 'coeff -> 'coeff val deriv : ?indeterminate:int -> _ t -> _ t val derivn : ?indeterminate:int -> _ t -> int -> _ t val fft : (module Finite_cyclic_group_sig with type t = 'coeff) -> 'coeff t -> 'coeff t Arrays.t end val univariate_polynomial : (module Ring with type t = 't) -> (module Univariate_polynomial_sig with type 'coeff t constraint 'coeff= 't) the last line doesn't typecheck: invalid package type: only 'with type t =' constraints are supported