sig
  type -'a t
  val equal : 'QCheck.Observable.t -> '-> '-> bool
  val hash : 'QCheck.Observable.t -> '-> int
  val print : 'QCheck.Observable.t -> 'QCheck.Print.t
  val unit : unit QCheck.Observable.t
  val bool : bool QCheck.Observable.t
  val int : int QCheck.Observable.t
  val float : float QCheck.Observable.t
  val string : string QCheck.Observable.t
  val char : char QCheck.Observable.t
  val make :
    ?eq:('-> '-> bool) ->
    ?hash:('-> int) -> 'QCheck.Print.t -> 'QCheck.Observable.t
  val map : ('-> 'b) -> 'QCheck.Observable.t -> 'QCheck.Observable.t
  val option : 'QCheck.Observable.t -> 'a option QCheck.Observable.t
  val list : 'QCheck.Observable.t -> 'a list QCheck.Observable.t
  val array : 'QCheck.Observable.t -> 'a array QCheck.Observable.t
  val pair :
    'QCheck.Observable.t ->
    'QCheck.Observable.t -> ('a * 'b) QCheck.Observable.t
  val triple :
    'QCheck.Observable.t ->
    'QCheck.Observable.t ->
    'QCheck.Observable.t -> ('a * 'b * 'c) QCheck.Observable.t
  val quad :
    'QCheck.Observable.t ->
    'QCheck.Observable.t ->
    'QCheck.Observable.t ->
    'QCheck.Observable.t -> ('a * 'b * 'c * 'd) QCheck.Observable.t
end