Module Matrix

module Matrix: sig .. end

type dim = int option 
type matrix = Ctypes.c_object * dim list 
module MACHINE: Model.Key  with type t = matrix
module NATURAL: Model.Key  with type t = matrix
val of_array : Ctypes.arrayinfo -> matrix
val id : dim list -> string

unique w.r.t equal

val natural_id : Ctypes.c_object -> string

name for elements in NATURAL

val merge : dim list -> dim list -> dim list option
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 denv : dim list -> denv
val size : matrix -> Lang.F.term list
val tau : Ctypes.c_object -> dim list -> Lang.F.tau