Operations on submonoids #
In this file we define various operations on submonoids and monoid_homs.
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_isos.
(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 Mandt : submonoid Nas a submonoid ofM × N;
Monoid homomorphisms between submonoid #
submonoid.subtype: embedding of a submonoid into the ambient monoid.submonoid.inclusion: given two submonoidsS,Tsuch thatS ≤ T,S.inclusion Tis the inclusion ofSintoTas a monoid homomorphism;mul_equiv.submonoid_congr: converts a proof ofS = Tinto a monoid isomorphism betweenSandT.submonoid.prod_equiv: monoid isomorphism betweens.prod tands × t;
Operations on monoid_homs #
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, add_mem' := _, zero_mem' := _}, inv_fun := λ (S : add_submonoid (additive M)), {carrier := ⇑additive.of_mul ⁻¹' ↑S, mul_mem' := _, one_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, mul_mem' := _, one_mem' := _}, inv_fun := λ (S : submonoid (multiplicative A)), {carrier := ⇑multiplicative.of_add ⁻¹' ↑S, add_mem' := _, zero_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.
A submonoid of a monoid inherits a multiplication.
A submonoid of a monoid inherits a 1.
Equations
- submonoid_class.has_one S' = {one := ⟨1, _⟩}
An add_submonoid of an add_monoid inherits a zero.
Equations
- add_submonoid_class.has_zero S' = {zero := ⟨0, _⟩}
An add_submonoid of an add_monoid inherits a scalar multiplication.
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
An add_submonoid of an add_monoid inherits an add_monoid
structure.
Equations
A submonoid of a comm_monoid is a comm_monoid.
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.
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.
A submonoid of a linear_ordered_cancel_comm_monoid is a linear_ordered_cancel_comm_monoid.
An add_submonoid of a linear_ordered_cancel_add_comm_monoid is
a linear_ordered_cancel_add_comm_monoid.
The natural monoid hom from a submonoid of monoid M to M.
Equations
- submonoid_class.subtype S' = {to_fun := coe coe_to_lift, map_one' := _, map_mul' := _}
The natural monoid hom from an add_submonoid of add_monoid M to M.
Equations
- add_submonoid_class.subtype S' = {to_fun := coe coe_to_lift, map_zero' := _, map_add' := _}
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
- S.to_add_monoid = function.injective.add_monoid coe _ _ _ _
An add_submonoid of an add_comm_monoid is
an add_comm_monoid.
Equations
A submonoid of a comm_monoid is a comm_monoid.
Equations
- S.to_comm_monoid = function.injective.comm_monoid coe _ _ _ _
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.
Equations
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.
Equations
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.
Equations
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
Given submonoids s, t of monoids M, N respectively, s × t as a submonoid
of M × N.
Given add_submonoids s, t of add_monoids 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_map for a variant for add_equivs.
The monoid_hom from a submonoid to its image.
See mul_equiv.submonoid_map for a variant for mul_equivs.
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.
An additive submonoid is either the trivial additive submonoid or nontrivial.
A submonoid is either the trivial submonoid or contains a nonzero element.
An additive submonoid is either the trivial additive 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_homs.
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_homs.
Actions by submonoids #
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.
Equations
- S.has_scalar = has_scalar.comp α ⇑(S.subtype)
Equations
- S.has_scalar = has_vadd.comp α ⇑(S.subtype)
Note that this provides is_scalar_tower S M' M' which is needed by smul_mul_assoc.
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.