sig
  module Strategy : Strat.T
  type strategy = Strategy.t
  type 'a t
  val length : 'Pres_intf.T.t -> int
  val lix : 'Pres_intf.T.t -> int
  val real_length : 'Pres_intf.T.t -> int
  val real_lix : 'Pres_intf.T.t -> int
  val get : 'Pres_intf.T.t -> int -> 'a
  val set : 'Pres_intf.T.t -> int -> '-> unit
  val sempty : Pres_intf.T.strategy -> 'Pres_intf.T.t
  val empty : unit -> 'Pres_intf.T.t
  val screate : Pres_intf.T.strategy -> int -> '-> 'Pres_intf.T.t
  val create : int -> '-> 'Pres_intf.T.t
  val smake : Pres_intf.T.strategy -> int -> '-> 'Pres_intf.T.t
  val make : int -> '-> 'Pres_intf.T.t
  val sinit : Pres_intf.T.strategy -> int -> (int -> 'a) -> 'Pres_intf.T.t
  val init : int -> (int -> 'a) -> 'Pres_intf.T.t
  val get_strategy : 'Pres_intf.T.t -> Pres_intf.T.strategy
  val set_strategy : 'Pres_intf.T.t -> Pres_intf.T.strategy -> unit
  val put_strategy : 'Pres_intf.T.t -> Pres_intf.T.strategy -> unit
  val enforce_strategy : 'Pres_intf.T.t -> unit
  val make_matrix : int -> int -> '-> 'Pres_intf.T.t Pres_intf.T.t
  val copy : 'Pres_intf.T.t -> 'Pres_intf.T.t
  val sub : 'Pres_intf.T.t -> int -> int -> 'Pres_intf.T.t
  val fill : 'Pres_intf.T.t -> int -> int -> '-> unit
  val blit :
    'Pres_intf.T.t -> int -> 'Pres_intf.T.t -> int -> int -> unit
  val append : 'Pres_intf.T.t -> 'Pres_intf.T.t -> 'Pres_intf.T.t
  val concat : 'Pres_intf.T.t list -> 'Pres_intf.T.t
  val add_one : 'Pres_intf.T.t -> '-> unit
  val remove_one : 'Pres_intf.T.t -> unit
  val remove_n : 'Pres_intf.T.t -> int -> unit
  val remove_range : 'Pres_intf.T.t -> int -> int -> unit
  val clear : 'Pres_intf.T.t -> unit
  val swap : 'Pres_intf.T.t -> int -> int -> unit
  val swap_in_last : 'Pres_intf.T.t -> int -> unit
  val to_array : 'Pres_intf.T.t -> 'a array
  val sof_array : Pres_intf.T.strategy -> 'a array -> 'Pres_intf.T.t
  val of_array : 'a array -> 'Pres_intf.T.t
  val to_list : 'Pres_intf.T.t -> 'a list
  val sof_list : Pres_intf.T.strategy -> 'a list -> 'Pres_intf.T.t
  val of_list : 'a list -> 'Pres_intf.T.t
  val iter : ('-> unit) -> 'Pres_intf.T.t -> unit
  val map : ('-> 'b) -> 'Pres_intf.T.t -> 'Pres_intf.T.t
  val iteri : (int -> '-> unit) -> 'Pres_intf.T.t -> unit
  val mapi : (int -> '-> 'b) -> 'Pres_intf.T.t -> 'Pres_intf.T.t
  val fold_left : ('-> '-> 'b) -> '-> 'Pres_intf.T.t -> 'b
  val fold_right : ('-> '-> 'b) -> 'Pres_intf.T.t -> '-> 'b
  val for_all : ('-> bool) -> 'Pres_intf.T.t -> bool
  val exists : ('-> bool) -> 'Pres_intf.T.t -> bool
  val mem : '-> 'Pres_intf.T.t -> bool
  val memq : '-> 'Pres_intf.T.t -> bool
  val pos : '-> 'Pres_intf.T.t -> int option
  val posq : '-> 'Pres_intf.T.t -> int option
  val find : ('-> bool) -> 'Pres_intf.T.t -> 'a
  val find_index : ('-> bool) -> 'Pres_intf.T.t -> int -> int
  val filter : ('-> bool) -> 'Pres_intf.T.t -> 'Pres_intf.T.t
  val find_all : ('-> bool) -> 'Pres_intf.T.t -> 'Pres_intf.T.t
  val filter_in_place : ('-> bool) -> 'Pres_intf.T.t -> unit
  val partition :
    ('-> bool) -> 'Pres_intf.T.t -> 'Pres_intf.T.t * 'Pres_intf.T.t
  val unsafe_get : 'Pres_intf.T.t -> int -> 'a
  val unsafe_set : 'Pres_intf.T.t -> int -> '-> unit
  val unsafe_sub : 'Pres_intf.T.t -> int -> int -> 'Pres_intf.T.t
  val unsafe_fill : 'Pres_intf.T.t -> int -> int -> '-> unit
  val unsafe_blit :
    'Pres_intf.T.t -> int -> 'Pres_intf.T.t -> int -> int -> unit
  val unsafe_remove_one : 'Pres_intf.T.t -> unit
  val unsafe_remove_n : 'Pres_intf.T.t -> int -> unit
  val unsafe_swap : 'Pres_intf.T.t -> int -> int -> unit
  val unsafe_swap_in_last : 'Pres_intf.T.t -> int -> unit
end