rings-0.1.2: Ring-like objects.

Safe HaskellSafe
LanguageHaskell2010

Data.Semigroup.Property

Contents

Synopsis

Required properties of semigroups

associative_addition_on :: (Additive - Semigroup) r => Rel r b -> r -> r -> r -> b Source #

\( \forall a, b, c \in R: (a + b) + c \sim a + (b + c) \)

A semigroup must right-associate addition.

This is a required property for semigroups.

associative_multiplication_on :: (Multiplicative - Semigroup) r => Rel r b -> r -> r -> r -> b Source #

\( \forall a, b, c \in R: (a * b) * c \sim a * (b * c) \)

A semigroup must right-associate multiplication.

This is a required property for semigroups.

Required properties of monoids

neutral_addition_on :: (Additive - Monoid) r => Rel r b -> r -> b Source #

\( \forall a \in R: (z + a) \sim a \)

A semigroup with a right-neutral additive identity must satisfy:

neutral_addition_on (==) zero r = True

Or, equivalently:

zero + r = r

This is a required property for additive monoids.

neutral_multiplication_on :: (Multiplicative - Monoid) r => Rel r b -> r -> b Source #

\( \forall a \in R: (o * a) \sim a \)

A semigroup with a right-neutral multiplicative identity must satisfy:

neutral_multiplication_on (==) one r = True

Or, equivalently:

one * r = r

This is a required property for multiplicative monoids.

Properties of commuative semigroups

commutative_addition_on :: (Additive - Semigroup) r => Rel r b -> r -> r -> b Source #

\( \forall a, b \in R: a + b \sim b + a \)

This is a an optional property for semigroups, and a required property for semirings.

commutative_multiplication_on :: (Multiplicative - Semigroup) r => Rel r b -> r -> r -> b Source #

\( \forall a, b \in R: a * b \sim b * a \)

This is a an optional property for semigroups, and a optional property for semirings and rings.

Properties of cancellative semigroups

cancellative_addition_on :: (Additive - Semigroup) r => Rel r Bool -> r -> r -> r -> Bool Source #

\( \forall a, b, c \in R: b + a \sim c + a \Rightarrow b = c \)

If R is right-cancellative wrt addition then for all a the section (a +) is injective.

See https://en.wikipedia.org/wiki/Cancellation_property

cancellative_multiplication_on :: (Multiplicative - Semigroup) r => Rel r Bool -> r -> r -> r -> Bool Source #

\( \forall a, b, c \in R: b * a \sim c * a \Rightarrow b = c \)

If R is right-cancellative wrt multiplication then for all a the section (a *) is injective.

Properties of idempotent semigroups

idempotent_addition_on :: (Additive - Semigroup) r => Rel r b -> r -> b Source #

Idempotency property for additive semigroups.

See https://en.wikipedia.org/wiki/Band_(mathematics).

This is a an optional property for semigroups and semirings.

This is a required property for lattices.

idempotent_multiplication_on :: (Multiplicative - Semigroup) r => Rel r b -> r -> b Source #

Idempotency property for multplicative semigroups.

See https://en.wikipedia.org/wiki/Band_(mathematics).

This is a an optional property for semigroups and semirings.

This is a required property for lattices.

Required properties of semigroup & monoid morphisms

morphism_additive_on :: (Additive - Semigroup) r => (Additive - Semigroup) s => Rel s b -> (r -> s) -> r -> r -> b Source #

This is a required property for additive semigroup morphisms.

morphism_multiplicative_on :: (Multiplicative - Semigroup) r => (Multiplicative - Semigroup) s => Rel s b -> (r -> s) -> r -> r -> b Source #

This is a required property for multiplicative semigroup morphisms.

morphism_additive_on' :: (Additive - Monoid) r => (Additive - Monoid) s => Rel s b -> (r -> s) -> b Source #

This is a required property for additive monoid morphisms.

morphism_multiplicative_on' :: (Multiplicative - Monoid) r => (Multiplicative - Monoid) s => Rel s b -> (r -> s) -> b Source #

This is a required property for multiplicative monoid morphisms.