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 thecarrier
field 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 withcarrier
replaced 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 thosex
such 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
MulMemClass
is closed under multiplication.
Instances
AddMemClass S M
says S
is a type of sets s : Set M
that are closed under (+)
A substructure satisfying
AddMemClass
is 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' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Two AddSubsemigroup
s are equal if they have the same elements.
Two subsemigroups are equal if they have the same elements.
Copy a subsemigroup replacing carrier
with a set that is equal to it.
Equations
- S.copy s hs = { carrier := s, mul_mem' := ⋯ }
Instances For
Copy an additive subsemigroup replacing carrier
with a set that is equal to it.
Equations
- S.copy s hs = { carrier := s, add_mem' := ⋯ }
Instances For
A subsemigroup is closed under multiplication.
An AddSubsemigroup
is closed under addition.
The subsemigroup M
of the magma M
.
Equations
- Subsemigroup.instTop = { top := { carrier := Set.univ, mul_mem' := ⋯ } }
The additive subsemigroup M
of the magma M
.
Equations
- AddSubsemigroup.instTop = { top := { carrier := Set.univ, add_mem' := ⋯ } }
The trivial subsemigroup ∅
of a magma M
.
The trivial AddSubsemigroup
∅
of an additive magma M
.
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 AddSubsemigroup
s is their intersection.
Equations
- AddSubsemigroup.instMin = { min := fun (S₁ S₂ : AddSubsemigroup M) => { carrier := ↑S₁ ∩ ↑S₂, add_mem' := ⋯ } }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The subsemigroup of elements x : M
such that f x = g x
Instances For
A submagma of a magma inherits a multiplication.
Equations
- MulMemClass.mul S' = { mul := fun (a b : ↥S') => ⟨↑a * ↑b, ⋯⟩ }
An additive submagma of an additive magma inherits an addition.
Equations
- AddMemClass.add S' = { add := fun (a b : ↥S') => ⟨↑a + ↑b, ⋯⟩ }
A subsemigroup of a semigroup inherits a semigroup structure.
Equations
- MulMemClass.toSemigroup S = Function.Injective.semigroup Subtype.val ⋯ ⋯
An AddSubsemigroup
of an AddSemigroup
inherits an AddSemigroup
structure.
Equations
- AddMemClass.toAddSemigroup S = Function.Injective.addSemigroup Subtype.val ⋯ ⋯
A subsemigroup of a CommSemigroup
is a CommSemigroup
.
Equations
- MulMemClass.toCommSemigroup S = Function.Injective.commSemigroup Subtype.val ⋯ ⋯
An AddSubsemigroup
of an AddCommSemigroup
is an AddCommSemigroup
.
Equations
- AddMemClass.toAddCommSemigroup S = Function.Injective.addCommSemigroup Subtype.val ⋯ ⋯
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' := ⋯ }