package smol

  1. Overview
  2. Docs

Parameters

module K : Algebra.Ring_S

Signature

include sig ... end
type t = K.t m

We make sure the diagonal is never empty on the support of a matrix

val zero : Literal.t list -> t
val for_all : (Literal.t -> Literal.t -> 'a -> bool) -> 'a m -> bool
val is_zero : t -> bool
val one : Literal.t list -> t
val diagonal : 'a Vector.Make(Literal).v -> 'a m
val get_support : 'a m -> Literal.t list
val get_entry : Literal.t -> Literal.t -> t -> K.t
val set_entry : Literal.t -> Literal.t -> K.t -> t -> t
val singleton : Literal.t -> Literal.t -> K.t -> t
val remove : Literal.t -> Literal.t -> 'a m -> 'a m
val merge : (Literal.t -> Literal.t -> 'a option -> 'b option -> K.t option) -> 'a m -> 'b m -> t
val union : (Literal.t -> Literal.t -> K.t -> K.t -> K.t option) -> t -> t -> t
val equal : t -> t -> bool
val neq : t -> t -> bool
val iter : (Literal.t -> Literal.t -> 'a -> unit) -> 'a m -> unit
val fold : (Literal.t -> Literal.t -> 'a -> 'b -> 'b) -> 'a m -> 'b -> 'b
val filter : (Literal.t -> Literal.t -> 'a -> bool) -> 'a m -> 'a m
val bindings : 'a m -> ((Literal.t * Literal.t) * 'a) list
val map : ('a -> K.t) -> 'a m -> t
val mapi : (Literal.t -> Literal.t -> 'a -> K.t) -> 'a m -> t
val get_line : Literal.t -> t -> K.t Vector.Make(Literal).v
val get_column : Literal.t -> t -> K.t Vector.Make(Literal).v
val add : t -> t -> t
val mul : t -> t -> t
val pow : t -> int -> t
val is_nilpotent : t -> bool
val to_string : t -> string
val neg : t -> t
val sub : t -> t -> t
module Infix : sig ... end