sig
  type t
  type r
  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
  module Field :
    sig
      val eq : r -> r -> bool
      val add : r -> r -> r
      val zero : r
      val neg : r -> r
      val mul : r -> r -> r
      val one : r
      val to_string : r -> string
      val inv : r -> r
    end
  val cmul : Algebra.T.r -> Algebra.T.t -> Algebra.T.t
end