functor (DS : DugADT.S->
  sig
    type t = private {
      gen_cdf : ((unit, unit) DS.generator * float) list;
      mut_cdf : ((unit, unit) DS.mutator * float) list;
      obs_cdf : ((unit, unit) DS.observer * float) list;
      gen_ratio : float;
      obs_mut_ratio : float;
      mortality : float;
      pmf : float;
      pof : float;
    }
    val random_op : ('a * float) list -> 'a
    val to_string : Reins.DugProfile.Make.t -> string
    val profile :
      (('a, 'b) DS.generator, ('a, 'b) DS.mutator, ('a, 'b) DS.observer)
      Reins.Dug.t -> Reins.DugProfile.Make.t
  end