Module Matrix

module Matrix: sig .. end
unique w.r.t equal

type dim = int option 
type matrix = Ctypes.c_object * dim list 
val of_array : Ctypes.arrayinfo -> Ctypes.c_object * int option list
module KEY: 
functor (E : sig
val compare : Ctypes.c_object -> Ctypes.c_object -> int
end) -> sig .. end
module COBJ: sig .. end
module MACHINE: KEY(Ctypes)
module NATURAL: KEY(COBJ)
val natural_id : Ctypes.c_object -> string
name for elements in NATURAL
val add_rank : Buffer.t -> int -> unit
val add_dim : Buffer.t -> int -> 'a option -> int
val id : 'a option list -> string
unique w.r.t equal
type denv = {
   size_var : Lang.F.var list; (*size variables*)
   size_val : Lang.F.term list; (*size values*)
   index_var : Lang.F.var list; (*index variables*)
   index_val : Lang.F.term list; (*index values*)
   index_range : Lang.F.pred list; (*indices are in range of size variables*)
   index_offset : Lang.F.term list; (*polynomial of indices*)
   monotonic : bool; (*all dimensions are defined*)
}
val collect : int -> 'a option list -> denv
val denv : int option list -> denv
val dval : int option list -> Lang.F.term list
val size : 'a * int option list -> Lang.F.term list
val tau : Ctypes.c_object -> 'a list -> Lang.tau
val do_merge : 'a option list -> 'a option list -> 'a option list
val merge : 'a option list -> 'a option list -> 'a option list option