Operations on Subsemigroup
s #
In this file we define various operations on Subsemigroup
s and MulHom
s.
Main definitions #
Conversion between multiplicative and additive definitions #
Subsemigroup.toAddSubsemigroup
,Subsemigroup.toAddSubsemigroup'
,AddSubsemigroup.toSubsemigroup
,AddSubsemigroup.toSubsemigroup'
: convert between multiplicative and additive subsemigroups ofM
,Multiplicative M
, andAdditive M
. These are stated asOrderIso
s.
(Commutative) semigroup structure on a subsemigroup #
Subsemigroup.toSemigroup
,Subsemigroup.toCommSemigroup
: a subsemigroup inherits a (commutative) semigroup structure.
Operations on subsemigroups #
Subsemigroup.comap
: preimage of a subsemigroup under a semigroup homomorphism as a subsemigroup of the domain;Subsemigroup.map
: image of a subsemigroup under a semigroup homomorphism as a subsemigroup of the codomain;Subsemigroup.prod
: product of two subsemigroupss : Subsemigroup M
andt : Subsemigroup N
as a subsemigroup ofM × N
;
Semigroup homomorphisms between subsemigroups #
Subsemigroup.subtype
: embedding of a subsemigroup into the ambient semigroup.Subsemigroup.inclusion
: given two subsemigroupsS
,T
such thatS ≤ T
,S.inclusion T
is the inclusion ofS
intoT
as a semigroup homomorphism;MulEquiv.subsemigroupCongr
: converts a proof ofS = T
into a semigroup isomorphism betweenS
andT
.Subsemigroup.prodEquiv
: semigroup isomorphism betweens.prod t
ands × t
;
Operations on MulHom
s #
MulHom.srange
: range of a semigroup homomorphism as a subsemigroup of the codomain;MulHom.restrict
: restrict a semigroup homomorphism to a subsemigroup;MulHom.codRestrict
: restrict the codomain of a semigroup homomorphism to a subsemigroup;MulHom.srangeRestrict
: restrict a semigroup homomorphism to its range;
Implementation notes #
This file follows closely GroupTheory/Submonoid/Operations.lean
, omitting only that which is
necessary.
Tags #
subsemigroup, range, product, map, comap
Conversion to/from Additive
/Multiplicative
#
Subsemigroups of semigroup M
are isomorphic to additive subsemigroups of Additive M
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Additive subsemigroups of an additive semigroup Additive M
are isomorphic to subsemigroups
of M
.
Equations
- AddSubsemigroup.toSubsemigroup' = OrderIso.symm Subsemigroup.toAddSubsemigroup
Instances For
Additive subsemigroups of an additive semigroup A
are isomorphic to
multiplicative subsemigroups of Multiplicative A
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Subsemigroups of a semigroup Multiplicative A
are isomorphic to additive subsemigroups
of A
.
Equations
- Subsemigroup.toAddSubsemigroup' = OrderIso.symm AddSubsemigroup.toSubsemigroup
Instances For
The preimage of an AddSubsemigroup
along an AddSemigroup
homomorphism is an
AddSubsemigroup
.
Equations
- AddSubsemigroup.comap f S = { carrier := ⇑f ⁻¹' ↑S, add_mem' := ⋯ }
Instances For
The preimage of a subsemigroup along a semigroup homomorphism is a subsemigroup.
Equations
- Subsemigroup.comap f S = { carrier := ⇑f ⁻¹' ↑S, mul_mem' := ⋯ }
Instances For
The image of an AddSubsemigroup
along an AddSemigroup
homomorphism is
an AddSubsemigroup
.
Equations
- AddSubsemigroup.map f S = { carrier := ⇑f '' ↑S, add_mem' := ⋯ }
Instances For
The image of a subsemigroup along a semigroup homomorphism is a subsemigroup.
Equations
- Subsemigroup.map f S = { carrier := ⇑f '' ↑S, mul_mem' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Instances For
map f
and comap f
form a GaloisCoinsertion
when f
is injective.
Equations
Instances For
map f
and comap f
form a GaloisCoinsertion
when f
is injective.
Equations
Instances For
map f
and comap f
form a GaloisInsertion
when f
is surjective.
Equations
Instances For
map f
and comap f
form a GaloisInsertion
when f
is surjective.
Equations
Instances For
An additive submagma of an additive magma inherits an addition.
Equations
- AddMemClass.add S' = { add := fun (a b : ↥S') => { val := ↑a + ↑b, property := ⋯ } }
A submagma of a magma inherits a multiplication.
Equations
- MulMemClass.mul S' = { mul := fun (a b : ↥S') => { val := ↑a * ↑b, property := ⋯ } }
An AddSubsemigroup
of an AddSemigroup
inherits an AddSemigroup
structure.
Equations
- AddMemClass.toAddSemigroup S = Function.Injective.addSemigroup Subtype.val ⋯ ⋯
A subsemigroup of a semigroup inherits a semigroup structure.
Equations
- MulMemClass.toSemigroup S = Function.Injective.semigroup Subtype.val ⋯ ⋯
An AddSubsemigroup
of an AddCommSemigroup
is an AddCommSemigroup
.
Equations
- AddMemClass.toAddCommSemigroup S = Function.Injective.addCommSemigroup Subtype.val ⋯ ⋯
A subsemigroup of a CommSemigroup
is a CommSemigroup
.
Equations
- MulMemClass.toCommSemigroup S = Function.Injective.commSemigroup Subtype.val ⋯ ⋯
The natural semigroup hom from an AddSubsemigroup
of
AddSubsemigroup
M
to M
.
Equations
- AddMemClass.subtype S' = { toFun := Subtype.val, map_add' := ⋯ }
Instances For
The natural semigroup hom from a subsemigroup of semigroup M
to M
.
Equations
- MulMemClass.subtype S' = { toFun := Subtype.val, map_mul' := ⋯ }
Instances For
An additive subsemigroup is isomorphic to its image under an injective function
Equations
- AddSubsemigroup.equivMapOfInjective S f hf = let __src := Equiv.Set.image (⇑f) (↑S) hf; { toEquiv := __src, map_add' := ⋯ }
Instances For
A subsemigroup is isomorphic to its image under an injective function
Equations
- Subsemigroup.equivMapOfInjective S f hf = let __src := Equiv.Set.image (⇑f) (↑S) hf; { toEquiv := __src, map_mul' := ⋯ }
Instances For
Given AddSubsemigroup
s s
, t
of AddSemigroup
s A
, B
respectively,
s × t
as an AddSubsemigroup
of A × B
.
Equations
- AddSubsemigroup.prod s t = { carrier := ↑s ×ˢ ↑t, add_mem' := ⋯ }
Instances For
Given Subsemigroup
s s
, t
of semigroups M
, N
respectively, s × t
as a subsemigroup
of M × N
.
Equations
- Subsemigroup.prod s t = { carrier := ↑s ×ˢ ↑t, mul_mem' := ⋯ }
Instances For
The product of additive subsemigroups is isomorphic to their product as additive semigroups
Equations
- AddSubsemigroup.prodEquiv s t = let __src := Equiv.Set.prod ↑s ↑t; { toEquiv := __src, map_add' := ⋯ }
Instances For
The product of subsemigroups is isomorphic to their product as semigroups.
Equations
- Subsemigroup.prodEquiv s t = let __src := Equiv.Set.prod ↑s ↑t; { toEquiv := __src, map_mul' := ⋯ }
Instances For
The range of an AddHom
is an AddSubsemigroup
.
Equations
- AddHom.srange f = AddSubsemigroup.copy (AddSubsemigroup.map f ⊤) (Set.range ⇑f) ⋯
Instances For
The range of a semigroup homomorphism is a subsemigroup. See Note [range copy pattern].
Equations
- MulHom.srange f = Subsemigroup.copy (Subsemigroup.map f ⊤) (Set.range ⇑f) ⋯
Instances For
The range of a surjective AddSemigroup
hom is the whole of the codomain.
The range of a surjective semigroup hom is the whole of the codomain.
The image under an AddSemigroup
hom of the AddSubsemigroup
generated by a set
equals the AddSubsemigroup
generated by the image of the set.
The image under a semigroup hom of the subsemigroup generated by a set equals the subsemigroup generated by the image of the set.
Restriction of an AddSemigroup hom to an AddSubsemigroup
of the domain.
Equations
- AddHom.restrict f S = AddHom.comp f (AddMemClass.subtype S)
Instances For
Restriction of a semigroup hom to a subsemigroup of the domain.
Equations
- MulHom.restrict f S = MulHom.comp f (MulMemClass.subtype S)
Instances For
Restriction of an AddSemigroup
hom to an AddSubsemigroup
of the codomain.
Equations
- AddHom.codRestrict f S h = { toFun := fun (n : M) => { val := f n, property := ⋯ }, map_add' := ⋯ }
Instances For
Restriction of a semigroup hom to a subsemigroup of the codomain.
Equations
- MulHom.codRestrict f S h = { toFun := fun (n : M) => { val := f n, property := ⋯ }, map_mul' := ⋯ }
Instances For
Restriction of an AddSemigroup
hom to its range interpreted as a subsemigroup.
Equations
Instances For
Restriction of a semigroup hom to its range interpreted as a subsemigroup.
Equations
Instances For
Equations
- ⋯ = ⋯
Instances For
The AddHom
from the preimage of an additive subsemigroup to itself.
Equations
- AddHom.subsemigroupComap f N' = { toFun := fun (x : ↥(AddSubsemigroup.comap f N')) => { val := f ↑x, property := ⋯ }, map_add' := ⋯ }
Instances For
The MulHom
from the preimage of a subsemigroup to itself.
Equations
- MulHom.subsemigroupComap f N' = { toFun := fun (x : ↥(Subsemigroup.comap f N')) => { val := f ↑x, property := ⋯ }, map_mul' := ⋯ }
Instances For
the AddHom
from an additive subsemigroup to its image. See
AddEquiv.addSubsemigroupMap
for a variant for AddEquiv
s.
Equations
- AddHom.subsemigroupMap f M' = { toFun := fun (x : ↥M') => { val := f ↑x, property := ⋯ }, map_add' := ⋯ }
Instances For
The MulHom
from a subsemigroup to its image.
See MulEquiv.subsemigroupMap
for a variant for MulEquiv
s.
Equations
- MulHom.subsemigroupMap f M' = { toFun := fun (x : ↥M') => { val := f ↑x, property := ⋯ }, map_mul' := ⋯ }
Instances For
The AddSemigroup
hom associated to an inclusion of subsemigroups.
Equations
Instances For
The semigroup hom associated to an inclusion of subsemigroups.
Equations
Instances For
Makes the identity additive isomorphism from a proof two subsemigroups of an additive semigroup are equal.
Equations
- AddEquiv.subsemigroupCongr h = let __src := Equiv.setCongr ⋯; { toEquiv := __src, map_add' := ⋯ }
Instances For
Makes the identity isomorphism from a proof that two subsemigroups of a multiplicative semigroup are equal.
Equations
- MulEquiv.subsemigroupCongr h = let __src := Equiv.setCongr ⋯; { toEquiv := __src, map_mul' := ⋯ }
Instances For
An additive semigroup homomorphism f : M →+ N
with a left-inverse
g : N → M
defines an additive equivalence between M
and f.srange
.
This is a bidirectional version of AddHom.srangeRestrict
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A semigroup homomorphism f : M →ₙ* N
with a left-inverse g : N → M
defines a multiplicative
equivalence between M
and f.srange
.
This is a bidirectional version of MulHom.srangeRestrict
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An AddEquiv
φ
between two additive semigroups M
and N
induces an AddEquiv
between a subsemigroup S ≤ M
and the subsemigroup φ(S) ≤ N
.
See AddHom.addSubsemigroupMap
for a variant for AddHom
s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A MulEquiv
φ
between two semigroups M
and N
induces a MulEquiv
between
a subsemigroup S ≤ M
and the subsemigroup φ(S) ≤ N
.
See MulHom.subsemigroupMap
for a variant for MulHom
s.
Equations
- One or more equations did not get rendered due to their size.