Operations on Subsemigroups #
In this file we define various operations on Subsemigroups and MulHoms.
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 asOrderIsos.
(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 Mandt : Subsemigroup Nas a subsemigroup ofM × N;
Semigroup homomorphisms between subsemigroups #
Subsemigroup.subtype: embedding of a subsemigroup into the ambient semigroup.Subsemigroup.inclusion: given two subsemigroupsS,Tsuch thatS ≤ T,S.inclusion Tis the inclusion ofSintoTas a semigroup homomorphism;MulEquiv.subsemigroupCongr: converts a proof ofS = Tinto a semigroup isomorphism betweenSandT.Subsemigroup.prodEquiv: semigroup isomorphism betweens.prod tands × t;
Operations on MulHoms #
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.
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.
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 preimage of an AddSubsemigroup along an AddSemigroup homomorphism is an
AddSubsemigroup.
Equations
- AddSubsemigroup.comap 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
The image of an AddSubsemigroup along an AddSemigroup homomorphism is
an AddSubsemigroup.
Equations
- AddSubsemigroup.map f S = { carrier := ⇑f '' ↑S, add_mem' := ⋯ }
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
A subsemigroup is isomorphic to its image under an injective function
Equations
- S.equivMapOfInjective f hf = { toEquiv := Equiv.Set.image (⇑f) (↑S) hf, map_mul' := ⋯ }
Instances For
An additive subsemigroup is isomorphic to its image under an injective function
Equations
- S.equivMapOfInjective f hf = { toEquiv := Equiv.Set.image (⇑f) (↑S) hf, map_add' := ⋯ }
Instances For
Given Subsemigroups s, t of semigroups M, N respectively, s × t as a subsemigroup
of M × N.
Instances For
Given AddSubsemigroups s, t of AddSemigroups A, B respectively,
s × t as an AddSubsemigroup of A × B.
Instances For
The product of subsemigroups is isomorphic to their product as semigroups.
Equations
- s.prodEquiv t = { toEquiv := Equiv.Set.prod ↑s ↑t, map_mul' := ⋯ }
Instances For
The product of additive subsemigroups is isomorphic to their product as additive semigroups
Equations
- s.prodEquiv t = { toEquiv := Equiv.Set.prod ↑s ↑t, map_add' := ⋯ }
Instances For
The range of a semigroup homomorphism is a subsemigroup. See Note [range copy pattern].
Instances For
The range of an AddHom is an AddSubsemigroup.
Instances For
The range of a surjective AddSemigroup 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.
Restriction of a semigroup hom to a subsemigroup of the domain.
Equations
- f.restrict S = f.comp (MulMemClass.subtype S)
Instances For
Restriction of an AddSemigroup hom to an AddSubsemigroup of the domain.
Equations
- f.restrict S = f.comp (AddMemClass.subtype S)
Instances For
Restriction of a semigroup hom to a subsemigroup of the codomain.
Instances For
Restriction of an AddSemigroup hom to an AddSubsemigroup of the codomain.
Instances For
Restriction of a semigroup hom to its range interpreted as a subsemigroup.
Equations
- f.srangeRestrict = f.codRestrict f.srange ⋯
Instances For
Restriction of an AddSemigroup hom to its range interpreted as a subsemigroup.
Equations
- f.srangeRestrict = f.codRestrict f.srange ⋯
Instances For
The MulHom from the preimage of a subsemigroup to itself.
Equations
- f.subsemigroupComap N' = { toFun := fun (x : ↥(Subsemigroup.comap f N')) => ⟨f ↑x, ⋯⟩, map_mul' := ⋯ }
Instances For
The AddHom from the preimage of an additive subsemigroup to itself.
Equations
- f.subsemigroupComap N' = { toFun := fun (x : ↥(AddSubsemigroup.comap f N')) => ⟨f ↑x, ⋯⟩, map_add' := ⋯ }
Instances For
The MulHom from a subsemigroup to its image.
See MulEquiv.subsemigroupMap for a variant for MulEquivs.
Instances For
the AddHom from an additive subsemigroup to its image. See
AddEquiv.addSubsemigroupMap for a variant for AddEquivs.
Instances For
The semigroup hom associated to an inclusion of subsemigroups.
Equations
Instances For
The AddSemigroup hom associated to an inclusion of subsemigroups.
Equations
Instances For
Makes the identity isomorphism from a proof that two subsemigroups of a multiplicative semigroup are equal.
Equations
- MulEquiv.subsemigroupCongr h = { toEquiv := Equiv.setCongr ⋯, map_mul' := ⋯ }
Instances For
Makes the identity additive isomorphism from a proof two subsemigroups of an additive semigroup are equal.
Equations
- AddEquiv.subsemigroupCongr h = { toEquiv := Equiv.setCongr ⋯, map_add' := ⋯ }
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
- MulEquiv.ofLeftInverse f h = { toFun := ⇑f.srangeRestrict, invFun := g ∘ ⇑(MulMemClass.subtype f.srange), left_inv := h, right_inv := ⋯, 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
- AddEquiv.ofLeftInverse f h = { toFun := ⇑f.srangeRestrict, invFun := g ∘ ⇑(AddMemClass.subtype f.srange), left_inv := h, right_inv := ⋯, map_add' := ⋯ }
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 MulHoms.
Equations
- e.subsemigroupMap S = { toFun := fun (x : ↥S) => ⟨e ↑x, ⋯⟩, invFun := fun (x : ↥(Subsemigroup.map (↑e) S)) => ⟨e.symm ↑x, ⋯⟩, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯ }
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 AddHoms.
Equations
- e.subsemigroupMap S = { toFun := fun (x : ↥S) => ⟨e ↑x, ⋯⟩, invFun := fun (x : ↥(AddSubsemigroup.map (↑e) S)) => ⟨e.symm ↑x, ⋯⟩, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }