Operations on Submonoid
s #
In this file we define various operations on Submonoid
s and MonoidHom
s.
Main definitions #
Conversion between multiplicative and additive definitions #
Submonoid.toAddSubmonoid
,Submonoid.toAddSubmonoid'
,AddSubmonoid.toSubmonoid
,AddSubmonoid.toSubmonoid'
: convert between multiplicative and additive submonoids ofM
,Multiplicative M
, andAdditive M
. These are stated asOrderIso
s.
(Commutative) monoid structure on a submonoid #
Submonoid.toMonoid
,Submonoid.toCommMonoid
: a submonoid inherits a (commutative) monoid structure.
Group actions by submonoids #
Submonoid.MulAction
,Submonoid.DistribMulAction
: 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;MulEquiv.submonoidCongr
: converts a proof ofS = T
into a monoid isomorphism betweenS
andT
.Submonoid.prodEquiv
: monoid isomorphism betweens.prod t
ands × t
;
Operations on MonoidHom
s #
MonoidHom.mrange
: range of a monoid homomorphism as a submonoid of the codomain;MonoidHom.mker
: kernel of a monoid homomorphism as a submonoid of the domain;MonoidHom.restrict
: restrict a monoid homomorphism to a submonoid;MonoidHom.codRestrict
: restrict the codomain of a monoid homomorphism to a submonoid;MonoidHom.mrangeRestrict
: 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
- One or more equations did not get rendered due to their size.
Instances For
Additive submonoids of an additive monoid Additive M
are isomorphic to submonoids of M
.
Equations
- AddSubmonoid.toSubmonoid' = OrderIso.symm Submonoid.toAddSubmonoid
Instances For
Additive submonoids of an additive monoid A
are isomorphic to
multiplicative submonoids of Multiplicative A
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Submonoids of a monoid Multiplicative A
are isomorphic to additive submonoids of A
.
Equations
- Submonoid.toAddSubmonoid' = OrderIso.symm AddSubmonoid.toSubmonoid
Instances For
The preimage of an AddSubmonoid
along an AddMonoid
homomorphism is an AddSubmonoid
.
Equations
Instances For
The preimage of a submonoid along a monoid homomorphism is a submonoid.
Equations
Instances For
The image of an AddSubmonoid
along an AddMonoid
homomorphism is an AddSubmonoid
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The image of a submonoid along a monoid homomorphism is a submonoid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
map f
and comap f
form a GaloisCoinsertion
when f
is injective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
map f
and comap f
form a GaloisCoinsertion
when f
is injective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
map f
and comap f
form a GaloisInsertion
when f
is surjective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AddSubmonoid.giMapComap.match_1 x motive x h_1 = Exists.casesOn x fun w h => h_1 w h
Instances For
map f
and comap f
form a GaloisInsertion
when f
is surjective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An AddSubmonoid
of an AddMonoid
inherits a zero.
Equations
- ZeroMemClass.zero S' = { zero := { val := 0, property := (_ : 0 ∈ S') } }
A submonoid of a monoid inherits a 1.
Equations
- OneMemClass.one S' = { one := { val := 1, property := (_ : 1 ∈ S') } }
An AddSubmonoid
of an AddMonoid
inherits a scalar multiplication.
Equations
- AddSubmonoidClass.nSMul S = { smul := fun n a => { val := n • ↑a, property := (_ : n • ↑a ∈ S) } }
A submonoid of a monoid inherits a power operator.
Equations
- SubmonoidClass.nPow S = { pow := fun a n => { val := ↑a ^ n, property := (_ : ↑a ^ n ∈ S) } }
An AddSubmonoid
of a unital additive magma inherits a unital additive magma structure.
Equations
- AddSubmonoidClass.toAddZeroClass S = Function.Injective.addZeroClass Subtype.val (_ : Function.Injective fun a => ↑a) (_ : ↑0 = ↑0) (_ : ∀ (x x_1 : { x // x ∈ S }), ↑(x + x_1) = ↑(x + x_1))
A submonoid of a unital magma inherits a unital magma structure.
Equations
- SubmonoidClass.toMulOneClass S = Function.Injective.mulOneClass Subtype.val (_ : Function.Injective fun a => ↑a) (_ : ↑1 = ↑1) (_ : ∀ (x x_1 : { x // x ∈ S }), ↑(x * x_1) = ↑(x * x_1))
An AddSubmonoid
of an AddMonoid
inherits an AddMonoid
structure.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of a monoid inherits a monoid structure.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of an AddCommMonoid
is an AddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of a CommMonoid
is a CommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of an OrderedAddCommMonoid
is an OrderedAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of an OrderedCommMonoid
is an OrderedCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of a LinearOrderedAddCommMonoid
is a LinearOrderedAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of a LinearOrderedCommMonoid
is a LinearOrderedCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of an OrderedCancelAddCommMonoid
is an OrderedCancelAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of an OrderedCancelCommMonoid
is an OrderedCancelCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of a LinearOrderedCancelAddCommMonoid
is
a LinearOrderedCancelAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of a LinearOrderedCancelCommMonoid
is a LinearOrderedCancelCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
The natural monoid hom from an AddSubmonoid
of AddMonoid
M
to M
.
Equations
Instances For
The natural monoid hom from a submonoid of monoid M
to M
.
Equations
Instances For
An AddSubmonoid
of an AddMonoid
inherits an addition.
Equations
- AddSubmonoid.add S = { add := fun a b => { val := ↑a + ↑b, property := (_ : ↑a + ↑b ∈ S) } }
A submonoid of a monoid inherits a multiplication.
Equations
- Submonoid.mul S = { mul := fun a b => { val := ↑a * ↑b, property := (_ : ↑a * ↑b ∈ S) } }
An AddSubmonoid
of an AddMonoid
inherits a zero.
Equations
- AddSubmonoid.zero S = { zero := { val := 0, property := (_ : 0 ∈ S) } }
A submonoid of a monoid inherits a 1.
Equations
- Submonoid.one S = { one := { val := 1, property := (_ : 1 ∈ S) } }
An AddSubmonoid
of a unital additive magma inherits a unital additive magma structure.
Equations
- AddSubmonoid.toAddZeroClass S = Function.Injective.addZeroClass Subtype.val (_ : Function.Injective fun a => ↑a) (_ : ↑0 = ↑0) (_ : ∀ (x x_1 : { x // x ∈ S }), ↑(x + x_1) = ↑(x + x_1))
A submonoid of a unital magma inherits a unital magma structure.
Equations
- Submonoid.toMulOneClass S = Function.Injective.mulOneClass Subtype.val (_ : Function.Injective fun a => ↑a) (_ : ↑1 = ↑1) (_ : ∀ (x x_1 : { x // x ∈ S }), ↑(x * x_1) = ↑(x * x_1))
An AddSubmonoid
of an AddMonoid
inherits an AddMonoid
structure.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of an AddCommMonoid
is an AddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of a CommMonoid
is a CommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of an OrderedAddCommMonoid
is an OrderedAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of an OrderedCommMonoid
is an OrderedCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of a LinearOrderedAddCommMonoid
is a LinearOrderedAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of a LinearOrderedCommMonoid
is a LinearOrderedCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of an OrderedCancelAddCommMonoid
is an OrderedCancelAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of an OrderedCancelCommMonoid
is an OrderedCancelCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
An AddSubmonoid
of a LinearOrderedCancelAddCommMonoid
is
a LinearOrderedCancelAddCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
A submonoid of a LinearOrderedCancelCommMonoid
is a LinearOrderedCancelCommMonoid
.
Equations
- One or more equations did not get rendered due to their size.
The natural monoid hom from a submonoid of monoid M
to M
.
Equations
Instances For
The top additive submonoid is isomorphic to the additive monoid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The top submonoid is isomorphic to the monoid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An additive subgroup is isomorphic to its image under an injective function. If you
have an isomorphism, use AddEquiv.addSubmonoidMap
for better definitional equalities.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
use MulEquiv.submonoidMap
for better definitional equalities.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given AddSubmonoid
s s
, t
of AddMonoid
s A
, B
respectively, s × t
as an AddSubmonoid
of A × B
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given submonoids s
, t
of monoids M
, N
respectively, s × t
as a submonoid
of M × N
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The product of additive submonoids is isomorphic to their product as additive monoids
Equations
- One or more equations did not get rendered due to their size.
Instances For
The product of submonoids is isomorphic to their product as monoids.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AddSubmonoid.map_inl.match_1 s p motive x h_1 = Exists.casesOn x fun w h => And.casesOn h fun left right => h_1 w left right
Instances For
Equations
- AddSubmonoid.map_inl.match_2 s p motive x h_1 = And.casesOn x fun left right => h_1 left right
Instances For
Equations
- AddSubmonoid.map_inr.match_2 s p motive x h_1 = And.casesOn x fun left right => h_1 left right
Instances For
Equations
- AddSubmonoid.map_inr.match_1 s p motive x h_1 = Exists.casesOn x fun w h => And.casesOn h fun left right => h_1 w left right
Instances For
The range of an AddMonoidHom
is an AddSubmonoid
.
Equations
- AddMonoidHom.mrange f = AddSubmonoid.copy (AddSubmonoid.map f ⊤) (Set.range ↑f) (_ : Set.range ↑f = ↑f '' Set.univ)
Instances For
The range of a monoid homomorphism is a submonoid. See Note [range copy pattern].
Equations
- MonoidHom.mrange f = Submonoid.copy (Submonoid.map f ⊤) (Set.range ↑f) (_ : Set.range ↑f = ↑f '' Set.univ)
Instances For
The range of a surjective AddMonoid
hom is the whole of the codomain.
The range of a surjective monoid hom is the whole of the codomain.
The image under an AddMonoid
hom of the AddSubmonoid
generated by a set equals
the AddSubmonoid
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 an AddMonoid
hom to an AddSubmonoid
of the domain.
Equations
Instances For
Restriction of a monoid hom to a submonoid of the domain.
Equations
Instances For
Restriction of an AddMonoid
hom to an AddSubmonoid
of the codomain.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Restriction of a monoid hom to a submonoid of the codomain.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Restriction of an AddMonoid
hom to its range interpreted as a submonoid.
Equations
- AddMonoidHom.mrangeRestrict f = AddMonoidHom.codRestrict f (AddMonoidHom.mrange f) (_ : ∀ (x : M), ∃ y, ↑f y = ↑f x)
Instances For
Restriction of a monoid hom to its range interpreted as a submonoid.
Equations
- MonoidHom.mrangeRestrict f = MonoidHom.codRestrict f (MonoidHom.mrange f) (_ : ∀ (x : M), ∃ y, ↑f y = ↑f x)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The additive kernel of an AddMonoid
hom is the AddSubmonoid
of
elements such that f x = 0
Equations
Instances For
The multiplicative kernel of a monoid hom is the submonoid of elements x : G
such
that f x = 1
Equations
Instances For
Equations
- AddMonoidHom.decidableMemMker f x = decidable_of_iff (↑f x = 0) (_ : x ∈ AddMonoidHom.mker f ↔ ↑f x = 0)
Equations
- MonoidHom.decidableMemMker f x = decidable_of_iff (↑f x = 1) (_ : x ∈ MonoidHom.mker f ↔ ↑f x = 1)
the AddMonoidHom
from the preimage of an additive submonoid to itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The MonoidHom
from the preimage of a submonoid to itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
the AddMonoidHom
from an additive submonoid to its image. See
AddEquiv.AddSubmonoidMap
for a variant for AddEquiv
s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The MonoidHom
from a submonoid to its image.
See MulEquiv.SubmonoidMap
for a variant for MulEquiv
s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The AddMonoid
hom associated to an inclusion of submonoids.
Equations
- AddSubmonoid.inclusion h = AddMonoidHom.codRestrict (AddSubmonoid.subtype S) T (_ : ∀ (x : { x // x ∈ S }), ↑(AddSubmonoid.subtype S) x ∈ T)
Instances For
The monoid hom associated to an inclusion of submonoids.
Equations
- Submonoid.inclusion h = MonoidHom.codRestrict (Submonoid.subtype S) T (_ : ∀ (x : { x // x ∈ S }), ↑(Submonoid.subtype S) x ∈ T)
Instances For
An additive submonoid is either the trivial additive submonoid or nontrivial.
A submonoid is either the trivial submonoid or nontrivial.
An additive submonoid is either the trivial additive submonoid or contains a nonzero element.
Makes the identity additive isomorphism from a proof two submonoids of an additive monoid are equal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Makes the identity isomorphism from a proof that two submonoids of a multiplicative monoid are equal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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 AddMonoidHom.mrange_restrict
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AddEquiv.ofLeftInverse'.match_1 f x motive x h_1 = Exists.casesOn x fun w h => h_1 w h
Instances For
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 MonoidHom.mrange_restrict
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An AddEquiv
φ
between two additive monoids M
and N
induces an AddEquiv
between a submonoid S ≤ M
and the submonoid φ(S) ≤ N
. See
AddMonoidHom.addSubmonoidMap
for a variant for AddMonoidHom
s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A MulEquiv
φ
between two monoids M
and N
induces a MulEquiv
between
a submonoid S ≤ M
and the submonoid φ(S) ≤ N
.
See MonoidHom.submonoidMap
for a variant for MonoidHom
s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Actions by Submonoid
s #
These instances transfer 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.toMulAction
, enabling
s • m
as an alias for ↑s * m
.
Equations
- AddSubmonoid.vadd S = VAdd.comp α ↑(AddSubmonoid.subtype S)
Equations
- Submonoid.smul S = SMul.comp α ↑(Submonoid.subtype S)
Note that this provides IsScalarTower S M' M'
which is needed by SMulMulAssoc
.
The additive action by an AddSubmonoid
is the action by the underlying AddMonoid
.
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.