Operations on subsemigroup
s #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define various operations on subsemigroup
s and mul_hom
s.
Main definitions #
Conversion between multiplicative and additive definitions #
subsemigroup.to_add_subsemigroup
,subsemigroup.to_add_subsemigroup'
,add_subsemigroup.to_subsemigroup
,add_subsemigroup.to_subsemigroup'
: convert between multiplicative and additive subsemigroups ofM
,multiplicative M
, andadditive M
. These are stated asorder_iso
s.
(Commutative) semigroup structure on a subsemigroup #
subsemigroup.to_semigroup
,subsemigroup.to_comm_semigroup
: 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;mul_equiv.subsemigroup_congr
: converts a proof ofS = T
into a semigroup isomorphism betweenS
andT
.subsemigroup.prod_equiv
: semigroup isomorphism betweens.prod t
ands × t
;
Operations on mul_hom
s #
mul_hom.srange
: range of a semigroup homomorphism as a subsemigroup of the codomain;mul_hom.restrict
: restrict a semigroup homomorphism to a subsemigroup;mul_hom.cod_restrict
: restrict the codomain of a semigroup homomorphism to a subsemigroup;mul_hom.srange_restrict
: restrict a semigroup homomorphism to its range;
Implementation notes #
This file follows closely group_theory/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
- subsemigroup.to_add_subsemigroup = {to_equiv := {to_fun := λ (S : subsemigroup M), {carrier := ⇑additive.to_mul ⁻¹' ↑S, add_mem' := _}, inv_fun := λ (S : add_subsemigroup (additive M)), {carrier := ⇑additive.of_mul ⁻¹' ↑S, mul_mem' := _}, left_inv := _, right_inv := _}, map_rel_iff' := _}
Additive subsemigroups of an additive semigroup additive M
are isomorphic to subsemigroups
of M
.
Additive subsemigroups of an additive semigroup A
are isomorphic to
multiplicative subsemigroups of multiplicative A
.
Equations
- add_subsemigroup.to_subsemigroup = {to_equiv := {to_fun := λ (S : add_subsemigroup A), {carrier := ⇑multiplicative.to_add ⁻¹' ↑S, mul_mem' := _}, inv_fun := λ (S : subsemigroup (multiplicative A)), {carrier := ⇑multiplicative.of_add ⁻¹' ↑S, add_mem' := _}, left_inv := _, right_inv := _}, map_rel_iff' := _}
Subsemigroups of a semigroup multiplicative A
are isomorphic to additive subsemigroups
of A
.
comap
and map
#
The preimage of a subsemigroup along a semigroup homomorphism is a subsemigroup.
The preimage of an add_subsemigroup
along an add_semigroup
homomorphism is an
add_subsemigroup
.
The image of a subsemigroup along a semigroup homomorphism is a subsemigroup.
The image of an add_subsemigroup
along an add_semigroup
homomorphism is
an add_subsemigroup
.
map f
and comap f
form a galois_coinsertion
when f
is injective.
Equations
map f
and comap f
form a galois_coinsertion
when f
is injective.
Equations
map f
and comap f
form a galois_insertion
when f
is surjective.
Equations
map f
and comap f
form a galois_insertion
when f
is surjective.
Equations
An additive submagma of an additive magma inherits an addition.
An add_subsemigroup
of an add_semigroup
inherits an add_semigroup
structure.
Equations
A subsemigroup of a semigroup inherits a semigroup structure.
Equations
A subsemigroup of a comm_semigroup
is a comm_semigroup
.
Equations
An add_subsemigroup
of an add_comm_semigroup
is an add_comm_semigroup
.
Equations
The natural semigroup hom from a subsemigroup of semigroup M
to M
.
Equations
- mul_mem_class.subtype S' = {to_fun := coe coe_to_lift, map_mul' := _}
The natural semigroup hom from an add_subsemigroup
of add_semigroup
M
to M
.
Equations
- add_mem_class.subtype S' = {to_fun := coe coe_to_lift, map_add' := _}
An additive subsemigroup is isomorphic to its image under an injective function
A subsemigroup is isomorphic to its image under an injective function
Given subsemigroup
s s
, t
of semigroups M
, N
respectively, s × t
as a subsemigroup
of M × N
.
Given add_subsemigroup
s s
, t
of add_semigroup
s A
, B
respectively,
s × t
as an add_subsemigroup
of A × B
.
The product of subsemigroups is isomorphic to their product as semigroups.
The product of additive subsemigroups is isomorphic to their product as additive semigroups
The range of an add_hom
is an add_subsemigroup
.
The range of a semigroup homomorphism is a subsemigroup. See Note [range copy pattern].
The range of a surjective add_semigroup
hom is the whole of the codomain.
The image under a semigroup hom of the subsemigroup generated by a set equals the subsemigroup generated by the image of the set.
The image under an add_semigroup
hom of the add_subsemigroup
generated by a set
equals the add_subsemigroup
generated by the image of the set.
Restriction of an add_semigroup hom to an add_subsemigroup
of the domain.
Equations
- f.restrict S = f.comp (add_mem_class.subtype S)
Restriction of an add_semigroup
hom to an add_subsemigroup
of the
codomain.
Restriction of a semigroup hom to its range interpreted as a subsemigroup.
Equations
- f.srange_restrict = f.cod_restrict f.srange _
Restriction of an add_semigroup
hom to its range interpreted as a subsemigroup.
Equations
- f.srange_restrict = f.cod_restrict f.srange _
the add_hom
from the preimage of an additive subsemigroup to itself.
Equations
- f.subsemigroup_comap N' = {to_fun := λ (x : ↥(add_subsemigroup.comap f N')), ⟨⇑f ↑x, _⟩, map_add' := _}
The mul_hom
from the preimage of a subsemigroup to itself.
Equations
- f.subsemigroup_comap N' = {to_fun := λ (x : ↥(subsemigroup.comap f N')), ⟨⇑f ↑x, _⟩, map_mul' := _}
The mul_hom
from a subsemigroup to its image.
See mul_equiv.subsemigroup_map
for a variant for mul_equiv
s.
the add_hom
from an additive subsemigroup to its image. See
add_equiv.add_subsemigroup_map
for a variant for add_equiv
s.
The add_semigroup
hom associated to an inclusion of subsemigroups.
Equations
The semigroup hom associated to an inclusion of subsemigroups.
Equations
Makes the identity isomorphism from a proof that two subsemigroups of a multiplicative semigroup are equal.
Equations
- mul_equiv.subsemigroup_congr h = {to_fun := (equiv.set_congr _).to_fun, inv_fun := (equiv.set_congr _).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
Makes the identity additive isomorphism from a proof two subsemigroups of an additive semigroup are equal.
Equations
- add_equiv.subsemigroup_congr h = {to_fun := (equiv.set_congr _).to_fun, inv_fun := (equiv.set_congr _).inv_fun, left_inv := _, right_inv := _, map_add' := _}
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 add_hom.srange_restrict
.
Equations
- add_equiv.of_left_inverse f h = {to_fun := ⇑(f.srange_restrict), inv_fun := g ∘ ⇑(add_mem_class.subtype f.srange), left_inv := h, right_inv := _, map_add' := _}
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 mul_hom.srange_restrict
.
Equations
- mul_equiv.of_left_inverse f h = {to_fun := ⇑(f.srange_restrict), inv_fun := g ∘ ⇑(mul_mem_class.subtype f.srange), left_inv := h, right_inv := _, map_mul' := _}
An add_equiv
φ
between two additive semigroups M
and N
induces an add_equiv
between a subsemigroup S ≤ M
and the subsemigroup φ(S) ≤ N
. See add_hom.add_subsemigroup_map
for a variant for add_hom
s.
A mul_equiv
φ
between two semigroups M
and N
induces a mul_equiv
between
a subsemigroup S ≤ M
and the subsemigroup φ(S) ≤ N
.
See mul_hom.subsemigroup_map
for a variant for mul_hom
s.