alg_structs

Interfaces and module combinators for algebraic structures
IN THIS PACKAGE

Parameters

module A : S

Signature

val identity : 'a A.t -> bool

identity x: return Fun.id <*> x = x

val composition : ( 'b -> 'c ) A.t -> ( 'a -> 'b ) A.t -> 'a A.t -> bool

composition u v w: (return (%) <*> u <*> v <*> w) = (u <*> (v <*> w))

val homomorphism : ( 'a -> 'b ) -> 'a -> bool

homomorphism f x: return f <*> return x = return (f x)

val interchange : ( 'a -> 'b ) A.t -> 'a -> bool

interchange u y: (u <*> return y) = (return (fun f -> f y) <*> u)