Subsemigroups: definition #
This file defines bundled multiplicative and additive subsemigroups.
Main definitions #
Subsemigroup M: the type of bundled subsemigroup of a magmaM; the underlying set is given in thecarrierfield of the structure, and should be accessed through coercion as in(S : Set M).AddSubsemigroup M: the type of bundled subsemigroups of an additive magmaM.
For each of the following definitions in the Subsemigroup namespace, there is a corresponding
definition in the AddSubsemigroup namespace.
Subsemigroup.copy: copy of a subsemigroup withcarrierreplaced by a set that is equal but possibly not definitionally equal to the carrier of the originalSubsemigroup.
Similarly, for each of these definitions in the MulHom namespace, there is a corresponding
definition in the AddHom namespace.
MulHom.eqLocus f g: the subsemigroup of thosexsuch thatf x = g x
Implementation notes #
Subsemigroup inclusion is denoted ≤ rather than ⊆, although ∈ is defined as
membership of a subsemigroup's underlying set.
Note that Subsemigroup M does not actually require Semigroup M,
instead requiring only the weaker Mul M.
This file is designed to have very few dependencies. In particular, it should not use natural numbers.
Tags #
subsemigroup, subsemigroups
MulMemClass S M says S is a type of sets s : Set M that are closed under (*)
A substructure satisfying
MulMemClassis closed under multiplication.
Instances
AddMemClass S M says S is a type of sets s : Set M that are closed under (+)
A substructure satisfying
AddMemClassis closed under addition.
Instances
A subsemigroup of a magma M is a subset closed under multiplication.
- carrier : Set M
The carrier of a subsemigroup.
The product of two elements of a subsemigroup belongs to the subsemigroup.
Instances For
An additive subsemigroup of an additive magma M is a subset closed under addition.
- carrier : Set M
The carrier of an additive subsemigroup.
The sum of two elements of an additive subsemigroup belongs to the subsemigroup.
Instances For
Equations
- Subsemigroup.instSetLike = { coe := Subsemigroup.carrier, coe_injective' := ⋯ }
Equations
- AddSubsemigroup.instSetLike = { coe := AddSubsemigroup.carrier, coe_injective' := ⋯ }
The actual Subsemigroup obtained from an element of a MulMemClass.
Equations
- Subsemigroup.ofClass s = { carrier := ↑s, mul_mem' := ⋯ }
Instances For
The actual AddSubsemigroup obtained from an element of a
AddMemClass
Equations
- AddSubsemigroup.ofClass s = { carrier := ↑s, add_mem' := ⋯ }
Instances For
Two subsemigroups are equal if they have the same elements.
Two AddSubsemigroups are equal if they have the same elements.
Copy a subsemigroup replacing carrier with a set that is equal to it.
Instances For
Copy an additive subsemigroup replacing carrier with a set that is equal to it.
Instances For
A subsemigroup is closed under multiplication.
An AddSubsemigroup is closed under addition.
The subsemigroup M of the magma M.
The additive subsemigroup M of the magma M.
The trivial subsemigroup ∅ of a magma M.
The trivial AddSubsemigroup ∅ of an additive magma M.
Equations
- Subsemigroup.instInhabited = { default := ⊥ }
Equations
- AddSubsemigroup.instInhabited = { default := ⊥ }
Alias of AddSubsemigroup.notMem_bot.
Alias of Subsemigroup.notMem_bot.
The inf of two subsemigroups is their intersection.
Equations
- Subsemigroup.instMin = { min := fun (S₁ S₂ : Subsemigroup M) => { carrier := ↑S₁ ∩ ↑S₂, mul_mem' := ⋯ } }
The inf of two AddSubsemigroups is their intersection.
Equations
- AddSubsemigroup.instMin = { min := fun (S₁ S₂ : AddSubsemigroup M) => { carrier := ↑S₁ ∩ ↑S₂, add_mem' := ⋯ } }
A submagma of a magma inherits a multiplication.
An additive submagma of an additive magma inherits an addition.
A subsemigroup of a semigroup inherits a semigroup structure.
Equations
- MulMemClass.toSemigroup S = { toMul := MulMemClass.mul S, mul_assoc := ⋯ }
An AddSubsemigroup of an AddSemigroup inherits an AddSemigroup structure.
Equations
- AddMemClass.toAddSemigroup S = { toAdd := AddMemClass.add S, add_assoc := ⋯ }
A subsemigroup of a CommSemigroup is a CommSemigroup.
Equations
- MulMemClass.toCommSemigroup S = { toSemigroup := MulMemClass.toSemigroup S, mul_comm := ⋯ }
An AddSubsemigroup of an AddCommSemigroup is an AddCommSemigroup.
Equations
- AddMemClass.toAddCommSemigroup S = { toAddSemigroup := AddMemClass.toAddSemigroup S, add_comm := ⋯ }
A submagma of a left cancellative magma inherits left cancellation.
An additive submagma of a left cancellative additive magma inherits left cancellation.
A submagma of a right cancellative magma inherits right cancellation.
An additive submagma of a right cancellative additive magma inherits right cancellation.
A submagma of a cancellative magma inherits cancellation.
An additive submagma of a cancellative additive magma inherits cancellation.
The natural semigroup hom from a subsemigroup of semigroup M to M.
Equations
- MulMemClass.subtype S' = { toFun := Subtype.val, map_mul' := ⋯ }
Instances For
The natural semigroup hom from an AddSubsemigroup of
AddSubsemigroup M to M.
Equations
- AddMemClass.subtype S' = { toFun := Subtype.val, map_add' := ⋯ }