sig
  type t
  type r
  module Ring :
    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
    end
  val eq : t -> t -> bool
  val add : t -> t -> t
  val zero : t
  val to_string : t -> string
  val neg : t -> t
  val cmul : t -> r -> t
end