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