sig
  type t
  val of_dims : int option list -> Matrix.t
  val compare : Matrix.t -> Matrix.t -> int
  val pretty : Stdlib.Format.formatter -> Matrix.t -> unit
  val pp_suffix_id : Stdlib.Format.formatter -> Matrix.t -> unit
  val merge : int option list -> int option list -> int option list option
  type env = {
    size_var : Lang.F.var list;
    size_val : Lang.F.term list;
    index_var : Lang.F.var list;
    index_val : Lang.F.term list;
    index_range : Lang.F.pred list;
    index_offset : Lang.F.term list;
    length : Lang.F.term option;
  }
  val cc_tau : Lang.F.tau -> Matrix.t -> Lang.F.tau
  val cc_env : Matrix.t -> Matrix.env
  val cc_dims : int option list -> Lang.F.term list
end