functor (P : sig val presentation : Algebra.Presentation.t end->
  sig
    type t = A.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 : r -> t -> t
  end