functor (A : ArbitraryComparable) ->
  functor (B : ArbitraryComparable) ->
    sig
      type 'a t = 'a B.t A.t
      val gen :
        (?size:int -> Random.State.t -> 'a) ->
        ?size:int ->
        Random.State.t -> 'a Reins.Types.Poly.ComposeGenComparable.t
      val to_string :
        ('a -> string) ->
        'a Reins.Types.Poly.ComposeGenComparable.t -> string
      val compare :
        ('a -> 'a -> int) ->
        'a Reins.Types.Poly.ComposeGenComparable.t ->
        'a Reins.Types.Poly.ComposeGenComparable.t -> int
    end