sig   type dim = int option   type matrix = Ctypes.c_object * Matrix.dim list   module MACHINE :     sig       type t = matrix       val compare : t -> t -> int       val pretty : Format.formatter -> t -> unit     end   module NATURAL :     sig       type t = matrix       val compare : t -> t -> int       val pretty : Format.formatter -> t -> unit     end   val of_array : Ctypes.arrayinfo -> Matrix.matrix   val id : Matrix.dim list -> string   val natural_id : Ctypes.c_object -> string   val merge : Matrix.dim list -> Matrix.dim list -> Matrix.dim list option   type denv = {     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;     monotonic : bool;   }   val denv : Matrix.dim list -> Matrix.denv   val size : Matrix.matrix -> Lang.F.term list   val tau : Ctypes.c_object -> Matrix.dim list -> Lang.F.tau end