Operations on Submonoids #
In this file we define various operations on Submonoids and MonoidHoms.
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 asOrderIsos.
(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 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;MulEquiv.submonoidCongr: converts a proof ofS = Tinto a monoid isomorphism betweenSandT.Submonoid.prodEquiv: monoid isomorphism betweens.prod tands × t;
Operations on MonoidHoms #
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 AddSubmonoids s, t of AddMonoids 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 AddEquivs.
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 MulEquivs.
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 AddMonoidHoms.
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 MonoidHoms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Actions by Submonoids #
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.