Operations on submonoid
s #
In this file we define various operations on submonoid
s and monoid_hom
s.
Main definitions #
Conversion between multiplicative and additive definitions #
submonoid.to_add_submonoid
,submonoid.to_add_submonoid'
,add_submonoid.to_submonoid
,add_submonoid.to_submonoid'
: convert between multiplicative and additive submonoids ofM
,multiplicative M
, andadditive M
. These are stated asorder_iso
s.
(Commutative) monoid structure on a submonoid #
submonoid.to_monoid
,submonoid.to_comm_monoid
: a submonoid inherits a (commutative) monoid structure.
Group actions by submonoids #
submonoid.mul_action
,submonoid.distrib_mul_action
: a submonoid inherits (distributive) multiplicative actions.
Operations on submonoids #
submonoid.comap
: preimage of a submonoid under a monoid homomorphism as a submonoid of the domain;submonoid.map
: image of a submonoid under a monoid homomorphism as a submonoid of the codomain;submonoid.prod
: product of two submonoidss : submonoid M
andt : submonoid N
as a submonoid ofM × N
;
Monoid homomorphisms between submonoid #
submonoid.subtype
: embedding of a submonoid into the ambient monoid.submonoid.inclusion
: given two submonoidsS
,T
such thatS ≤ T
,S.inclusion T
is the inclusion ofS
intoT
as a monoid homomorphism;mul_equiv.submonoid_congr
: converts a proof ofS = T
into a monoid isomorphism betweenS
andT
.submonoid.prod_equiv
: monoid isomorphism betweens.prod t
ands × t
;
Operations on monoid_hom
s #
monoid_hom.mrange
: range of a monoid homomorphism as a submonoid of the codomain;monoid_hom.mker
: kernel of a monoid homomorphism as a submonoid of the domain;monoid_hom.mrestrict
: restrict a monoid homomorphism to a submonoid;monoid_hom.cod_mrestrict
: restrict the codomain of a monoid homomorphism to a submonoid;monoid_hom.mrange_restrict
: restrict a monoid homomorphism to its range;
Tags #
submonoid, range, product, map, comap
Conversion to/from additive
/multiplicative
#
Submonoids of monoid M
are isomorphic to additive submonoids of additive M
.
Equations
- submonoid.to_add_submonoid = {to_equiv := {to_fun := λ (S : submonoid M), {carrier := ⇑additive.to_mul ⁻¹' ↑S, zero_mem' := _, add_mem' := _}, inv_fun := λ (S : add_submonoid (additive M)), {carrier := ⇑additive.of_mul ⁻¹' ↑S, one_mem' := _, mul_mem' := _}, left_inv := _, right_inv := _}, map_rel_iff' := _}
Additive submonoids of an additive monoid additive M
are isomorphic to submonoids of M
.
Additive submonoids of an additive monoid A
are isomorphic to
multiplicative submonoids of multiplicative A
.
Equations
- add_submonoid.to_submonoid = {to_equiv := {to_fun := λ (S : add_submonoid A), {carrier := ⇑multiplicative.to_add ⁻¹' ↑S, one_mem' := _, mul_mem' := _}, inv_fun := λ (S : submonoid (multiplicative A)), {carrier := ⇑multiplicative.of_add ⁻¹' ↑S, zero_mem' := _, add_mem' := _}, left_inv := _, right_inv := _}, map_rel_iff' := _}
Submonoids of a monoid multiplicative A
are isomorphic to additive submonoids of A
.
comap
and map
#
The preimage of a submonoid along a monoid homomorphism is a submonoid.
The preimage of an add_submonoid
along an add_monoid
homomorphism is an
add_submonoid
.
The image of a submonoid along a monoid homomorphism is a submonoid.
The image of an add_submonoid
along an add_monoid
homomorphism is
an add_submonoid
.
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 add_submonoid
of an add_monoid
inherits an addition.
An add_submonoid
of an add_monoid
inherits a zero.
An add_submonoid
of an unital additive magma inherits an unital additive magma
structure.
Equations
A submonoid of a unital magma inherits a unital magma structure.
Equations
A submonoid of a monoid inherits a monoid structure.
Equations
- S.to_monoid = function.injective.monoid coe _ _ _
An add_submonoid
of an add_monoid
inherits an add_monoid
structure.
Equations
An add_submonoid
of an add_comm_monoid
is
an add_comm_monoid
.
Equations
An add_submonoid
of an ordered_add_comm_monoid
is
an ordered_add_comm_monoid
.
Equations
A submonoid of an ordered_comm_monoid
is an ordered_comm_monoid
.
Equations
An add_submonoid
of a linear_ordered_add_comm_monoid
is
a linear_ordered_add_comm_monoid
.
A submonoid of a linear_ordered_comm_monoid
is a linear_ordered_comm_monoid
.
Equations
An add_submonoid
of an ordered_cancel_add_comm_monoid
is
an ordered_cancel_add_comm_monoid
.
A submonoid of an ordered_cancel_comm_monoid
is an ordered_cancel_comm_monoid
.
Equations
An add_submonoid
of a linear_ordered_cancel_add_comm_monoid
is
a linear_ordered_cancel_add_comm_monoid
.
A submonoid of a linear_ordered_cancel_comm_monoid
is a linear_ordered_cancel_comm_monoid
.
The natural monoid hom from an add_submonoid
of add_monoid
M
to M
.
The natural monoid hom from a submonoid of monoid M
to M
.
An additive submonoid is isomorphic to its image under an injective function
A submonoid is isomorphic to its image under an injective function
An induction principle on elements of the type
add_submonoid.closure s
. If p
holds for 0
and all elements of s
, and is preserved under
addition, then p
holds for all elements of the closure of s
.
The difference with add_submonoid.closure_induction
is that this acts on the subtype.
An induction principle on elements of the type submonoid.closure s
.
If p
holds for 1
and all elements of s
, and is preserved under multiplication, then p
holds for all elements of the closure of s
.
The difference with submonoid.closure_induction
is that this acts on the subtype.
Given submonoid
s s
, t
of monoids M
, N
respectively, s × t
as a submonoid
of M × N
.
Given add_submonoid
s s
, t
of add_monoid
s A
, B
respectively, s × t
as an add_submonoid
of A × B
.
The product of submonoids is isomorphic to their product as monoids.
The product of additive submonoids is isomorphic to their product as additive monoids
The range of a monoid homomorphism is a submonoid. See Note [range copy pattern].
The range of an add_monoid_hom
is an add_submonoid
.
The range of a surjective add_monoid
hom is the whole of the codomain.
The range of a surjective monoid hom is the whole of the codomain.
The image under an add_monoid
hom of the add_submonoid
generated by a set equals
the add_submonoid
generated by the image of the set.
The image under a monoid hom of the submonoid generated by a set equals the submonoid generated by the image of the set.
Restriction of a monoid hom to a submonoid of the domain.
Restriction of an add_monoid hom to an add_submonoid
of the domain.
Restriction of an add_monoid
hom to an add_submonoid
of the codomain.
Restriction of a monoid hom to a submonoid of the codomain.
Restriction of an add_monoid
hom to its range interpreted as a submonoid.
Equations
- f.mrange_restrict = f.cod_mrestrict f.mrange _
Restriction of a monoid hom to its range interpreted as a submonoid.
Equations
- f.mrange_restrict = f.cod_mrestrict f.mrange _
The multiplicative kernel of a monoid homomorphism is the submonoid of elements x : G
such
that f x = 1
Equations
- f.mker = submonoid.comap f ⊥
The additive kernel of an add_monoid
homomorphism is the add_submonoid
of
elements such that f x = 0
Equations
- f.mker = add_submonoid.comap f ⊥
Equations
- f.decidable_mem_mker = λ (x : M), decidable_of_iff (⇑f x = 0) _
Equations
- f.decidable_mem_mker = λ (x : M), decidable_of_iff (⇑f x = 1) _
the add_monoid_hom
from the preimage of an additive submonoid to itself.
The monoid_hom
from the preimage of a submonoid to itself.
the add_monoid_hom
from an additive submonoid to its image. See
add_equiv.add_submonoid_equiv_map
for a variant for add_equiv
s.
The monoid_hom
from a submonoid to its image.
See mul_equiv.submonoid_equiv_map
for a variant for mul_equiv
s.
The monoid hom associated to an inclusion of submonoids.
Equations
- submonoid.inclusion h = S.subtype.cod_mrestrict T _
The add_monoid
hom associated to an inclusion of submonoids.
Equations
- add_submonoid.inclusion h = S.subtype.cod_mrestrict T _
A submonoid is either the trivial submonoid or nontrivial.
A submonoid is either the trivial submonoid or contains a nonzero element.
Makes the identity isomorphism from a proof that two submonoids of a multiplicative monoid are equal.
Equations
- mul_equiv.submonoid_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 submonoids of an additive monoid are equal.
Equations
- add_equiv.add_submonoid_congr h = {to_fun := (equiv.set_congr _).to_fun, inv_fun := (equiv.set_congr _).inv_fun, left_inv := _, right_inv := _, map_add' := _}
A monoid homomorphism f : M →* N
with a left-inverse g : N → M
defines a multiplicative
equivalence between M
and f.mrange
.
This is a bidirectional version of monoid_hom.mrange_restrict
.
An additive monoid homomorphism f : M →+ N
with a left-inverse g : N → M
defines an additive
equivalence between M
and f.mrange
.
This is a bidirectional version of add_monoid_hom.mrange_restrict
.
An add_equiv
φ
between two additive monoids M
and N
induces an add_equiv
between a submonoid S ≤ M
and the submonoid φ(S) ≤ N
. See add_monoid_hom.add_submonoid_map
for a variant for add_monoid_hom
s.
A mul_equiv
φ
between two monoids M
and N
induces a mul_equiv
between
a submonoid S ≤ M
and the submonoid φ(S) ≤ N
.
See monoid_hom.submonoid_map
for a variant for monoid_hom
s.
Actions by submonoid
s #
These instances tranfer the action by an element m : M
of a monoid M
written as m • a
onto the
action by an element s : S
of a submonoid S : submonoid M
such that s • a = (s : M) • a
.
These instances work particularly well in conjunction with monoid.to_mul_action
, enabling
s • m
as an alias for ↑s * m
.
The action by a submonoid is the action by the underlying monoid.
Equations
The additive action by an add_submonoid is the action by the underlying add_monoid.
Equations
The action by a submonoid is the action by the underlying monoid.
Equations
The action by a submonoid is the action by the underlying monoid.
Equations
Note that this provides is_scalar_tower S M' M'
which is needed by smul_mul_assoc
.