functor
(M : sig
type 'a t
type key
val equal :
('a -> 'a -> bool) ->
'a Linear.RingMap.t -> 'a Linear.RingMap.t -> bool
val compare :
('a -> 'a -> int) ->
'a Linear.RingMap.t -> 'a Linear.RingMap.t -> int
val enum :
'a Linear.RingMap.t -> (Linear.RingMap.key * 'a) BatEnum.t
val map : ('a -> 'b) -> 'a Linear.RingMap.t -> 'b Linear.RingMap.t
val find : Linear.RingMap.key -> 'a Linear.RingMap.t -> 'a
val add :
Linear.RingMap.key ->
'a -> 'a Linear.RingMap.t -> 'a Linear.RingMap.t
val remove :
Linear.RingMap.key -> 'a Linear.RingMap.t -> 'a Linear.RingMap.t
val empty : 'a Linear.RingMap.t
val merge :
(Linear.RingMap.key -> 'a option -> 'b option -> 'c option) ->
'a Linear.RingMap.t -> 'b Linear.RingMap.t -> 'c Linear.RingMap.t
end) (R : Ring) ->
sig
type t = R.t M.t
type dim = M.key
type scalar = R.t
val equal : t -> t -> bool
val add : t -> t -> t
val scalar_mul : scalar -> t -> t
val negate : t -> t
val sub : t -> t -> t
val dot : t -> t -> scalar
val zero : t
val is_zero : t -> bool
val add_term : scalar -> dim -> t -> t
val of_term : scalar -> dim -> t
val enum : t -> (scalar * dim) BatEnum.t
val of_enum : (scalar * dim) BatEnum.t -> t
val of_list : (scalar * dim) list -> t
val coeff : dim -> t -> scalar
val pivot : dim -> t -> scalar * t
end