Documentation

Mathlib.Algebra.Group.Submonoid.Operations

Operations on Submonoids #

In this file we define various operations on Submonoids and MonoidHoms.

Main definitions #

Conversion between multiplicative and additive definitions #

(Commutative) monoid structure on a submonoid #

Group actions by submonoids #

Operations on submonoids #

Monoid homomorphisms between submonoid #

Operations on MonoidHoms #

Tags #

submonoid, range, product, map, comap

Conversion to/from Additive/Multiplicative #

Submonoids of monoid M are isomorphic to additive submonoids of Additive M.

Equations
    Instances For
      @[reducible, inline]

      Additive submonoids of an additive monoid Additive M are isomorphic to submonoids of M.

      Equations
        Instances For

          Additive submonoids of an additive monoid A are isomorphic to multiplicative submonoids of Multiplicative A.

          Equations
            Instances For
              @[reducible, inline]

              Submonoids of a monoid Multiplicative A are isomorphic to additive submonoids of A.

              Equations
                Instances For

                  comap and map #

                  def Submonoid.comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (S : Submonoid N) :

                  The preimage of a submonoid along a monoid homomorphism is a submonoid.

                  Equations
                    Instances For
                      def AddSubmonoid.comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (S : AddSubmonoid N) :

                      The preimage of an AddSubmonoid along an AddMonoid homomorphism is an AddSubmonoid.

                      Equations
                        Instances For
                          @[simp]
                          theorem Submonoid.coe_comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (S : Submonoid N) (f : F) :
                          โ†‘(comap f S) = โ‡‘f โปยน' โ†‘S
                          @[simp]
                          theorem AddSubmonoid.coe_comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (S : AddSubmonoid N) (f : F) :
                          โ†‘(comap f S) = โ‡‘f โปยน' โ†‘S
                          @[simp]
                          theorem Submonoid.mem_comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {S : Submonoid N} {f : F} {x : M} :
                          @[simp]
                          theorem AddSubmonoid.mem_comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {S : AddSubmonoid N} {f : F} {x : M} :
                          theorem Submonoid.comap_comap {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [MulOneClass P] (S : Submonoid P) (g : N โ†’* P) (f : M โ†’* N) :
                          comap f (comap g S) = comap (g.comp f) S
                          theorem AddSubmonoid.comap_comap {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (S : AddSubmonoid P) (g : N โ†’+ P) (f : M โ†’+ N) :
                          comap f (comap g S) = comap (g.comp f) S
                          def Submonoid.map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (S : Submonoid M) :

                          The image of a submonoid along a monoid homomorphism is a submonoid.

                          Equations
                            Instances For
                              def AddSubmonoid.map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (S : AddSubmonoid M) :

                              The image of an AddSubmonoid along an AddMonoid homomorphism is an AddSubmonoid.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem Submonoid.coe_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (S : Submonoid M) :
                                  โ†‘(map f S) = โ‡‘f '' โ†‘S
                                  @[simp]
                                  theorem AddSubmonoid.coe_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (S : AddSubmonoid M) :
                                  โ†‘(map f S) = โ‡‘f '' โ†‘S
                                  @[simp]
                                  theorem Submonoid.map_coe_toMonoidHom {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (S : Submonoid M) :
                                  map (โ†‘f) S = map f S
                                  @[simp]
                                  theorem AddSubmonoid.map_coe_toAddMonoidHom {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (S : AddSubmonoid M) :
                                  map (โ†‘f) S = map f S
                                  @[simp]
                                  theorem Submonoid.map_coe_toMulEquiv {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_5} [EquivLike F M N] [MulEquivClass F M N] (f : F) (S : Submonoid M) :
                                  map (โ†‘f) S = map f S
                                  @[simp]
                                  theorem AddSubmonoid.map_coe_toAddEquiv {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_5} [EquivLike F M N] [AddEquivClass F M N] (f : F) (S : AddSubmonoid M) :
                                  map (โ†‘f) S = map f S
                                  @[simp]
                                  theorem Submonoid.mem_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} {S : Submonoid M} {y : N} :
                                  y โˆˆ map f S โ†” โˆƒ x โˆˆ S, f x = y
                                  @[simp]
                                  theorem AddSubmonoid.mem_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} {S : AddSubmonoid M} {y : N} :
                                  y โˆˆ map f S โ†” โˆƒ x โˆˆ S, f x = y
                                  theorem Submonoid.mem_map_of_mem {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) {S : Submonoid M} {x : M} (hx : x โˆˆ S) :
                                  f x โˆˆ map f S
                                  theorem AddSubmonoid.mem_map_of_mem {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) {S : AddSubmonoid M} {x : M} (hx : x โˆˆ S) :
                                  f x โˆˆ map f S
                                  theorem Submonoid.apply_coe_mem_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (S : Submonoid M) (x : โ†ฅS) :
                                  f โ†‘x โˆˆ map f S
                                  theorem AddSubmonoid.apply_coe_mem_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (S : AddSubmonoid M) (x : โ†ฅS) :
                                  f โ†‘x โˆˆ map f S
                                  theorem Submonoid.map_map {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [MulOneClass P] (S : Submonoid M) (g : N โ†’* P) (f : M โ†’* N) :
                                  map g (map f S) = map (g.comp f) S
                                  theorem AddSubmonoid.map_map {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (S : AddSubmonoid M) (g : N โ†’+ P) (f : M โ†’+ N) :
                                  map g (map f S) = map (g.comp f) S
                                  @[simp]
                                  theorem Submonoid.mem_map_iff_mem {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) {S : Submonoid M} {x : M} :
                                  @[simp]
                                  theorem AddSubmonoid.mem_map_iff_mem {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) {S : AddSubmonoid M} {x : M} :
                                  theorem Submonoid.map_le_iff_le_comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} {S : Submonoid M} {T : Submonoid N} :
                                  theorem AddSubmonoid.map_le_iff_le_comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} {S : AddSubmonoid M} {T : AddSubmonoid N} :
                                  theorem Submonoid.gc_map_comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                  theorem AddSubmonoid.gc_map_comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :
                                  theorem Submonoid.map_le_of_le_comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {T : Submonoid N} {f : F} :
                                  S โ‰ค comap f T โ†’ map f S โ‰ค T
                                  theorem AddSubmonoid.map_le_of_le_comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (S : AddSubmonoid M) {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {T : AddSubmonoid N} {f : F} :
                                  S โ‰ค comap f T โ†’ map f S โ‰ค T
                                  theorem Submonoid.le_comap_of_map_le {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {T : Submonoid N} {f : F} :
                                  map f S โ‰ค T โ†’ S โ‰ค comap f T
                                  theorem AddSubmonoid.le_comap_of_map_le {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (S : AddSubmonoid M) {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {T : AddSubmonoid N} {f : F} :
                                  map f S โ‰ค T โ†’ S โ‰ค comap f T
                                  theorem Submonoid.le_comap_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} :
                                  S โ‰ค comap f (map f S)
                                  theorem AddSubmonoid.le_comap_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (S : AddSubmonoid M) {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} :
                                  S โ‰ค comap f (map f S)
                                  theorem Submonoid.map_comap_le {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {S : Submonoid N} {f : F} :
                                  map f (comap f S) โ‰ค S
                                  theorem AddSubmonoid.map_comap_le {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {S : AddSubmonoid N} {f : F} :
                                  map f (comap f S) โ‰ค S
                                  theorem Submonoid.monotone_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} :
                                  theorem AddSubmonoid.monotone_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} :
                                  theorem Submonoid.monotone_comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} :
                                  theorem AddSubmonoid.monotone_comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} :
                                  @[simp]
                                  theorem Submonoid.map_comap_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} :
                                  map f (comap f (map f S)) = map f S
                                  @[simp]
                                  theorem AddSubmonoid.map_comap_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (S : AddSubmonoid M) {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} :
                                  map f (comap f (map f S)) = map f S
                                  @[simp]
                                  theorem Submonoid.comap_map_comap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {S : Submonoid N} {f : F} :
                                  comap f (map f (comap f S)) = comap f S
                                  @[simp]
                                  theorem AddSubmonoid.comap_map_comap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {S : AddSubmonoid N} {f : F} :
                                  comap f (map f (comap f S)) = comap f S
                                  theorem Submonoid.map_sup {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (S T : Submonoid M) (f : F) :
                                  map f (S โŠ” T) = map f S โŠ” map f T
                                  theorem AddSubmonoid.map_sup {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (S T : AddSubmonoid M) (f : F) :
                                  map f (S โŠ” T) = map f S โŠ” map f T
                                  theorem Submonoid.map_iSup {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ฮน : Sort u_5} (f : F) (s : ฮน โ†’ Submonoid M) :
                                  map f (iSup s) = โจ† (i : ฮน), map f (s i)
                                  theorem AddSubmonoid.map_iSup {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ฮน : Sort u_5} (f : F) (s : ฮน โ†’ AddSubmonoid M) :
                                  map f (iSup s) = โจ† (i : ฮน), map f (s i)
                                  theorem Submonoid.map_inf {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (S T : Submonoid M) (f : F) (hf : Function.Injective โ‡‘f) :
                                  map f (S โŠ“ T) = map f S โŠ“ map f T
                                  theorem AddSubmonoid.map_inf {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (S T : AddSubmonoid M) (f : F) (hf : Function.Injective โ‡‘f) :
                                  map f (S โŠ“ T) = map f S โŠ“ map f T
                                  theorem Submonoid.map_iInf {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ฮน : Sort u_5} [Nonempty ฮน] (f : F) (hf : Function.Injective โ‡‘f) (s : ฮน โ†’ Submonoid M) :
                                  map f (iInf s) = โจ… (i : ฮน), map f (s i)
                                  theorem AddSubmonoid.map_iInf {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ฮน : Sort u_5} [Nonempty ฮน] (f : F) (hf : Function.Injective โ‡‘f) (s : ฮน โ†’ AddSubmonoid M) :
                                  map f (iInf s) = โจ… (i : ฮน), map f (s i)
                                  theorem Submonoid.comap_inf {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (S T : Submonoid N) (f : F) :
                                  comap f (S โŠ“ T) = comap f S โŠ“ comap f T
                                  theorem AddSubmonoid.comap_inf {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (S T : AddSubmonoid N) (f : F) :
                                  comap f (S โŠ“ T) = comap f S โŠ“ comap f T
                                  theorem Submonoid.comap_iInf {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ฮน : Sort u_5} (f : F) (s : ฮน โ†’ Submonoid N) :
                                  comap f (iInf s) = โจ… (i : ฮน), comap f (s i)
                                  theorem AddSubmonoid.comap_iInf {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ฮน : Sort u_5} (f : F) (s : ฮน โ†’ AddSubmonoid N) :
                                  comap f (iInf s) = โจ… (i : ฮน), comap f (s i)
                                  @[simp]
                                  theorem Submonoid.map_bot {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                  @[simp]
                                  theorem AddSubmonoid.map_bot {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :
                                  theorem Submonoid.disjoint_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) {H K : Submonoid M} (h : Disjoint H K) :
                                  Disjoint (map f H) (map f K)
                                  theorem AddSubmonoid.disjoint_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) {H K : AddSubmonoid M} (h : Disjoint H K) :
                                  Disjoint (map f H) (map f K)
                                  @[simp]
                                  theorem Submonoid.comap_top {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                  @[simp]
                                  theorem AddSubmonoid.comap_top {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :
                                  @[simp]
                                  theorem Submonoid.map_id {M : Type u_1} [MulOneClass M] (S : Submonoid M) :
                                  def Submonoid.gciMapComap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) :

                                  map f and comap f form a GaloisCoinsertion when f is injective.

                                  Equations
                                    Instances For
                                      def AddSubmonoid.gciMapComap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) :

                                      map f and comap f form a GaloisCoinsertion when f is injective.

                                      Equations
                                        Instances For
                                          theorem Submonoid.comap_map_eq_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) (S : Submonoid M) :
                                          comap f (map f S) = S
                                          theorem AddSubmonoid.comap_map_eq_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) (S : AddSubmonoid M) :
                                          comap f (map f S) = S
                                          theorem Submonoid.comap_surjective_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) :
                                          theorem Submonoid.map_injective_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) :
                                          theorem AddSubmonoid.map_injective_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) :
                                          theorem Submonoid.comap_inf_map_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) (S T : Submonoid M) :
                                          comap f (map f S โŠ“ map f T) = S โŠ“ T
                                          theorem AddSubmonoid.comap_inf_map_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) (S T : AddSubmonoid M) :
                                          comap f (map f S โŠ“ map f T) = S โŠ“ T
                                          theorem Submonoid.comap_iInf_map_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ Submonoid M) :
                                          comap f (โจ… (i : ฮน), map f (S i)) = iInf S
                                          theorem AddSubmonoid.comap_iInf_map_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ AddSubmonoid M) :
                                          comap f (โจ… (i : ฮน), map f (S i)) = iInf S
                                          theorem Submonoid.comap_sup_map_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) (S T : Submonoid M) :
                                          comap f (map f S โŠ” map f T) = S โŠ” T
                                          theorem AddSubmonoid.comap_sup_map_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) (S T : AddSubmonoid M) :
                                          comap f (map f S โŠ” map f T) = S โŠ” T
                                          theorem Submonoid.comap_iSup_map_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ Submonoid M) :
                                          comap f (โจ† (i : ฮน), map f (S i)) = iSup S
                                          theorem AddSubmonoid.comap_iSup_map_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ AddSubmonoid M) :
                                          comap f (โจ† (i : ฮน), map f (S i)) = iSup S
                                          theorem Submonoid.map_le_map_iff_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) {S T : Submonoid M} :
                                          theorem AddSubmonoid.map_le_map_iff_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) {S T : AddSubmonoid M} :
                                          theorem Submonoid.map_strictMono_of_injective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) :
                                          theorem AddSubmonoid.map_strictMono_of_injective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Injective โ‡‘f) :
                                          def Submonoid.giMapComap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) :

                                          map f and comap f form a GaloisInsertion when f is surjective.

                                          Equations
                                            Instances For
                                              def AddSubmonoid.giMapComap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) :

                                              map f and comap f form a GaloisInsertion when f is surjective.

                                              Equations
                                                Instances For
                                                  theorem Submonoid.map_comap_eq_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) (S : Submonoid N) :
                                                  map f (comap f S) = S
                                                  theorem AddSubmonoid.map_comap_eq_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) (S : AddSubmonoid N) :
                                                  map f (comap f S) = S
                                                  theorem Submonoid.map_surjective_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) :
                                                  theorem Submonoid.comap_injective_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) :
                                                  theorem Submonoid.map_inf_comap_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) (S T : Submonoid N) :
                                                  map f (comap f S โŠ“ comap f T) = S โŠ“ T
                                                  theorem AddSubmonoid.map_inf_comap_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) (S T : AddSubmonoid N) :
                                                  map f (comap f S โŠ“ comap f T) = S โŠ“ T
                                                  theorem Submonoid.map_iInf_comap_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ Submonoid N) :
                                                  map f (โจ… (i : ฮน), comap f (S i)) = iInf S
                                                  theorem AddSubmonoid.map_iInf_comap_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ AddSubmonoid N) :
                                                  map f (โจ… (i : ฮน), comap f (S i)) = iInf S
                                                  theorem Submonoid.map_sup_comap_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) (S T : Submonoid N) :
                                                  map f (comap f S โŠ” comap f T) = S โŠ” T
                                                  theorem AddSubmonoid.map_sup_comap_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) (S T : AddSubmonoid N) :
                                                  map f (comap f S โŠ” comap f T) = S โŠ” T
                                                  theorem Submonoid.map_iSup_comap_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ Submonoid N) :
                                                  map f (โจ† (i : ฮน), comap f (S i)) = iSup S
                                                  theorem AddSubmonoid.map_iSup_comap_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {ฮน : Type u_5} {f : F} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ AddSubmonoid N) :
                                                  map f (โจ† (i : ฮน), comap f (S i)) = iSup S
                                                  theorem Submonoid.comap_le_comap_iff_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) {S T : Submonoid N} :
                                                  theorem AddSubmonoid.comap_le_comap_iff_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) {S T : AddSubmonoid N} :
                                                  theorem Submonoid.comap_strictMono_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) :
                                                  theorem AddSubmonoid.comap_strictMono_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) :
                                                  def Submonoid.topEquiv {M : Type u_5} [MulOneClass M] :
                                                  โ†ฅโŠค โ‰ƒ* M

                                                  The top submonoid is isomorphic to the monoid.

                                                  Equations
                                                    Instances For

                                                      The top additive submonoid is isomorphic to the additive monoid.

                                                      Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem AddSubmonoid.topEquiv_apply {M : Type u_5} [AddZeroClass M] (x : โ†ฅโŠค) :
                                                          topEquiv x = โ†‘x
                                                          @[simp]
                                                          theorem Submonoid.topEquiv_apply {M : Type u_5} [MulOneClass M] (x : โ†ฅโŠค) :
                                                          topEquiv x = โ†‘x
                                                          @[simp]
                                                          theorem Submonoid.topEquiv_symm_apply_coe {M : Type u_5} [MulOneClass M] (x : M) :
                                                          โ†‘(topEquiv.symm x) = x
                                                          noncomputable def Submonoid.equivMapOfInjective {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] (S : Submonoid M) (f : M โ†’* N) (hf : Function.Injective โ‡‘f) :
                                                          โ†ฅS โ‰ƒ* โ†ฅ(map f S)

                                                          A subgroup is isomorphic to its image under an injective function. If you have an isomorphism, use MulEquiv.submonoidMap for better definitional equalities.

                                                          Equations
                                                            Instances For
                                                              noncomputable def AddSubmonoid.equivMapOfInjective {N : Type u_2} [AddZeroClass N] {M : Type u_5} [AddZeroClass M] (S : AddSubmonoid M) (f : M โ†’+ N) (hf : Function.Injective โ‡‘f) :
                                                              โ†ฅS โ‰ƒ+ โ†ฅ(map f S)

                                                              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
                                                                Instances For
                                                                  @[simp]
                                                                  theorem Submonoid.coe_equivMapOfInjective_apply {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] (S : Submonoid M) (f : M โ†’* N) (hf : Function.Injective โ‡‘f) (x : โ†ฅS) :
                                                                  โ†‘((S.equivMapOfInjective f hf) x) = f โ†‘x
                                                                  @[simp]
                                                                  theorem AddSubmonoid.coe_equivMapOfInjective_apply {N : Type u_2} [AddZeroClass N] {M : Type u_5} [AddZeroClass M] (S : AddSubmonoid M) (f : M โ†’+ N) (hf : Function.Injective โ‡‘f) (x : โ†ฅS) :
                                                                  โ†‘((S.equivMapOfInjective f hf) x) = f โ†‘x
                                                                  def Submonoid.prod {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] (s : Submonoid M) (t : Submonoid N) :

                                                                  Given submonoids s, t of monoids M, N respectively, s ร— t as a submonoid of M ร— N.

                                                                  Equations
                                                                    Instances For
                                                                      def AddSubmonoid.prod {N : Type u_2} [AddZeroClass N] {M : Type u_5} [AddZeroClass M] (s : AddSubmonoid M) (t : AddSubmonoid N) :

                                                                      Given AddSubmonoids s, t of AddMonoids A, B respectively, s ร— t as an AddSubmonoid of A ร— B.

                                                                      Equations
                                                                        Instances For
                                                                          theorem Submonoid.coe_prod {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] (s : Submonoid M) (t : Submonoid N) :
                                                                          โ†‘(s.prod t) = โ†‘s ร—หข โ†‘t
                                                                          theorem AddSubmonoid.coe_prod {N : Type u_2} [AddZeroClass N] {M : Type u_5} [AddZeroClass M] (s : AddSubmonoid M) (t : AddSubmonoid N) :
                                                                          โ†‘(s.prod t) = โ†‘s ร—หข โ†‘t
                                                                          theorem Submonoid.mem_prod {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] {s : Submonoid M} {t : Submonoid N} {p : M ร— N} :
                                                                          theorem Submonoid.prod_mono {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] {sโ‚ sโ‚‚ : Submonoid M} {tโ‚ tโ‚‚ : Submonoid N} (hs : sโ‚ โ‰ค sโ‚‚) (ht : tโ‚ โ‰ค tโ‚‚) :
                                                                          sโ‚.prod tโ‚ โ‰ค sโ‚‚.prod tโ‚‚
                                                                          theorem AddSubmonoid.prod_mono {N : Type u_2} [AddZeroClass N] {M : Type u_5} [AddZeroClass M] {sโ‚ sโ‚‚ : AddSubmonoid M} {tโ‚ tโ‚‚ : AddSubmonoid N} (hs : sโ‚ โ‰ค sโ‚‚) (ht : tโ‚ โ‰ค tโ‚‚) :
                                                                          sโ‚.prod tโ‚ โ‰ค sโ‚‚.prod tโ‚‚
                                                                          def Submonoid.prodEquiv {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] (s : Submonoid M) (t : Submonoid N) :
                                                                          โ†ฅ(s.prod t) โ‰ƒ* โ†ฅs ร— โ†ฅt

                                                                          The product of submonoids is isomorphic to their product as monoids.

                                                                          Equations
                                                                            Instances For
                                                                              def AddSubmonoid.prodEquiv {N : Type u_2} [AddZeroClass N] {M : Type u_5} [AddZeroClass M] (s : AddSubmonoid M) (t : AddSubmonoid N) :
                                                                              โ†ฅ(s.prod t) โ‰ƒ+ โ†ฅs ร— โ†ฅt

                                                                              The product of additive submonoids is isomorphic to their product as additive monoids.

                                                                              Equations
                                                                                Instances For
                                                                                  @[simp]
                                                                                  theorem Submonoid.prod_bot_sup_bot_prod {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] (s : Submonoid M) (t : Submonoid N) :
                                                                                  s.prod โŠฅ โŠ” โŠฅ.prod t = s.prod t
                                                                                  theorem Submonoid.mem_map_equiv {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] {f : M โ‰ƒ* N} {K : Submonoid M} {x : N} :
                                                                                  theorem Submonoid.closure_prod {N : Type u_2} [MulOneClass N] {M : Type u_5} [MulOneClass M] {s : Set M} {t : Set N} (hs : 1 โˆˆ s) (ht : 1 โˆˆ t) :
                                                                                  theorem AddSubmonoid.closure_prod {N : Type u_2} [AddZeroClass N] {M : Type u_5} [AddZeroClass M] {s : Set M} {t : Set N} (hs : 0 โˆˆ s) (ht : 0 โˆˆ t) :

                                                                                  For many categories (monoids, modules, rings, ...) the set-theoretic image of a morphism f is a subobject of the codomain. When this is the case, it is useful to define the range of a morphism in such a way that the underlying carrier set of the range subobject is definitionally Set.range f. In particular this means that the types โ†ฅ(Set.range f) and โ†ฅf.range are interchangeable without proof obligations.

                                                                                  A convenient candidate definition for range which is mathematically correct is map โŠค f, just as Set.range could have been defined as f '' Set.univ. However, this lacks the desired definitional convenience, in that it both does not match Set.range, and that it introduces a redundant x โˆˆ โŠค term which clutters proofs. In such a case one may resort to the copy pattern. A copy function converts the definitional problem for the carrier set of a subobject into a one-off propositional proof obligation which one discharges while writing the definition of the definitionally convenient range (the parameter hs in the example below).

                                                                                  A good example is the case of a morphism of monoids. A convenient definition for MonoidHom.mrange would be (โŠค : Submonoid M).map f. However since this lacks the required definitional convenience, we first define Submonoid.copy as follows:

                                                                                  protected def copy (S : Submonoid M) (s : Set M) (hs : s = S) : Submonoid M :=
                                                                                    { carrier  := s,
                                                                                      one_mem' := hs.symm โ–ธ S.one_mem',
                                                                                      mul_mem' := hs.symm โ–ธ S.mul_mem' }
                                                                                  

                                                                                  and then finally define:

                                                                                  def mrange (f : M โ†’* N) : Submonoid N :=
                                                                                    ((โŠค : Submonoid M).map f).copy (Set.range f) Set.image_univ.symm
                                                                                  
                                                                                  Equations
                                                                                    Instances For
                                                                                      def MonoidHom.mrange {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :

                                                                                      The range of a monoid homomorphism is a submonoid. See Note [range copy pattern].

                                                                                      Equations
                                                                                        Instances For
                                                                                          def AddMonoidHom.mrange {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :

                                                                                          The range of an AddMonoidHom is an AddSubmonoid.

                                                                                          Equations
                                                                                            Instances For
                                                                                              @[simp]
                                                                                              theorem MonoidHom.coe_mrange {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                                                                              โ†‘(mrange f) = Set.range โ‡‘f
                                                                                              @[simp]
                                                                                              theorem AddMonoidHom.coe_mrange {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :
                                                                                              โ†‘(mrange f) = Set.range โ‡‘f
                                                                                              @[simp]
                                                                                              theorem MonoidHom.mem_mrange {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} {y : N} :
                                                                                              y โˆˆ mrange f โ†” โˆƒ (x : M), f x = y
                                                                                              @[simp]
                                                                                              theorem AddMonoidHom.mem_mrange {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} {y : N} :
                                                                                              y โˆˆ mrange f โ†” โˆƒ (x : M), f x = y
                                                                                              theorem MonoidHom.mrange_comp {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {O : Type u_5} [MulOneClass O] (f : N โ†’* O) (g : M โ†’* N) :
                                                                                              theorem AddMonoidHom.mrange_comp {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {O : Type u_5} [AddZeroClass O] (f : N โ†’+ O) (g : M โ†’+ N) :
                                                                                              theorem MonoidHom.mrange_eq_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                                                                              theorem MonoidHom.map_mrange {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [MulOneClass P] (g : N โ†’* P) (f : M โ†’* N) :
                                                                                              theorem AddMonoidHom.map_mrange {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (g : N โ†’+ P) (f : M โ†’+ N) :
                                                                                              theorem MonoidHom.mrange_eq_top {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} :
                                                                                              theorem AddMonoidHom.mrange_eq_top {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} :
                                                                                              @[simp]
                                                                                              theorem MonoidHom.mrange_eq_top_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (hf : Function.Surjective โ‡‘f) :

                                                                                              The range of a surjective monoid hom is the whole of the codomain.

                                                                                              @[simp]
                                                                                              theorem AddMonoidHom.mrange_eq_top_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (hf : Function.Surjective โ‡‘f) :

                                                                                              The range of a surjective AddMonoid hom is the whole of the codomain.

                                                                                              theorem MonoidHom.map_mclosure {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (s : Set M) :

                                                                                              The image under a monoid hom of the submonoid generated by a set equals the submonoid generated by the image of the set.

                                                                                              theorem AddMonoidHom.map_mclosure {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (s : Set M) :

                                                                                              The image under an AddMonoid hom of the AddSubmonoid generated by a set equals the AddSubmonoid generated by the image of the set.

                                                                                              @[simp]
                                                                                              theorem MonoidHom.mclosure_range {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                                                                              @[simp]
                                                                                              theorem AddMonoidHom.mclosure_range {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :
                                                                                              def MonoidHom.restrict {M : Type u_1} [MulOneClass M] {N : Type u_5} {S : Type u_6} [MulOneClass N] [SetLike S M] [SubmonoidClass S M] (f : M โ†’* N) (s : S) :
                                                                                              โ†ฅs โ†’* N

                                                                                              Restriction of a monoid hom to a submonoid of the domain.

                                                                                              Equations
                                                                                                Instances For
                                                                                                  def AddMonoidHom.restrict {M : Type u_1} [AddZeroClass M] {N : Type u_5} {S : Type u_6} [AddZeroClass N] [SetLike S M] [AddSubmonoidClass S M] (f : M โ†’+ N) (s : S) :
                                                                                                  โ†ฅs โ†’+ N

                                                                                                  Restriction of an AddMonoid hom to an AddSubmonoid of the domain.

                                                                                                  Equations
                                                                                                    Instances For
                                                                                                      @[simp]
                                                                                                      theorem MonoidHom.restrict_apply {M : Type u_1} [MulOneClass M] {N : Type u_5} {S : Type u_6} [MulOneClass N] [SetLike S M] [SubmonoidClass S M] (f : M โ†’* N) (s : S) (x : โ†ฅs) :
                                                                                                      (f.restrict s) x = f โ†‘x
                                                                                                      @[simp]
                                                                                                      theorem AddMonoidHom.restrict_apply {M : Type u_1} [AddZeroClass M] {N : Type u_5} {S : Type u_6} [AddZeroClass N] [SetLike S M] [AddSubmonoidClass S M] (f : M โ†’+ N) (s : S) (x : โ†ฅs) :
                                                                                                      (f.restrict s) x = f โ†‘x
                                                                                                      @[simp]
                                                                                                      theorem MonoidHom.restrict_eq_one_iff {M : Type u_1} [MulOneClass M] {N : Type u_5} {S : Type u_6} [MulOneClass N] {f : M โ†’* N} [SetLike S M] [SubmonoidClass S M] {s : S} :
                                                                                                      f.restrict s = 1 โ†” โˆ€ x โˆˆ s, f x = 1
                                                                                                      @[simp]
                                                                                                      theorem AddMonoidHom.restrict_eq_zero_iff {M : Type u_1} [AddZeroClass M] {N : Type u_5} {S : Type u_6} [AddZeroClass N] {f : M โ†’+ N} [SetLike S M] [AddSubmonoidClass S M] {s : S} :
                                                                                                      f.restrict s = 0 โ†” โˆ€ x โˆˆ s, f x = 0
                                                                                                      @[simp]
                                                                                                      theorem MonoidHom.restrict_mrange {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) (f : M โ†’* N) :
                                                                                                      def MonoidHom.restrictHom {M : Type u_1} [MulOneClass M] {S : Type u_5} [SetLike S M] [SubmonoidClass S M] (M' : S) (A : Type u_6) [CommMonoid A] :
                                                                                                      (M โ†’* A) โ†’* โ†ฅM' โ†’* A

                                                                                                      A version of MonoidHom.restrict as an homomorphism.

                                                                                                      Equations
                                                                                                        Instances For
                                                                                                          def AddMonoidHom.restrictHom {M : Type u_1} [AddZeroClass M] {S : Type u_5} [SetLike S M] [AddSubmonoidClass S M] (M' : S) (A : Type u_6) [AddCommMonoid A] :
                                                                                                          (M โ†’+ A) โ†’+ โ†ฅM' โ†’+ A

                                                                                                          A version of AddMonoidHom.restrict as an homomorphism.

                                                                                                          Equations
                                                                                                            Instances For
                                                                                                              @[simp]
                                                                                                              theorem MonoidHom.restrictHom_apply {M : Type u_1} [MulOneClass M] {S : Type u_5} [SetLike S M] [SubmonoidClass S M] (M' : S) (A : Type u_6) [CommMonoid A] (f : M โ†’* A) :
                                                                                                              (restrictHom M' A) f = f.restrict M'
                                                                                                              @[simp]
                                                                                                              theorem AddMonoidHom.restrictHom_apply {M : Type u_1} [AddZeroClass M] {S : Type u_5} [SetLike S M] [AddSubmonoidClass S M] (M' : S) (A : Type u_6) [AddCommMonoid A] (f : M โ†’+ A) :
                                                                                                              (restrictHom M' A) f = f.restrict M'
                                                                                                              def MonoidHom.codRestrict {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {S : Type u_5} [SetLike S N] [SubmonoidClass S N] (f : M โ†’* N) (s : S) (h : โˆ€ (x : M), f x โˆˆ s) :
                                                                                                              M โ†’* โ†ฅs

                                                                                                              Restriction of a monoid hom to a submonoid of the codomain.

                                                                                                              Equations
                                                                                                                Instances For
                                                                                                                  def AddMonoidHom.codRestrict {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {S : Type u_5} [SetLike S N] [AddSubmonoidClass S N] (f : M โ†’+ N) (s : S) (h : โˆ€ (x : M), f x โˆˆ s) :
                                                                                                                  M โ†’+ โ†ฅs

                                                                                                                  Restriction of an AddMonoid hom to an AddSubmonoid of the codomain.

                                                                                                                  Equations
                                                                                                                    Instances For
                                                                                                                      @[simp]
                                                                                                                      theorem AddMonoidHom.codRestrict_apply {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {S : Type u_5} [SetLike S N] [AddSubmonoidClass S N] (f : M โ†’+ N) (s : S) (h : โˆ€ (x : M), f x โˆˆ s) (n : M) :
                                                                                                                      (f.codRestrict s h) n = โŸจf n, โ‹ฏโŸฉ
                                                                                                                      @[simp]
                                                                                                                      theorem MonoidHom.codRestrict_apply {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {S : Type u_5} [SetLike S N] [SubmonoidClass S N] (f : M โ†’* N) (s : S) (h : โˆ€ (x : M), f x โˆˆ s) (n : M) :
                                                                                                                      (f.codRestrict s h) n = โŸจf n, โ‹ฏโŸฉ
                                                                                                                      @[simp]
                                                                                                                      theorem MonoidHom.injective_codRestrict {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {S : Type u_5} [SetLike S N] [SubmonoidClass S N] (f : M โ†’* N) (s : S) (h : โˆ€ (x : M), f x โˆˆ s) :
                                                                                                                      @[simp]
                                                                                                                      theorem AddMonoidHom.injective_codRestrict {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {S : Type u_5} [SetLike S N] [AddSubmonoidClass S N] (f : M โ†’+ N) (s : S) (h : โˆ€ (x : M), f x โˆˆ s) :
                                                                                                                      def MonoidHom.mrangeRestrict {M : Type u_1} [MulOneClass M] {N : Type u_5} [MulOneClass N] (f : M โ†’* N) :
                                                                                                                      M โ†’* โ†ฅ(mrange f)

                                                                                                                      Restriction of a monoid hom to its range interpreted as a submonoid.

                                                                                                                      Equations
                                                                                                                        Instances For
                                                                                                                          def AddMonoidHom.mrangeRestrict {M : Type u_1} [AddZeroClass M] {N : Type u_5} [AddZeroClass N] (f : M โ†’+ N) :
                                                                                                                          M โ†’+ โ†ฅ(mrange f)

                                                                                                                          Restriction of an AddMonoid hom to its range interpreted as a submonoid.

                                                                                                                          Equations
                                                                                                                            Instances For
                                                                                                                              @[simp]
                                                                                                                              theorem MonoidHom.coe_mrangeRestrict {M : Type u_1} [MulOneClass M] {N : Type u_5} [MulOneClass N] (f : M โ†’* N) (x : M) :
                                                                                                                              โ†‘(f.mrangeRestrict x) = f x
                                                                                                                              @[simp]
                                                                                                                              theorem AddMonoidHom.coe_mrangeRestrict {M : Type u_1} [AddZeroClass M] {N : Type u_5} [AddZeroClass N] (f : M โ†’+ N) (x : M) :
                                                                                                                              โ†‘(f.mrangeRestrict x) = f x
                                                                                                                              def MonoidHom.mker {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :

                                                                                                                              The multiplicative kernel of a monoid hom is the submonoid of elements x : G such that f x = 1.

                                                                                                                              Equations
                                                                                                                                Instances For
                                                                                                                                  def AddMonoidHom.mker {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :

                                                                                                                                  The additive kernel of an AddMonoid hom is the AddSubmonoid of elements such that f x = 0.

                                                                                                                                  Equations
                                                                                                                                    Instances For
                                                                                                                                      @[simp]
                                                                                                                                      theorem MonoidHom.mem_mker {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} {x : M} :
                                                                                                                                      x โˆˆ mker f โ†” f x = 1
                                                                                                                                      @[simp]
                                                                                                                                      theorem AddMonoidHom.mem_mker {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} {x : M} :
                                                                                                                                      x โˆˆ mker f โ†” f x = 0
                                                                                                                                      theorem MonoidHom.coe_mker {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                                                                                                                      โ†‘(mker f) = โ‡‘f โปยน' {1}
                                                                                                                                      theorem AddMonoidHom.coe_mker {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :
                                                                                                                                      โ†‘(mker f) = โ‡‘f โปยน' {0}
                                                                                                                                      instance MonoidHom.decidableMemMker {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] [DecidableEq N] (f : F) :
                                                                                                                                      DecidablePred fun (x : M) => x โˆˆ mker f
                                                                                                                                      Equations
                                                                                                                                        instance AddMonoidHom.decidableMemMker {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] [DecidableEq N] (f : F) :
                                                                                                                                        DecidablePred fun (x : M) => x โˆˆ mker f
                                                                                                                                        Equations
                                                                                                                                          theorem MonoidHom.comap_mker {M : Type u_1} {N : Type u_2} {P : Type u_3} [MulOneClass M] [MulOneClass N] [MulOneClass P] (g : N โ†’* P) (f : M โ†’* N) :
                                                                                                                                          theorem AddMonoidHom.comap_mker {M : Type u_1} {N : Type u_2} {P : Type u_3} [AddZeroClass M] [AddZeroClass N] [AddZeroClass P] (g : N โ†’+ P) (f : M โ†’+ N) :
                                                                                                                                          @[simp]
                                                                                                                                          theorem MonoidHom.comap_bot' {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) :
                                                                                                                                          @[simp]
                                                                                                                                          theorem AddMonoidHom.comap_bot' {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) :
                                                                                                                                          @[simp]
                                                                                                                                          theorem MonoidHom.restrict_mker {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) (f : M โ†’* N) :
                                                                                                                                          theorem MonoidHom.prod_map_comap_prod' {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {M' : Type u_5} {N' : Type u_6} [MulOneClass M'] [MulOneClass N'] (f : M โ†’* N) (g : M' โ†’* N') (S : Submonoid N) (S' : Submonoid N') :
                                                                                                                                          theorem AddMonoidHom.prod_map_comap_prod' {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {M' : Type u_5} {N' : Type u_6} [AddZeroClass M'] [AddZeroClass N'] (f : M โ†’+ N) (g : M' โ†’+ N') (S : AddSubmonoid N) (S' : AddSubmonoid N') :
                                                                                                                                          theorem MonoidHom.mker_prod_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {M' : Type u_5} {N' : Type u_6} [MulOneClass M'] [MulOneClass N'] (f : M โ†’* N) (g : M' โ†’* N') :
                                                                                                                                          mker (f.prodMap g) = (mker f).prod (mker g)
                                                                                                                                          theorem AddMonoidHom.mker_prod_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {M' : Type u_5} {N' : Type u_6} [AddZeroClass M'] [AddZeroClass N'] (f : M โ†’+ N) (g : M' โ†’+ N') :
                                                                                                                                          mker (f.prodMap g) = (mker f).prod (mker g)
                                                                                                                                          @[simp]
                                                                                                                                          theorem MonoidHom.mker_inl {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] :
                                                                                                                                          @[simp]
                                                                                                                                          theorem MonoidHom.mker_inr {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] :
                                                                                                                                          def MonoidHom.submonoidComap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M โ†’* N) (N' : Submonoid N) :
                                                                                                                                          โ†ฅ(Submonoid.comap f N') โ†’* โ†ฅN'

                                                                                                                                          The MonoidHom from the preimage of a submonoid to itself.

                                                                                                                                          Equations
                                                                                                                                            Instances For
                                                                                                                                              def AddMonoidHom.addSubmonoidComap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M โ†’+ N) (N' : AddSubmonoid N) :
                                                                                                                                              โ†ฅ(AddSubmonoid.comap f N') โ†’+ โ†ฅN'

                                                                                                                                              The AddMonoidHom from the preimage of an additive submonoid to itself.

                                                                                                                                              Equations
                                                                                                                                                Instances For
                                                                                                                                                  @[simp]
                                                                                                                                                  theorem MonoidHom.submonoidComap_apply_coe {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M โ†’* N) (N' : Submonoid N) (x : โ†ฅ(Submonoid.comap f N')) :
                                                                                                                                                  โ†‘((f.submonoidComap N') x) = f โ†‘x
                                                                                                                                                  @[simp]
                                                                                                                                                  theorem AddMonoidHom.addSubmonoidComap_apply_coe {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M โ†’+ N) (N' : AddSubmonoid N) (x : โ†ฅ(AddSubmonoid.comap f N')) :
                                                                                                                                                  โ†‘((f.addSubmonoidComap N') x) = f โ†‘x
                                                                                                                                                  def MonoidHom.submonoidMap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M โ†’* N) (M' : Submonoid M) :
                                                                                                                                                  โ†ฅM' โ†’* โ†ฅ(Submonoid.map f M')

                                                                                                                                                  The MonoidHom from a submonoid to its image. See MulEquiv.SubmonoidMap for a variant for MulEquivs.

                                                                                                                                                  Equations
                                                                                                                                                    Instances For
                                                                                                                                                      def AddMonoidHom.addSubmonoidMap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M โ†’+ N) (M' : AddSubmonoid M) :
                                                                                                                                                      โ†ฅM' โ†’+ โ†ฅ(AddSubmonoid.map f M')

                                                                                                                                                      The AddMonoidHom from an additive submonoid to its image. See AddEquiv.AddSubmonoidMap for a variant for AddEquivs.

                                                                                                                                                      Equations
                                                                                                                                                        Instances For
                                                                                                                                                          @[simp]
                                                                                                                                                          theorem MonoidHom.submonoidMap_apply_coe {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M โ†’* N) (M' : Submonoid M) (x : โ†ฅM') :
                                                                                                                                                          โ†‘((f.submonoidMap M') x) = f โ†‘x
                                                                                                                                                          @[simp]
                                                                                                                                                          theorem AddMonoidHom.addSubmonoidMap_apply_coe {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M โ†’+ N) (M' : AddSubmonoid M) (x : โ†ฅM') :
                                                                                                                                                          โ†‘((f.addSubmonoidMap M') x) = f โ†‘x
                                                                                                                                                          theorem Submonoid.surjOn_iff_le_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {f : M โ†’* N} {H : Submonoid M} {K : Submonoid N} :
                                                                                                                                                          Set.SurjOn โ‡‘f โ†‘H โ†‘K โ†” K โ‰ค map f H
                                                                                                                                                          theorem AddSubmonoid.surjOn_iff_le_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {f : M โ†’+ N} {H : AddSubmonoid M} {K : AddSubmonoid N} :
                                                                                                                                                          Set.SurjOn โ‡‘f โ†‘H โ†‘K โ†” K โ‰ค map f H
                                                                                                                                                          def Submonoid.inclusion {M : Type u_1} [MulOneClass M] {S T : Submonoid M} (h : S โ‰ค T) :
                                                                                                                                                          โ†ฅS โ†’* โ†ฅT

                                                                                                                                                          The monoid hom associated to an inclusion of submonoids.

                                                                                                                                                          Equations
                                                                                                                                                            Instances For
                                                                                                                                                              def AddSubmonoid.inclusion {M : Type u_1} [AddZeroClass M] {S T : AddSubmonoid M} (h : S โ‰ค T) :
                                                                                                                                                              โ†ฅS โ†’+ โ†ฅT

                                                                                                                                                              The AddMonoid hom associated to an inclusion of submonoids.

                                                                                                                                                              Equations
                                                                                                                                                                Instances For
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem Submonoid.coe_inclusion {M : Type u_1} [MulOneClass M] {S T : Submonoid M} (h : S โ‰ค T) (a : โ†ฅS) :
                                                                                                                                                                  โ†‘((inclusion h) a) = โ†‘a
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem AddSubmonoid.coe_inclusion {M : Type u_1} [AddZeroClass M] {S T : AddSubmonoid M} (h : S โ‰ค T) (a : โ†ฅS) :
                                                                                                                                                                  โ†‘((inclusion h) a) = โ†‘a
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem Submonoid.inclusion_inj {M : Type u_1} [MulOneClass M] {S T : Submonoid M} (h : S โ‰ค T) {x y : โ†ฅS} :
                                                                                                                                                                  (inclusion h) x = (inclusion h) y โ†” x = y
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem AddSubmonoid.inclusion_inj {M : Type u_1} [AddZeroClass M] {S T : AddSubmonoid M} (h : S โ‰ค T) {x y : โ†ฅS} :
                                                                                                                                                                  (inclusion h) x = (inclusion h) y โ†” x = y
                                                                                                                                                                  theorem Submonoid.eq_top_iff' {M : Type u_1} [MulOneClass M] (S : Submonoid M) :
                                                                                                                                                                  S = โŠค โ†” โˆ€ (x : M), x โˆˆ S
                                                                                                                                                                  theorem Submonoid.eq_bot_iff_forall {M : Type u_1} [MulOneClass M] (S : Submonoid M) :
                                                                                                                                                                  S = โŠฅ โ†” โˆ€ x โˆˆ S, x = 1
                                                                                                                                                                  theorem AddSubmonoid.eq_bot_iff_forall {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M) :
                                                                                                                                                                  S = โŠฅ โ†” โˆ€ x โˆˆ S, x = 0
                                                                                                                                                                  theorem Submonoid.nontrivial_iff_exists_ne_one {M : Type u_1} [MulOneClass M] (S : Submonoid M) :
                                                                                                                                                                  Nontrivial โ†ฅS โ†” โˆƒ x โˆˆ S, x โ‰  1

                                                                                                                                                                  A submonoid is either the trivial submonoid or nontrivial.

                                                                                                                                                                  An additive submonoid is either the trivial additive submonoid or nontrivial.

                                                                                                                                                                  theorem Submonoid.bot_or_exists_ne_one {M : Type u_1} [MulOneClass M] (S : Submonoid M) :
                                                                                                                                                                  S = โŠฅ โˆจ โˆƒ x โˆˆ S, x โ‰  1

                                                                                                                                                                  A submonoid is either the trivial submonoid or contains a nonzero element.

                                                                                                                                                                  theorem AddSubmonoid.bot_or_exists_ne_zero {M : Type u_1} [AddZeroClass M] (S : AddSubmonoid M) :
                                                                                                                                                                  S = โŠฅ โˆจ โˆƒ x โˆˆ S, x โ‰  0

                                                                                                                                                                  An additive submonoid is either the trivial additive submonoid or contains a nonzero element.

                                                                                                                                                                  theorem Submonoid.codisjoint_map {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [MonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) {H K : Submonoid M} (h : Codisjoint H K) :
                                                                                                                                                                  Codisjoint (map f H) (map f K)
                                                                                                                                                                  theorem AddSubmonoid.codisjoint_map {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [AddMonoidHomClass F M N] {f : F} (hf : Function.Surjective โ‡‘f) {H K : AddSubmonoid M} (h : Codisjoint H K) :
                                                                                                                                                                  Codisjoint (map f H) (map f K)
                                                                                                                                                                  def Submonoid.pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] (I : Set ฮน) (S : (i : ฮน) โ†’ Submonoid (M i)) :
                                                                                                                                                                  Submonoid ((i : ฮน) โ†’ M i)

                                                                                                                                                                  A version of Set.pi for submonoids. Given an index set I and a family of submodules s : ฮ  i, Submonoid f i, pi I s is the submonoid of dependent functions f : ฮ  i, f i such that f i belongs to Pi I s whenever i โˆˆ I.

                                                                                                                                                                  Equations
                                                                                                                                                                    Instances For
                                                                                                                                                                      def AddSubmonoid.pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] (I : Set ฮน) (S : (i : ฮน) โ†’ AddSubmonoid (M i)) :
                                                                                                                                                                      AddSubmonoid ((i : ฮน) โ†’ M i)

                                                                                                                                                                      A version of Set.pi for AddSubmonoids. Given an index set I and a family of submodules s : ฮ  i, AddSubmonoid f i, pi I s is the AddSubmonoid of dependent functions f : ฮ  i, f i such that f i belongs to pi I s whenever i โˆˆ I.

                                                                                                                                                                      Equations
                                                                                                                                                                        Instances For
                                                                                                                                                                          theorem Submonoid.coe_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] (I : Set ฮน) (S : (i : ฮน) โ†’ Submonoid (M i)) :
                                                                                                                                                                          โ†‘(pi I S) = I.pi fun (i : ฮน) => โ†‘(S i)
                                                                                                                                                                          theorem AddSubmonoid.coe_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] (I : Set ฮน) (S : (i : ฮน) โ†’ AddSubmonoid (M i)) :
                                                                                                                                                                          โ†‘(pi I S) = I.pi fun (i : ฮน) => โ†‘(S i)
                                                                                                                                                                          theorem Submonoid.mem_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] (I : Set ฮน) {S : (i : ฮน) โ†’ Submonoid (M i)} {p : (i : ฮน) โ†’ M i} :
                                                                                                                                                                          p โˆˆ pi I S โ†” โˆ€ i โˆˆ I, p i โˆˆ S i
                                                                                                                                                                          theorem AddSubmonoid.mem_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] (I : Set ฮน) {S : (i : ฮน) โ†’ AddSubmonoid (M i)} {p : (i : ฮน) โ†’ M i} :
                                                                                                                                                                          p โˆˆ pi I S โ†” โˆ€ i โˆˆ I, p i โˆˆ S i
                                                                                                                                                                          theorem Submonoid.pi_top {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] (I : Set ฮน) :
                                                                                                                                                                          (pi I fun (i : ฮน) => โŠค) = โŠค
                                                                                                                                                                          theorem AddSubmonoid.pi_top {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] (I : Set ฮน) :
                                                                                                                                                                          (pi I fun (i : ฮน) => โŠค) = โŠค
                                                                                                                                                                          theorem Submonoid.pi_empty {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] (H : (i : ฮน) โ†’ Submonoid (M i)) :
                                                                                                                                                                          theorem AddSubmonoid.pi_empty {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] (H : (i : ฮน) โ†’ AddSubmonoid (M i)) :
                                                                                                                                                                          theorem Submonoid.pi_bot {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] :
                                                                                                                                                                          (pi Set.univ fun (i : ฮน) => โŠฅ) = โŠฅ
                                                                                                                                                                          theorem AddSubmonoid.pi_bot {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] :
                                                                                                                                                                          (pi Set.univ fun (i : ฮน) => โŠฅ) = โŠฅ
                                                                                                                                                                          theorem Submonoid.le_pi_iff {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] {I : Set ฮน} {S : (i : ฮน) โ†’ Submonoid (M i)} {J : Submonoid ((i : ฮน) โ†’ M i)} :
                                                                                                                                                                          J โ‰ค pi I S โ†” โˆ€ i โˆˆ I, J โ‰ค comap (Pi.evalMonoidHom M i) (S i)
                                                                                                                                                                          theorem AddSubmonoid.le_pi_iff {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] {I : Set ฮน} {S : (i : ฮน) โ†’ AddSubmonoid (M i)} {J : AddSubmonoid ((i : ฮน) โ†’ M i)} :
                                                                                                                                                                          J โ‰ค pi I S โ†” โˆ€ i โˆˆ I, J โ‰ค comap (Pi.evalAddMonoidHom M i) (S i)
                                                                                                                                                                          @[simp]
                                                                                                                                                                          theorem Submonoid.mulSingle_mem_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] [DecidableEq ฮน] {I : Set ฮน} {S : (i : ฮน) โ†’ Submonoid (M i)} (i : ฮน) (x : M i) :
                                                                                                                                                                          Pi.mulSingle i x โˆˆ pi I S โ†” i โˆˆ I โ†’ x โˆˆ S i
                                                                                                                                                                          @[simp]
                                                                                                                                                                          theorem AddSubmonoid.single_mem_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] [DecidableEq ฮน] {I : Set ฮน} {S : (i : ฮน) โ†’ AddSubmonoid (M i)} (i : ฮน) (x : M i) :
                                                                                                                                                                          Pi.single i x โˆˆ pi I S โ†” i โˆˆ I โ†’ x โˆˆ S i
                                                                                                                                                                          theorem Submonoid.pi_eq_bot_iff {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] (S : (i : ฮน) โ†’ Submonoid (M i)) :
                                                                                                                                                                          pi Set.univ S = โŠฅ โ†” โˆ€ (i : ฮน), S i = โŠฅ
                                                                                                                                                                          theorem AddSubmonoid.pi_eq_bot_iff {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] (S : (i : ฮน) โ†’ AddSubmonoid (M i)) :
                                                                                                                                                                          pi Set.univ S = โŠฅ โ†” โˆ€ (i : ฮน), S i = โŠฅ
                                                                                                                                                                          theorem Submonoid.le_comap_mulSingle_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] [DecidableEq ฮน] (S : (i : ฮน) โ†’ Submonoid (M i)) {I : Set ฮน} {i : ฮน} :
                                                                                                                                                                          theorem AddSubmonoid.le_comap_single_pi {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] [DecidableEq ฮน] (S : (i : ฮน) โ†’ AddSubmonoid (M i)) {I : Set ฮน} {i : ฮน} :
                                                                                                                                                                          theorem Submonoid.iSup_map_mulSingle_le {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ MulOneClass (M i)] [DecidableEq ฮน] {I : Set ฮน} {S : (i : ฮน) โ†’ Submonoid (M i)} :
                                                                                                                                                                          โจ† (i : ฮน), map (MonoidHom.mulSingle M i) (S i) โ‰ค pi I S
                                                                                                                                                                          theorem AddSubmonoid.iSup_map_single_le {ฮน : Type u_4} {M : ฮน โ†’ Type u_5} [(i : ฮน) โ†’ AddZeroClass (M i)] [DecidableEq ฮน] {I : Set ฮน} {S : (i : ฮน) โ†’ AddSubmonoid (M i)} :
                                                                                                                                                                          โจ† (i : ฮน), map (AddMonoidHom.single M i) (S i) โ‰ค pi I S
                                                                                                                                                                          def MulEquiv.submonoidCongr {M : Type u_1} [MulOneClass M] {S T : Submonoid M} (h : S = T) :
                                                                                                                                                                          โ†ฅS โ‰ƒ* โ†ฅT

                                                                                                                                                                          Makes the identity isomorphism from a proof that two submonoids of a multiplicative monoid are equal.

                                                                                                                                                                          Equations
                                                                                                                                                                            Instances For
                                                                                                                                                                              def AddEquiv.addSubmonoidCongr {M : Type u_1} [AddZeroClass M] {S T : AddSubmonoid M} (h : S = T) :
                                                                                                                                                                              โ†ฅS โ‰ƒ+ โ†ฅT

                                                                                                                                                                              Makes the identity additive isomorphism from a proof two submonoids of an additive monoid are equal.

                                                                                                                                                                              Equations
                                                                                                                                                                                Instances For
                                                                                                                                                                                  def MulEquiv.ofLeftInverse' {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M โ†’* N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) :

                                                                                                                                                                                  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.mrangeRestrict.

                                                                                                                                                                                  Equations
                                                                                                                                                                                    Instances For
                                                                                                                                                                                      def AddEquiv.ofLeftInverse' {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M โ†’+ N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) :

                                                                                                                                                                                      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.mrangeRestrict.

                                                                                                                                                                                      Equations
                                                                                                                                                                                        Instances For
                                                                                                                                                                                          @[simp]
                                                                                                                                                                                          theorem MulEquiv.ofLeftInverse'_apply {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M โ†’* N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) (a : M) :
                                                                                                                                                                                          @[simp]
                                                                                                                                                                                          theorem MulEquiv.ofLeftInverse'_symm_apply {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (f : M โ†’* N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) (aโœ : โ†ฅ(MonoidHom.mrange f)) :
                                                                                                                                                                                          (ofLeftInverse' f h).symm aโœ = g โ†‘aโœ
                                                                                                                                                                                          @[simp]
                                                                                                                                                                                          theorem AddEquiv.ofLeftInverse'_apply {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M โ†’+ N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) (a : M) :
                                                                                                                                                                                          @[simp]
                                                                                                                                                                                          theorem AddEquiv.ofLeftInverse'_symm_apply {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (f : M โ†’+ N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) (aโœ : โ†ฅ(AddMonoidHom.mrange f)) :
                                                                                                                                                                                          (ofLeftInverse' f h).symm aโœ = g โ†‘aโœ
                                                                                                                                                                                          def MulEquiv.submonoidMap {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (e : M โ‰ƒ* N) (S : Submonoid M) :
                                                                                                                                                                                          โ†ฅS โ‰ƒ* โ†ฅ(Submonoid.map e S)

                                                                                                                                                                                          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
                                                                                                                                                                                            Instances For
                                                                                                                                                                                              def AddEquiv.addSubmonoidMap {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (e : M โ‰ƒ+ N) (S : AddSubmonoid M) :
                                                                                                                                                                                              โ†ฅS โ‰ƒ+ โ†ฅ(AddSubmonoid.map e S)

                                                                                                                                                                                              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
                                                                                                                                                                                                Instances For
                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem MulEquiv.coe_submonoidMap_apply {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (e : M โ‰ƒ* N) (S : Submonoid M) (g : โ†ฅS) :
                                                                                                                                                                                                  โ†‘((e.submonoidMap S) g) = e โ†‘g
                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem AddEquiv.coe_addSubmonoidMap_apply {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (e : M โ‰ƒ+ N) (S : AddSubmonoid M) (g : โ†ฅS) :
                                                                                                                                                                                                  โ†‘((e.addSubmonoidMap S) g) = e โ†‘g
                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem MulEquiv.submonoidMap_symm_apply {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (e : M โ‰ƒ* N) (S : Submonoid M) (g : โ†ฅ(Submonoid.map (โ†‘e) S)) :
                                                                                                                                                                                                  (e.submonoidMap S).symm g = โŸจe.symm โ†‘g, โ‹ฏโŸฉ
                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem AddEquiv.addSubmonoidMap_symm_apply {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (e : M โ‰ƒ+ N) (S : AddSubmonoid M) (g : โ†ฅ(AddSubmonoid.map (โ†‘e) S)) :
                                                                                                                                                                                                  (e.addSubmonoidMap S).symm g = โŸจe.symm โ†‘g, โ‹ฏโŸฉ
                                                                                                                                                                                                  @[deprecated AddEquiv.addSubmonoidMap_symm_apply (since := "2025-08-20")]
                                                                                                                                                                                                  theorem AddEquiv.add_submonoid_map_symm_apply {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] (e : M โ‰ƒ+ N) (S : AddSubmonoid M) (g : โ†ฅ(AddSubmonoid.map (โ†‘e) S)) :
                                                                                                                                                                                                  (e.addSubmonoidMap S).symm g = โŸจe.symm โ†‘g, โ‹ฏโŸฉ

                                                                                                                                                                                                  Alias of AddEquiv.addSubmonoidMap_symm_apply.

                                                                                                                                                                                                  @[simp]
                                                                                                                                                                                                  theorem Submonoid.equivMapOfInjective_coe_mulEquiv {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] (S : Submonoid M) (e : M โ‰ƒ* N) :
                                                                                                                                                                                                  S.equivMapOfInjective โ†‘e โ‹ฏ = e.submonoidMap S
                                                                                                                                                                                                  instance Submonoid.faithfulSMul {M' : Type u_4} {ฮฑ : Type u_5} [MulOneClass M'] [SMul M' ฮฑ] {S : Submonoid M'} [FaithfulSMul M' ฮฑ] :
                                                                                                                                                                                                  FaithfulSMul (โ†ฅS) ฮฑ
                                                                                                                                                                                                  instance AddSubmonoid.faithfulVAdd {M' : Type u_4} {ฮฑ : Type u_5} [AddZeroClass M'] [VAdd M' ฮฑ] {S : AddSubmonoid M'} [FaithfulVAdd M' ฮฑ] :
                                                                                                                                                                                                  FaithfulVAdd (โ†ฅS) ฮฑ

                                                                                                                                                                                                  The multiplicative equivalence between the type of units of M and the submonoid of unit elements of M.

                                                                                                                                                                                                  Equations
                                                                                                                                                                                                    Instances For

                                                                                                                                                                                                      The additive equivalence between the type of additive units of M and the additive submonoid whose elements are the additive units of M.

                                                                                                                                                                                                      Equations
                                                                                                                                                                                                        Instances For
                                                                                                                                                                                                          theorem Submonoid.map_comap_eq {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] (f : F) (S : Submonoid N) :
                                                                                                                                                                                                          map f (comap f S) = S โŠ“ MonoidHom.mrange f
                                                                                                                                                                                                          theorem AddSubmonoid.map_comap_eq {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] (f : F) (S : AddSubmonoid N) :
                                                                                                                                                                                                          map f (comap f S) = S โŠ“ AddMonoidHom.mrange f
                                                                                                                                                                                                          theorem Submonoid.map_comap_eq_self {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} {S : Submonoid N} (h : S โ‰ค MonoidHom.mrange f) :
                                                                                                                                                                                                          map f (comap f S) = S
                                                                                                                                                                                                          theorem AddSubmonoid.map_comap_eq_self {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} {S : AddSubmonoid N} (h : S โ‰ค AddMonoidHom.mrange f) :
                                                                                                                                                                                                          map f (comap f S) = S
                                                                                                                                                                                                          theorem Submonoid.map_comap_eq_self_of_surjective {M : Type u_1} {N : Type u_2} [MulOneClass M] [MulOneClass N] {F : Type u_4} [FunLike F M N] [mc : MonoidHomClass F M N] {f : F} (h : Function.Surjective โ‡‘f) {S : Submonoid N} :
                                                                                                                                                                                                          map f (comap f S) = S
                                                                                                                                                                                                          theorem AddSubmonoid.map_comap_eq_self_of_surjective {M : Type u_1} {N : Type u_2} [AddZeroClass M] [AddZeroClass N] {F : Type u_4} [FunLike F M N] [mc : AddMonoidHomClass F M N] {f : F} (h : Function.Surjective โ‡‘f) {S : AddSubmonoid N} :
                                                                                                                                                                                                          map f (comap f S) = S