sig
  type elt = int
  type t = matrix_int
  val ( + ) : elt -> elt -> elt
  val ( * ) : elt -> elt -> elt
  val ( - ) : elt -> elt -> elt
  val ( ~- ) : elt -> elt
  val ( / ) : elt -> elt -> elt
  val elt_of_int : int -> elt
  val dimx : t -> int
  val dimy : t -> int
  val zeroes : w:int -> h:int -> t
  val init : (int -> int -> elt) -> w:int -> h:int -> t
  val map :
    ?bw:int -> ?bh:int -> (int -> int -> elt -> 'a) -> t -> 'a array array
  val iter : ?bw:int -> ?bh:int -> (int -> int -> elt -> unit) -> t -> unit
  val fold :
    ?bw:int -> ?bh:int -> ('-> int -> int -> elt -> 'a) -> '-> t -> 'a
end