sig
  module Coeff : Scalar.S
  type t
  exception Dimension_error of string
  val of_list_list : Coeff.t list list -> Matrix.S.t
  val to_list_list : Matrix.S.t -> Coeff.t list list
  val of_array_array : Coeff.t array array -> Matrix.S.t
  val to_array_array : Matrix.S.t -> Coeff.t array array
  val zeros : int -> int -> Matrix.S.t
  val eye : int -> Matrix.S.t
  val kron : int -> int -> int -> Matrix.S.t
  val kron_sym : int -> int -> int -> Matrix.S.t
  val block : Matrix.S.t array array -> Matrix.S.t
  val lift_block : Matrix.S.t -> int -> int -> int -> int -> Matrix.S.t
  val transpose : Matrix.S.t -> Matrix.S.t
  val minus : Matrix.S.t -> Matrix.S.t
  val mult_scalar : Coeff.t -> Matrix.S.t -> Matrix.S.t
  val add : Matrix.S.t -> Matrix.S.t -> Matrix.S.t
  val sub : Matrix.S.t -> Matrix.S.t -> Matrix.S.t
  val mult : Matrix.S.t -> Matrix.S.t -> Matrix.S.t
  val power : Matrix.S.t -> int -> Matrix.S.t
  val nb_lines : Matrix.S.t -> int
  val nb_cols : Matrix.S.t -> int
  val is_symmetric : Matrix.S.t -> bool
  val remove_0_row_cols : Matrix.S.t -> Matrix.S.t
  val gauss_split : Matrix.S.t -> int * Matrix.S.t * Matrix.S.t
  val ( ~: ) : Matrix.S.t -> Matrix.S.t
  val ( ~- ) : Matrix.S.t -> Matrix.S.t
  val ( *. ) : Coeff.t -> Matrix.S.t -> Matrix.S.t
  val ( + ) : Matrix.S.t -> Matrix.S.t -> Matrix.S.t
  val ( - ) : Matrix.S.t -> Matrix.S.t -> Matrix.S.t
  val ( * ) : Matrix.S.t -> Matrix.S.t -> Matrix.S.t
  val ( ** ) : Matrix.S.t -> int -> Matrix.S.t
  val pp : Stdlib.Format.formatter -> Matrix.S.t -> unit
end