sig
type t =
Regexp(X).t =
Letter of X.t
| Union of t * t
| Empty
| Concat of t * t
| Singl
| Star of t
val letter : X.t -> t
val union : t -> t -> t
val empty : t
val concat : t -> t -> t
val star : t -> t
val unions : t list -> t
val to_string : t -> string
val simpl : t -> t
module Series :
sig
type t = Field.Int.t Weak.t ref * (int -> Field.Int.t)
val eq : t -> t -> 'a
val get : t -> int -> Field.Int.t
val coeff : t -> int -> Field.Int.t
val to_string : t -> string
val make : (int -> Field.Int.t) -> t
val zero : t
val one : t
val var : t
val add : t -> t -> t
val sub : t -> t -> t
val mul : t -> t -> t
val expn : t -> int -> t
val hadamard : t -> t -> t
val cmul : Field.Int.t -> t -> t
val neg : t -> t
val star : t -> t
val inv : t -> t
module Polynomial :
sig
type t = Field.Int.t array
val length : t -> int
val degree : t -> int
val eq : t -> t -> bool
val compact : t -> t
val coeff : t -> int -> Field.Int.t
val init : int -> (int -> Field.Int.t) -> t
val add : t -> t -> t
val zero : 'a array
val cmul : Field.Int.t -> t -> t
val neg : t -> t
val sub : t -> t -> t
val mul : t -> t -> t
val one : Field.Int.t array
val to_string : t -> string
val monomial : Field.Int.t -> int -> Field.Int.t array
end
val polynomial : Polynomial.t -> t
module RationalFractions :
sig
module Polynomial :
functor (F : Field.T) ->
sig
type t = Ring.Polynomial(F).t
val eq : t -> t -> bool
val add : t -> t -> t
val zero : t
val neg : t -> t
val mul : t -> t -> t
val one : t
val to_string : t -> string
val div : t -> t -> t * t
end
type t = Polynomial(Field.Int).t * Polynomial(Field.Int).t
val gcd :
Polynomial(Field.Int).t ->
Polynomial(Field.Int).t -> Polynomial(Field.Int).t
val canonize : t -> t
val eq : t -> t -> bool
val add : t -> t -> t
val zero : t
val neg : t -> t
val mul : t -> t -> t
val one : t
val inv : t -> t
val to_string : t -> string
end
val rational : RationalFractions.t -> t
end
val series : t -> Series.t
end