Semigroups and algebraic structures without identities #
This file defines additive and multiplicative semigroups and related structures that do not require a distinguished one or zero. This includes cancellation and commutativity mixins and their basic supporting lemmas and instances.
A mixin for left cancellative multiplication.
- mul_left_cancel (a : G) : IsLeftRegular a
Multiplication is left cancellative (i.e. left regular).
Instances
A mixin for right cancellative multiplication.
- mul_right_cancel (a : G) : IsRightRegular a
Multiplication is right cancellative (i.e. right regular).
Instances
A mixin for cancellative multiplication.
Instances
A mixin for left cancellative addition.
- add_left_cancel (a : G) : IsAddLeftRegular a
Addition is left cancellative (i.e. left regular).
Instances
A mixin for right cancellative addition.
- add_right_cancel (a : G) : IsAddRightRegular a
Addition is right cancellative (i.e. right regular).
Instances
A mixin for cancellative addition.
Instances
If all multiplications cancel on the left then every element is left-regular.
If all additions cancel on the left then every element is add-left-regular.
If all multiplications cancel on the right then every element is right-regular.
If all additions cancel on the right then every element is add-right-regular.
If all multiplications cancel then every element is regular.
If all additions cancel then every element is add-regular.
A Prop stating that the addition is commutative.
- is_comm : Std.Commutative fun (x1 x2 : M) => x1 + x2
Instances
A Prop stating that the multiplication is commutative.
- is_comm : Std.Commutative fun (x1 x2 : M) => x1 * x2
Instances
Alias of the reverse direction of isMulCommutative_iff.
Alias of the reverse direction of isAddCommutative_iff.
An alternative to mul_comm which uses the mixin IsMulCommutative instead of bundled
commutative algebraic structures. In general, you should prefer mul_comm unless you are working
with commutative subobjects in a noncommutative algebraic structure.
An alternative to add_comm which uses the mixin IsAddCommutative instead of bundled
commutative algebraic structures. In general, you should prefer add_comm unless you are working
with commutative subobjects in a noncommutative algebraic structure.
Any CommMagma G that satisfies IsRightCancelMul G also satisfies IsLeftCancelMul G.
Any AddCommMagma G that
satisfies IsRightCancelAdd G also satisfies IsLeftCancelAdd G.
Any CommMagma G that satisfies IsLeftCancelMul G also satisfies IsRightCancelMul G.
Any AddCommMagma G that
satisfies IsLeftCancelAdd G also satisfies IsRightCancelAdd G.
Any CommMagma G that satisfies IsLeftCancelMul G also satisfies IsCancelMul G.
Any AddCommMagma G that satisfies
IsLeftCancelAdd G also satisfies IsCancelAdd G.
Any CommMagma G that satisfies IsRightCancelMul G also satisfies IsCancelMul G.
Any AddCommMagma G that satisfies
IsRightCancelAdd G also satisfies IsCancelAdd G.
We lower the priority of inheriting from cancellative structures.
This attempts to avoid expensive checks involving bundling and unbundling with the IsDomain class.
since IsDomain already depends on Semiring, we can synthesize that one first.
Zulip discussion: https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Why.20is.20.60simpNF.60.20complaining.20here.3F
Equations
Instances For
An AddLeftCancelSemigroup is an additive semigroup such that
a + b = a + c implies b = c.
- add : G → G → G
Instances
A RightCancelSemigroup is a semigroup such that a * b = c * b implies a = c.
- mul : G → G → G
Instances
An AddRightCancelSemigroup is an additive semigroup such that
a + b = c + b implies a = c.
- add : G → G → G
Instances
We initialize the projections for the semigroup structures for @[simps] here.