sig
  type ('b, 'a) t = (int, 'b, 'a) CCArray1.array_
    constraint 'a = [< `R | `W ]
  val get : ('a, [< `R | `W > `R ]) CCArray1.Bool.t -> int -> bool
  val set : ('a, [< `R | `W > `W ]) CCArray1.Bool.t -> int -> bool -> unit
  val zeroes :
    int -> (Bigarray.int8_unsigned_elt, [< `R | `W ]) CCArray1.Bool.t
  val ones :
    int -> (Bigarray.int8_unsigned_elt, [< `R | `W ]) CCArray1.Bool.t
  val iter_zeroes :
    f:(int -> unit) -> ('a, [< `R | `W > `R ]) CCArray1.Bool.t -> unit
  val iter_ones :
    f:(int -> unit) -> ('a, [< `R | `W > `R ]) CCArray1.Bool.t -> unit
  val cardinal : ('a, [< `R | `W > `R ]) CCArray1.Bool.t -> int
  val pp : ('a, [< `R | `W > `R ]) CCArray1.Bool.t CCArray1.printer
  val or_ :
    ?res:('b, [< `R | `W > `W ] as 'a) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t -> ('b, 'a) CCArray1.Bool.t
  val and_ :
    ?res:('b, [< `R | `W > `W ] as 'a) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t -> ('b, 'a) CCArray1.Bool.t
  val not_ :
    ?res:('b, [< `R | `W > `W ] as 'a) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t -> ('b, 'a) CCArray1.Bool.t
  val mix :
    ?res:('b, [< `R | `W > `W ] as 'a) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t -> ('b, 'a) CCArray1.Bool.t
  val convolution :
    ?res:('b, [< `R | `W > `W ] as 'a) CCArray1.Bool.t ->
    ('b, [< `R | `W > `R ]) CCArray1.Bool.t ->
    by:('b, [< `R | `W > `R ]) CCArray1.Bool.t -> ('b, 'a) CCArray1.Bool.t
end