sig
  val fun_max : ?max:('-> '-> 'a) -> (int -> 'a) -> int -> 'a
  val node_width : Diagrams.Edge.info -> float
  val between_borders :
    (int -> float) ->
    (int -> float) ->
    Diagrams.anchor array ->
    (int -> int -> Diagrams.Node.Transfo.Style.t list) ->
    Diagrams.Matrix.info -> int -> int -> float * float
  module Make :
    functor
      (MkMatrix : sig
                    type t
                    val make_matrix :
                      Matrix.T.Style.t list ->
                      (Diagrams.Node.Transfo.Style.t list *
                       Diagrams.MakeDiagram.Arr.t list)
                      list list ->
                      Diagrams.Node.info *
                      Diagrams.Node.info Diagrams.Matrix.matrix
                  end->
      sig
        val array :
          Diagrams.anchor list ->
          ?vertical_padding:(int -> float) ->
          ?horizontal_padding:(int -> float) ->
          ?all_node_styles:Matrix.T.Style.t list ->
          ?matrix_anchor:(Diagrams.Matrix.info -> Diagrams.Point.t) ->
          ?main_node_style:Diagrams.Node.Transfo.Style.t list ->
          MkMatrix.t list list list ->
          Diagrams.Node.info * Diagrams.Node.info Diagrams.Matrix.matrix
      end
end