Module Zobrist

type t
val make : pieces:int -> squares:int -> seed:int -> t
val number : t -> piece:int -> square:int -> int64
val side : t -> int64
val of_board : t -> (int * int) list -> int64
type bound =
  1. | Exact
  2. | Lower
  3. | Upper
type 'move entry = {
  1. value : float;
  2. depth : int;
  3. bound : bound;
  4. best : 'move option;
}
type 'move table
val table : unit -> 'move table
val find : 'move table -> int64 -> 'move entry option
val remember : 'move table -> int64 -> 'move entry -> unit
val size : 'move table -> int
val hits : 'move table -> int
val forget : 'move table -> unit