alg_structs

Interfaces and module combinators for algebraic structures
IN THIS PACKAGE
Module Alg_structs . Monoid . Law

Parameters

module M : S

Signature

val associativity : M.t -> M.t -> M.t -> bool

From Semigroup.Law

associativity x y z is true when

S.(x * (y * z)) = S.((x * y) * z)
val unit_right_cancelation : M.t -> bool

unit_right_cancelation x is true when

S.(x * unit) = unit
val unit_left_cancelation : M.t -> bool

unit_left_cancelation x is true when

S.(unit * x) = unit
val mconcat_is_a_fold_right : M.t list -> bool

mconcat_is_a_fold_right xs is true when

(M.mconcat xs) = List.fold_right M.op xs M.unit