sig
  type 'a t =
      Nil : unit QCheck2.Tuple.t
    | Cons : 'a * 'QCheck2.Tuple.t -> ('a * 'b) QCheck2.Tuple.t
  val nil : unit QCheck2.Tuple.t
  val cons : '-> 'QCheck2.Tuple.t -> ('a * 'b) QCheck2.Tuple.t
  type 'a obs
  val o_nil : unit QCheck2.Tuple.obs
  val o_cons :
    'QCheck2.Observable.t ->
    'QCheck2.Tuple.obs -> ('a * 'b) QCheck2.Tuple.obs
  val observable :
    'QCheck2.Tuple.obs -> 'QCheck2.Tuple.t QCheck2.Observable.t
  module Infix :
    sig
      val ( @:: ) : '-> 'QCheck2.Tuple.t -> ('a * 'b) QCheck2.Tuple.t
      val ( @-> ) :
        'QCheck2.Observable.t ->
        'QCheck2.Tuple.obs -> ('a * 'b) QCheck2.Tuple.obs
    end
  val ( @:: ) : '-> 'b t -> ('a * 'b) t
  val ( @-> ) : 'Observable.t -> 'b obs -> ('a * 'b) obs
end