sig
  type permut = (int, Bigarray.int_elt, Bigarray.c_layout) Bigarray.Array1.t
  val of_array : int array -> Gsl_permut.permut
  val to_array : Gsl_permut.permut -> int array
  val init : Gsl_permut.permut -> unit
  val create : int -> Gsl_permut.permut
  val make : int -> Gsl_permut.permut
  val swap : Gsl_permut.permut -> int -> int -> unit
  val size : Gsl_permut.permut -> int
  val valid : Gsl_permut.permut -> bool
  external reverse : Gsl_permut.permut -> unit = "ml_gsl_permutation_reverse"
  val inverse : Gsl_permut.permut -> Gsl_permut.permut
  external next : Gsl_permut.permut -> unit = "ml_gsl_permutation_next"
  external prev : Gsl_permut.permut -> unit = "ml_gsl_permutation_prev"
  external permute : Gsl_permut.permut -> 'a array -> unit = "ml_gsl_permute"
  external permute_barr :
    Gsl_permut.permut -> ('a, 'b, 'c) Bigarray.Array1.t -> unit
    = "ml_gsl_permute_barr"
  external permute_inverse : Gsl_permut.permut -> 'a array -> unit
    = "ml_gsl_permute_inverse"
  external permute_inverse_barr :
    Gsl_permut.permut -> ('a, 'b, 'c) Bigarray.Array1.t -> unit
    = "ml_gsl_permute_inverse_barr"
end