Documentation

Mathlib.Algebra.Group.Subsemigroup.Operations

Operations on Subsemigroups #

In this file we define various operations on Subsemigroups and MulHoms.

Main definitions #

Conversion between multiplicative and additive definitions #

(Commutative) semigroup structure on a subsemigroup #

Operations on subsemigroups #

Semigroup homomorphisms between subsemigroups #

Operations on MulHoms #

Implementation notes #

This file follows closely Mathlib/Algebra/Group/Submonoid/Operations.lean, omitting only that which is necessary.

Tags #

subsemigroup, range, product, map, comap

Conversion to/from Additive/Multiplicative #

Subsemigroups of semigroup M are isomorphic to additive subsemigroups of Additive M.

Equations
    Instances For
      @[reducible, inline]

      Additive subsemigroups of an additive semigroup Additive M are isomorphic to subsemigroups of M.

      Equations
        Instances For

          Additive subsemigroups of an additive semigroup A are isomorphic to multiplicative subsemigroups of Multiplicative A.

          Equations
            Instances For
              @[reducible, inline]

              Subsemigroups of a semigroup Multiplicative A are isomorphic to additive subsemigroups of A.

              Equations
                Instances For

                  comap and map #

                  def Subsemigroup.comap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (S : Subsemigroup N) :

                  The preimage of a subsemigroup along a semigroup homomorphism is a subsemigroup.

                  Equations
                    Instances For
                      def AddSubsemigroup.comap {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (S : AddSubsemigroup N) :

                      The preimage of an AddSubsemigroup along an AddSemigroup homomorphism is an AddSubsemigroup.

                      Equations
                        Instances For
                          @[simp]
                          theorem Subsemigroup.coe_comap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S : Subsemigroup N) (f : M โ†’โ‚™* N) :
                          โ†‘(comap f S) = โ‡‘f โปยน' โ†‘S
                          @[simp]
                          theorem AddSubsemigroup.coe_comap {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S : AddSubsemigroup N) (f : M โ†’โ‚™+ N) :
                          โ†‘(comap f S) = โ‡‘f โปยน' โ†‘S
                          @[simp]
                          theorem Subsemigroup.mem_comap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {S : Subsemigroup N} {f : M โ†’โ‚™* N} {x : M} :
                          @[simp]
                          theorem AddSubsemigroup.mem_comap {M : Type u_1} {N : Type u_2} [Add M] [Add N] {S : AddSubsemigroup N} {f : M โ†’โ‚™+ N} {x : M} :
                          theorem Subsemigroup.comap_comap {M : Type u_1} {N : Type u_2} {P : Type u_3} [Mul M] [Mul N] [Mul P] (S : Subsemigroup P) (g : N โ†’โ‚™* P) (f : M โ†’โ‚™* N) :
                          comap f (comap g S) = comap (g.comp f) S
                          theorem AddSubsemigroup.comap_comap {M : Type u_1} {N : Type u_2} {P : Type u_3} [Add M] [Add N] [Add P] (S : AddSubsemigroup P) (g : N โ†’โ‚™+ P) (f : M โ†’โ‚™+ N) :
                          comap f (comap g S) = comap (g.comp f) S
                          @[simp]
                          theorem Subsemigroup.comap_id {P : Type u_3} [Mul P] (S : Subsemigroup P) :
                          comap (MulHom.id P) S = S
                          def Subsemigroup.map {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (S : Subsemigroup M) :

                          The image of a subsemigroup along a semigroup homomorphism is a subsemigroup.

                          Equations
                            Instances For
                              def AddSubsemigroup.map {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (S : AddSubsemigroup M) :

                              The image of an AddSubsemigroup along an AddSemigroup homomorphism is an AddSubsemigroup.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem Subsemigroup.coe_map {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (S : Subsemigroup M) :
                                  โ†‘(map f S) = โ‡‘f '' โ†‘S
                                  @[simp]
                                  theorem AddSubsemigroup.coe_map {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (S : AddSubsemigroup M) :
                                  โ†‘(map f S) = โ‡‘f '' โ†‘S
                                  @[simp]
                                  theorem Subsemigroup.mem_map {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} {S : Subsemigroup M} {y : N} :
                                  y โˆˆ map f S โ†” โˆƒ x โˆˆ S, f x = y
                                  @[simp]
                                  theorem AddSubsemigroup.mem_map {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} {S : AddSubsemigroup M} {y : N} :
                                  y โˆˆ map f S โ†” โˆƒ x โˆˆ S, f x = y
                                  theorem Subsemigroup.mem_map_of_mem {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) {S : Subsemigroup M} {x : M} (hx : x โˆˆ S) :
                                  f x โˆˆ map f S
                                  theorem AddSubsemigroup.mem_map_of_mem {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) {S : AddSubsemigroup M} {x : M} (hx : x โˆˆ S) :
                                  f x โˆˆ map f S
                                  theorem Subsemigroup.apply_coe_mem_map {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (S : Subsemigroup M) (x : โ†ฅS) :
                                  f โ†‘x โˆˆ map f S
                                  theorem AddSubsemigroup.apply_coe_mem_map {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (S : AddSubsemigroup M) (x : โ†ฅS) :
                                  f โ†‘x โˆˆ map f S
                                  theorem Subsemigroup.map_map {M : Type u_1} {N : Type u_2} {P : Type u_3} [Mul M] [Mul N] [Mul P] (S : Subsemigroup M) (g : N โ†’โ‚™* P) (f : M โ†’โ‚™* N) :
                                  map g (map f S) = map (g.comp f) S
                                  theorem AddSubsemigroup.map_map {M : Type u_1} {N : Type u_2} {P : Type u_3} [Add M] [Add N] [Add P] (S : AddSubsemigroup M) (g : N โ†’โ‚™+ P) (f : M โ†’โ‚™+ N) :
                                  map g (map f S) = map (g.comp f) S
                                  @[simp]
                                  theorem Subsemigroup.mem_map_iff_mem {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Injective โ‡‘f) {S : Subsemigroup M} {x : M} :
                                  @[simp]
                                  theorem AddSubsemigroup.mem_map_iff_mem {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Injective โ‡‘f) {S : AddSubsemigroup M} {x : M} :
                                  theorem Subsemigroup.map_le_of_le_comap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S : Subsemigroup M) {T : Subsemigroup N} {f : M โ†’โ‚™* N} :
                                  S โ‰ค comap f T โ†’ map f S โ‰ค T
                                  theorem AddSubsemigroup.map_le_of_le_comap {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S : AddSubsemigroup M) {T : AddSubsemigroup N} {f : M โ†’โ‚™+ N} :
                                  S โ‰ค comap f T โ†’ map f S โ‰ค T
                                  theorem Subsemigroup.le_comap_of_map_le {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S : Subsemigroup M) {T : Subsemigroup N} {f : M โ†’โ‚™* N} :
                                  map f S โ‰ค T โ†’ S โ‰ค comap f T
                                  theorem AddSubsemigroup.le_comap_of_map_le {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S : AddSubsemigroup M) {T : AddSubsemigroup N} {f : M โ†’โ‚™+ N} :
                                  map f S โ‰ค T โ†’ S โ‰ค comap f T
                                  theorem Subsemigroup.le_comap_map {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S : Subsemigroup M) {f : M โ†’โ‚™* N} :
                                  S โ‰ค comap f (map f S)
                                  theorem AddSubsemigroup.le_comap_map {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S : AddSubsemigroup M) {f : M โ†’โ‚™+ N} :
                                  S โ‰ค comap f (map f S)
                                  theorem Subsemigroup.map_comap_le {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {S : Subsemigroup N} {f : M โ†’โ‚™* N} :
                                  map f (comap f S) โ‰ค S
                                  theorem AddSubsemigroup.map_comap_le {M : Type u_1} {N : Type u_2} [Add M] [Add N] {S : AddSubsemigroup N} {f : M โ†’โ‚™+ N} :
                                  map f (comap f S) โ‰ค S
                                  theorem Subsemigroup.monotone_map {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} :
                                  @[simp]
                                  theorem Subsemigroup.map_comap_map {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S : Subsemigroup M) {f : M โ†’โ‚™* N} :
                                  map f (comap f (map f S)) = map f S
                                  @[simp]
                                  theorem AddSubsemigroup.map_comap_map {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S : AddSubsemigroup M) {f : M โ†’โ‚™+ N} :
                                  map f (comap f (map f S)) = map f S
                                  @[simp]
                                  theorem Subsemigroup.comap_map_comap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {S : Subsemigroup N} {f : M โ†’โ‚™* N} :
                                  comap f (map f (comap f S)) = comap f S
                                  @[simp]
                                  theorem AddSubsemigroup.comap_map_comap {M : Type u_1} {N : Type u_2} [Add M] [Add N] {S : AddSubsemigroup N} {f : M โ†’โ‚™+ N} :
                                  comap f (map f (comap f S)) = comap f S
                                  theorem Subsemigroup.map_sup {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S T : Subsemigroup M) (f : M โ†’โ‚™* N) :
                                  map f (S โŠ” T) = map f S โŠ” map f T
                                  theorem AddSubsemigroup.map_sup {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S T : AddSubsemigroup M) (f : M โ†’โ‚™+ N) :
                                  map f (S โŠ” T) = map f S โŠ” map f T
                                  theorem Subsemigroup.map_iSup {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {ฮน : Sort u_5} (f : M โ†’โ‚™* N) (s : ฮน โ†’ Subsemigroup M) :
                                  map f (iSup s) = โจ† (i : ฮน), map f (s i)
                                  theorem AddSubsemigroup.map_iSup {M : Type u_1} {N : Type u_2} [Add M] [Add N] {ฮน : Sort u_5} (f : M โ†’โ‚™+ N) (s : ฮน โ†’ AddSubsemigroup M) :
                                  map f (iSup s) = โจ† (i : ฮน), map f (s i)
                                  theorem Subsemigroup.map_inf {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S T : Subsemigroup M) (f : M โ†’โ‚™* N) (hf : Function.Injective โ‡‘f) :
                                  map f (S โŠ“ T) = map f S โŠ“ map f T
                                  theorem AddSubsemigroup.map_inf {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S T : AddSubsemigroup M) (f : M โ†’โ‚™+ N) (hf : Function.Injective โ‡‘f) :
                                  map f (S โŠ“ T) = map f S โŠ“ map f T
                                  theorem Subsemigroup.map_iInf {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {ฮน : Sort u_5} [Nonempty ฮน] (f : M โ†’โ‚™* N) (hf : Function.Injective โ‡‘f) (s : ฮน โ†’ Subsemigroup M) :
                                  map f (iInf s) = โจ… (i : ฮน), map f (s i)
                                  theorem AddSubsemigroup.map_iInf {M : Type u_1} {N : Type u_2} [Add M] [Add N] {ฮน : Sort u_5} [Nonempty ฮน] (f : M โ†’โ‚™+ N) (hf : Function.Injective โ‡‘f) (s : ฮน โ†’ AddSubsemigroup M) :
                                  map f (iInf s) = โจ… (i : ฮน), map f (s i)
                                  theorem Subsemigroup.comap_inf {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S T : Subsemigroup N) (f : M โ†’โ‚™* N) :
                                  comap f (S โŠ“ T) = comap f S โŠ“ comap f T
                                  theorem AddSubsemigroup.comap_inf {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S T : AddSubsemigroup N) (f : M โ†’โ‚™+ N) :
                                  comap f (S โŠ“ T) = comap f S โŠ“ comap f T
                                  theorem Subsemigroup.comap_iInf {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {ฮน : Sort u_5} (f : M โ†’โ‚™* N) (s : ฮน โ†’ Subsemigroup N) :
                                  comap f (iInf s) = โจ… (i : ฮน), comap f (s i)
                                  theorem AddSubsemigroup.comap_iInf {M : Type u_1} {N : Type u_2} [Add M] [Add N] {ฮน : Sort u_5} (f : M โ†’โ‚™+ N) (s : ฮน โ†’ AddSubsemigroup N) :
                                  comap f (iInf s) = โจ… (i : ฮน), comap f (s i)
                                  @[simp]
                                  theorem Subsemigroup.map_bot {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) :
                                  @[simp]
                                  theorem AddSubsemigroup.map_bot {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) :
                                  @[simp]
                                  theorem Subsemigroup.comap_top {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) :
                                  @[simp]
                                  theorem AddSubsemigroup.comap_top {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) :
                                  @[simp]
                                  theorem Subsemigroup.map_id {M : Type u_1} [Mul M] (S : Subsemigroup M) :
                                  map (MulHom.id M) S = S
                                  @[simp]
                                  theorem AddSubsemigroup.map_id {M : Type u_1} [Add M] (S : AddSubsemigroup M) :
                                  map (AddHom.id M) S = S
                                  def Subsemigroup.gciMapComap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Injective โ‡‘f) :

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

                                  Equations
                                    Instances For
                                      def AddSubsemigroup.gciMapComap {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Injective โ‡‘f) :

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

                                      Equations
                                        Instances For
                                          theorem Subsemigroup.comap_map_eq_of_injective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Injective โ‡‘f) (S : Subsemigroup M) :
                                          comap f (map f S) = S
                                          theorem AddSubsemigroup.comap_map_eq_of_injective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Injective โ‡‘f) (S : AddSubsemigroup M) :
                                          comap f (map f S) = S
                                          theorem Subsemigroup.comap_inf_map_of_injective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Injective โ‡‘f) (S T : Subsemigroup M) :
                                          comap f (map f S โŠ“ map f T) = S โŠ“ T
                                          theorem AddSubsemigroup.comap_inf_map_of_injective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Injective โ‡‘f) (S T : AddSubsemigroup M) :
                                          comap f (map f S โŠ“ map f T) = S โŠ“ T
                                          theorem Subsemigroup.comap_iInf_map_of_injective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {ฮน : Type u_5} {f : M โ†’โ‚™* N} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ Subsemigroup M) :
                                          comap f (โจ… (i : ฮน), map f (S i)) = iInf S
                                          theorem AddSubsemigroup.comap_iInf_map_of_injective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {ฮน : Type u_5} {f : M โ†’โ‚™+ N} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ AddSubsemigroup M) :
                                          comap f (โจ… (i : ฮน), map f (S i)) = iInf S
                                          theorem Subsemigroup.comap_sup_map_of_injective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Injective โ‡‘f) (S T : Subsemigroup M) :
                                          comap f (map f S โŠ” map f T) = S โŠ” T
                                          theorem AddSubsemigroup.comap_sup_map_of_injective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Injective โ‡‘f) (S T : AddSubsemigroup M) :
                                          comap f (map f S โŠ” map f T) = S โŠ” T
                                          theorem Subsemigroup.comap_iSup_map_of_injective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {ฮน : Type u_5} {f : M โ†’โ‚™* N} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ Subsemigroup M) :
                                          comap f (โจ† (i : ฮน), map f (S i)) = iSup S
                                          theorem AddSubsemigroup.comap_iSup_map_of_injective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {ฮน : Type u_5} {f : M โ†’โ‚™+ N} (hf : Function.Injective โ‡‘f) (S : ฮน โ†’ AddSubsemigroup M) :
                                          comap f (โจ† (i : ฮน), map f (S i)) = iSup S
                                          def Subsemigroup.giMapComap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Surjective โ‡‘f) :

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

                                          Equations
                                            Instances For
                                              def AddSubsemigroup.giMapComap {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Surjective โ‡‘f) :

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

                                              Equations
                                                Instances For
                                                  theorem Subsemigroup.map_comap_eq_of_surjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Surjective โ‡‘f) (S : Subsemigroup N) :
                                                  map f (comap f S) = S
                                                  theorem AddSubsemigroup.map_comap_eq_of_surjective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Surjective โ‡‘f) (S : AddSubsemigroup N) :
                                                  map f (comap f S) = S
                                                  theorem Subsemigroup.map_inf_comap_of_surjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Surjective โ‡‘f) (S T : Subsemigroup N) :
                                                  map f (comap f S โŠ“ comap f T) = S โŠ“ T
                                                  theorem AddSubsemigroup.map_inf_comap_of_surjective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Surjective โ‡‘f) (S T : AddSubsemigroup N) :
                                                  map f (comap f S โŠ“ comap f T) = S โŠ“ T
                                                  theorem Subsemigroup.map_iInf_comap_of_surjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {ฮน : Type u_5} {f : M โ†’โ‚™* N} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ Subsemigroup N) :
                                                  map f (โจ… (i : ฮน), comap f (S i)) = iInf S
                                                  theorem AddSubsemigroup.map_iInf_comap_of_surjective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {ฮน : Type u_5} {f : M โ†’โ‚™+ N} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ AddSubsemigroup N) :
                                                  map f (โจ… (i : ฮน), comap f (S i)) = iInf S
                                                  theorem Subsemigroup.map_sup_comap_of_surjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} (hf : Function.Surjective โ‡‘f) (S T : Subsemigroup N) :
                                                  map f (comap f S โŠ” comap f T) = S โŠ” T
                                                  theorem AddSubsemigroup.map_sup_comap_of_surjective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} (hf : Function.Surjective โ‡‘f) (S T : AddSubsemigroup N) :
                                                  map f (comap f S โŠ” comap f T) = S โŠ” T
                                                  theorem Subsemigroup.map_iSup_comap_of_surjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {ฮน : Type u_5} {f : M โ†’โ‚™* N} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ Subsemigroup N) :
                                                  map f (โจ† (i : ฮน), comap f (S i)) = iSup S
                                                  theorem AddSubsemigroup.map_iSup_comap_of_surjective {M : Type u_1} {N : Type u_2} [Add M] [Add N] {ฮน : Type u_5} {f : M โ†’โ‚™+ N} (hf : Function.Surjective โ‡‘f) (S : ฮน โ†’ AddSubsemigroup N) :
                                                  map f (โจ† (i : ฮน), comap f (S i)) = iSup S
                                                  def Subsemigroup.topEquiv {M : Type u_1} [Mul M] :
                                                  โ†ฅโŠค โ‰ƒ* M

                                                  The top subsemigroup is isomorphic to the semigroup.

                                                  Equations
                                                    Instances For
                                                      def AddSubsemigroup.topEquiv {M : Type u_1} [Add M] :
                                                      โ†ฅโŠค โ‰ƒ+ M

                                                      The top additive subsemigroup is isomorphic to the additive semigroup.

                                                      Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem AddSubsemigroup.topEquiv_symm_apply_coe {M : Type u_1} [Add M] (x : M) :
                                                          โ†‘(topEquiv.symm x) = x
                                                          @[simp]
                                                          theorem AddSubsemigroup.topEquiv_apply {M : Type u_1} [Add M] (x : โ†ฅโŠค) :
                                                          topEquiv x = โ†‘x
                                                          @[simp]
                                                          theorem Subsemigroup.topEquiv_apply {M : Type u_1} [Mul M] (x : โ†ฅโŠค) :
                                                          topEquiv x = โ†‘x
                                                          @[simp]
                                                          theorem Subsemigroup.topEquiv_symm_apply_coe {M : Type u_1} [Mul M] (x : M) :
                                                          โ†‘(topEquiv.symm x) = x
                                                          noncomputable def Subsemigroup.equivMapOfInjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S : Subsemigroup M) (f : M โ†’โ‚™* N) (hf : Function.Injective โ‡‘f) :
                                                          โ†ฅS โ‰ƒ* โ†ฅ(map f S)

                                                          A subsemigroup is isomorphic to its image under an injective function

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

                                                              An additive subsemigroup is isomorphic to its image under an injective function

                                                              Equations
                                                                Instances For
                                                                  @[simp]
                                                                  theorem Subsemigroup.coe_equivMapOfInjective_apply {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (S : Subsemigroup M) (f : M โ†’โ‚™* N) (hf : Function.Injective โ‡‘f) (x : โ†ฅS) :
                                                                  โ†‘((S.equivMapOfInjective f hf) x) = f โ†‘x
                                                                  @[simp]
                                                                  theorem AddSubsemigroup.coe_equivMapOfInjective_apply {M : Type u_1} {N : Type u_2} [Add M] [Add N] (S : AddSubsemigroup M) (f : M โ†’โ‚™+ N) (hf : Function.Injective โ‡‘f) (x : โ†ฅS) :
                                                                  โ†‘((S.equivMapOfInjective f hf) x) = f โ†‘x
                                                                  def Subsemigroup.prod {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (s : Subsemigroup M) (t : Subsemigroup N) :

                                                                  Given Subsemigroups s, t of semigroups M, N respectively, s ร— t as a subsemigroup of M ร— N.

                                                                  Equations
                                                                    Instances For
                                                                      def AddSubsemigroup.prod {M : Type u_1} {N : Type u_2} [Add M] [Add N] (s : AddSubsemigroup M) (t : AddSubsemigroup N) :

                                                                      Given AddSubsemigroups s, t of AddSemigroups A, B respectively, s ร— t as an AddSubsemigroup of A ร— B.

                                                                      Equations
                                                                        Instances For
                                                                          theorem Subsemigroup.coe_prod {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (s : Subsemigroup M) (t : Subsemigroup N) :
                                                                          โ†‘(s.prod t) = โ†‘s ร—หข โ†‘t
                                                                          theorem AddSubsemigroup.coe_prod {M : Type u_1} {N : Type u_2} [Add M] [Add N] (s : AddSubsemigroup M) (t : AddSubsemigroup N) :
                                                                          โ†‘(s.prod t) = โ†‘s ร—หข โ†‘t
                                                                          theorem Subsemigroup.mem_prod {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {s : Subsemigroup M} {t : Subsemigroup N} {p : M ร— N} :
                                                                          theorem AddSubsemigroup.mem_prod {M : Type u_1} {N : Type u_2} [Add M] [Add N] {s : AddSubsemigroup M} {t : AddSubsemigroup N} {p : M ร— N} :
                                                                          theorem Subsemigroup.prod_mono {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {sโ‚ sโ‚‚ : Subsemigroup M} {tโ‚ tโ‚‚ : Subsemigroup N} (hs : sโ‚ โ‰ค sโ‚‚) (ht : tโ‚ โ‰ค tโ‚‚) :
                                                                          sโ‚.prod tโ‚ โ‰ค sโ‚‚.prod tโ‚‚
                                                                          theorem AddSubsemigroup.prod_mono {M : Type u_1} {N : Type u_2} [Add M] [Add N] {sโ‚ sโ‚‚ : AddSubsemigroup M} {tโ‚ tโ‚‚ : AddSubsemigroup N} (hs : sโ‚ โ‰ค sโ‚‚) (ht : tโ‚ โ‰ค tโ‚‚) :
                                                                          sโ‚.prod tโ‚ โ‰ค sโ‚‚.prod tโ‚‚
                                                                          theorem Subsemigroup.prod_top {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (s : Subsemigroup M) :
                                                                          theorem Subsemigroup.top_prod {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (s : Subsemigroup N) :
                                                                          def Subsemigroup.prodEquiv {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (s : Subsemigroup M) (t : Subsemigroup N) :
                                                                          โ†ฅ(s.prod t) โ‰ƒ* โ†ฅs ร— โ†ฅt

                                                                          The product of subsemigroups is isomorphic to their product as semigroups.

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

                                                                              The product of additive subsemigroups is isomorphic to their product as additive semigroups

                                                                              Equations
                                                                                Instances For
                                                                                  theorem Subsemigroup.mem_map_equiv {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ‰ƒ* N} {K : Subsemigroup M} {x : N} :
                                                                                  x โˆˆ map (โ†‘f) K โ†” f.symm x โˆˆ K
                                                                                  theorem AddSubsemigroup.mem_map_equiv {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ‰ƒ+ N} {K : AddSubsemigroup M} {x : N} :
                                                                                  x โˆˆ map (โ†‘f) K โ†” f.symm x โˆˆ K
                                                                                  theorem Subsemigroup.map_equiv_eq_comap_symm {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ‰ƒ* N) (K : Subsemigroup M) :
                                                                                  map (โ†‘f) K = comap (โ†‘f.symm) K
                                                                                  theorem AddSubsemigroup.map_equiv_eq_comap_symm {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ‰ƒ+ N) (K : AddSubsemigroup M) :
                                                                                  map (โ†‘f) K = comap (โ†‘f.symm) K
                                                                                  theorem Subsemigroup.comap_equiv_eq_map_symm {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : N โ‰ƒ* M) (K : Subsemigroup M) :
                                                                                  comap (โ†‘f) K = map (โ†‘f.symm) K
                                                                                  theorem AddSubsemigroup.comap_equiv_eq_map_symm {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : N โ‰ƒ+ M) (K : AddSubsemigroup M) :
                                                                                  comap (โ†‘f) K = map (โ†‘f.symm) K
                                                                                  @[simp]
                                                                                  theorem Subsemigroup.map_equiv_top {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ‰ƒ* N) :
                                                                                  @[simp]
                                                                                  theorem AddSubsemigroup.map_equiv_top {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ‰ƒ+ N) :
                                                                                  def MulHom.srange {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) :

                                                                                  The range of a semigroup homomorphism is a subsemigroup. See Note [range copy pattern].

                                                                                  Equations
                                                                                    Instances For
                                                                                      def AddHom.srange {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) :

                                                                                      The range of an AddHom is an AddSubsemigroup.

                                                                                      Equations
                                                                                        Instances For
                                                                                          @[simp]
                                                                                          theorem MulHom.coe_srange {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) :
                                                                                          โ†‘f.srange = Set.range โ‡‘f
                                                                                          @[simp]
                                                                                          theorem AddHom.coe_srange {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) :
                                                                                          โ†‘f.srange = Set.range โ‡‘f
                                                                                          @[simp]
                                                                                          theorem MulHom.mem_srange {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} {y : N} :
                                                                                          y โˆˆ f.srange โ†” โˆƒ (x : M), f x = y
                                                                                          @[simp]
                                                                                          theorem AddHom.mem_srange {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} {y : N} :
                                                                                          y โˆˆ f.srange โ†” โˆƒ (x : M), f x = y
                                                                                          @[simp]
                                                                                          theorem MulHom.srange_mk {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’ N) (hf : โˆ€ (x y : M), f (x * y) = f x * f y) :
                                                                                          { toFun := f, map_mul' := hf }.srange = { carrier := Set.range f, mul_mem' := โ‹ฏ }
                                                                                          @[simp]
                                                                                          theorem AddHom.srange_mk {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’ N) (hf : โˆ€ (x y : M), f (x + y) = f x + f y) :
                                                                                          { toFun := f, map_add' := hf }.srange = { carrier := Set.range f, add_mem' := โ‹ฏ }
                                                                                          theorem MulHom.map_srange {M : Type u_1} {N : Type u_2} {P : Type u_3} [Mul M] [Mul N] [Mul P] (g : N โ†’โ‚™* P) (f : M โ†’โ‚™* N) :
                                                                                          theorem AddHom.map_srange {M : Type u_1} {N : Type u_2} {P : Type u_3} [Add M] [Add N] [Add P] (g : N โ†’โ‚™+ P) (f : M โ†’โ‚™+ N) :
                                                                                          @[simp]
                                                                                          theorem MulHom.srange_eq_top_of_surjective {M : Type u_1} [Mul M] {N : Type u_5} [Mul N] (f : M โ†’โ‚™* N) (hf : Function.Surjective โ‡‘f) :

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

                                                                                          @[simp]
                                                                                          theorem AddHom.srange_eq_top_of_surjective {M : Type u_1} [Add M] {N : Type u_5} [Add N] (f : M โ†’โ‚™+ N) (hf : Function.Surjective โ‡‘f) :

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

                                                                                          theorem MulHom.map_mclosure {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (s : Set M) :

                                                                                          The image under a semigroup hom of the subsemigroup generated by a set equals the subsemigroup generated by the image of the set.

                                                                                          theorem AddHom.map_mclosure {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (s : Set M) :

                                                                                          The image under an AddSemigroup hom of the AddSubsemigroup generated by a set equals the AddSubsemigroup generated by the image of the set.

                                                                                          def MulHom.restrict {M : Type u_1} {ฯƒ : Type u_4} [Mul M] {N : Type u_5} [Mul N] [SetLike ฯƒ M] [MulMemClass ฯƒ M] (f : M โ†’โ‚™* N) (S : ฯƒ) :
                                                                                          โ†ฅS โ†’โ‚™* N

                                                                                          Restriction of a semigroup hom to a subsemigroup of the domain.

                                                                                          Equations
                                                                                            Instances For
                                                                                              def AddHom.restrict {M : Type u_1} {ฯƒ : Type u_4} [Add M] {N : Type u_5} [Add N] [SetLike ฯƒ M] [AddMemClass ฯƒ M] (f : M โ†’โ‚™+ N) (S : ฯƒ) :
                                                                                              โ†ฅS โ†’โ‚™+ N

                                                                                              Restriction of an AddSemigroup hom to an AddSubsemigroup of the domain.

                                                                                              Equations
                                                                                                Instances For
                                                                                                  @[simp]
                                                                                                  theorem MulHom.restrict_apply {M : Type u_1} {ฯƒ : Type u_4} [Mul M] {N : Type u_5} [Mul N] [SetLike ฯƒ M] [MulMemClass ฯƒ M] (f : M โ†’โ‚™* N) {S : ฯƒ} (x : โ†ฅS) :
                                                                                                  (f.restrict S) x = f โ†‘x
                                                                                                  @[simp]
                                                                                                  theorem AddHom.restrict_apply {M : Type u_1} {ฯƒ : Type u_4} [Add M] {N : Type u_5} [Add N] [SetLike ฯƒ M] [AddMemClass ฯƒ M] (f : M โ†’โ‚™+ N) {S : ฯƒ} (x : โ†ฅS) :
                                                                                                  (f.restrict S) x = f โ†‘x
                                                                                                  def MulHom.codRestrict {M : Type u_1} {N : Type u_2} {ฯƒ : Type u_4} [Mul M] [Mul N] [SetLike ฯƒ N] [MulMemClass ฯƒ N] (f : M โ†’โ‚™* N) (S : ฯƒ) (h : โˆ€ (x : M), f x โˆˆ S) :
                                                                                                  M โ†’โ‚™* โ†ฅS

                                                                                                  Restriction of a semigroup hom to a subsemigroup of the codomain.

                                                                                                  Equations
                                                                                                    Instances For
                                                                                                      def AddHom.codRestrict {M : Type u_1} {N : Type u_2} {ฯƒ : Type u_4} [Add M] [Add N] [SetLike ฯƒ N] [AddMemClass ฯƒ N] (f : M โ†’โ‚™+ N) (S : ฯƒ) (h : โˆ€ (x : M), f x โˆˆ S) :
                                                                                                      M โ†’โ‚™+ โ†ฅS

                                                                                                      Restriction of an AddSemigroup hom to an AddSubsemigroup of the codomain.

                                                                                                      Equations
                                                                                                        Instances For
                                                                                                          @[simp]
                                                                                                          theorem MulHom.codRestrict_apply_coe {M : Type u_1} {N : Type u_2} {ฯƒ : Type u_4} [Mul M] [Mul N] [SetLike ฯƒ N] [MulMemClass ฯƒ N] (f : M โ†’โ‚™* N) (S : ฯƒ) (h : โˆ€ (x : M), f x โˆˆ S) (n : M) :
                                                                                                          โ†‘((f.codRestrict S h) n) = f n
                                                                                                          @[simp]
                                                                                                          theorem AddHom.codRestrict_apply_coe {M : Type u_1} {N : Type u_2} {ฯƒ : Type u_4} [Add M] [Add N] [SetLike ฯƒ N] [AddMemClass ฯƒ N] (f : M โ†’โ‚™+ N) (S : ฯƒ) (h : โˆ€ (x : M), f x โˆˆ S) (n : M) :
                                                                                                          โ†‘((f.codRestrict S h) n) = f n
                                                                                                          def MulHom.srangeRestrict {M : Type u_1} [Mul M] {N : Type u_5} [Mul N] (f : M โ†’โ‚™* N) :

                                                                                                          Restriction of a semigroup hom to its range interpreted as a subsemigroup.

                                                                                                          Equations
                                                                                                            Instances For
                                                                                                              def AddHom.srangeRestrict {M : Type u_1} [Add M] {N : Type u_5} [Add N] (f : M โ†’โ‚™+ N) :

                                                                                                              Restriction of an AddSemigroup hom to its range interpreted as a subsemigroup.

                                                                                                              Equations
                                                                                                                Instances For
                                                                                                                  @[simp]
                                                                                                                  theorem MulHom.coe_srangeRestrict {M : Type u_1} [Mul M] {N : Type u_5} [Mul N] (f : M โ†’โ‚™* N) (x : M) :
                                                                                                                  โ†‘(f.srangeRestrict x) = f x
                                                                                                                  @[simp]
                                                                                                                  theorem AddHom.coe_srangeRestrict {M : Type u_1} [Add M] {N : Type u_5} [Add N] (f : M โ†’โ‚™+ N) (x : M) :
                                                                                                                  โ†‘(f.srangeRestrict x) = f x
                                                                                                                  theorem MulHom.prod_map_comap_prod' {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {M' : Type u_5} {N' : Type u_6} [Mul M'] [Mul N'] (f : M โ†’โ‚™* N) (g : M' โ†’โ‚™* N') (S : Subsemigroup N) (S' : Subsemigroup N') :
                                                                                                                  theorem AddHom.prod_map_comap_prod' {M : Type u_1} {N : Type u_2} [Add M] [Add N] {M' : Type u_5} {N' : Type u_6} [Add M'] [Add N'] (f : M โ†’โ‚™+ N) (g : M' โ†’โ‚™+ N') (S : AddSubsemigroup N) (S' : AddSubsemigroup N') :
                                                                                                                  def MulHom.subsemigroupComap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (N' : Subsemigroup N) :
                                                                                                                  โ†ฅ(Subsemigroup.comap f N') โ†’โ‚™* โ†ฅN'

                                                                                                                  The MulHom from the preimage of a subsemigroup to itself.

                                                                                                                  Equations
                                                                                                                    Instances For
                                                                                                                      def AddHom.subsemigroupComap {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (N' : AddSubsemigroup N) :
                                                                                                                      โ†ฅ(AddSubsemigroup.comap f N') โ†’โ‚™+ โ†ฅN'

                                                                                                                      The AddHom from the preimage of an additive subsemigroup to itself.

                                                                                                                      Equations
                                                                                                                        Instances For
                                                                                                                          @[simp]
                                                                                                                          theorem AddHom.subsemigroupComap_apply_coe {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (N' : AddSubsemigroup N) (x : โ†ฅ(AddSubsemigroup.comap f N')) :
                                                                                                                          โ†‘((f.subsemigroupComap N') x) = f โ†‘x
                                                                                                                          @[simp]
                                                                                                                          theorem MulHom.subsemigroupComap_apply_coe {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (N' : Subsemigroup N) (x : โ†ฅ(Subsemigroup.comap f N')) :
                                                                                                                          โ†‘((f.subsemigroupComap N') x) = f โ†‘x
                                                                                                                          def MulHom.subsemigroupMap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (M' : Subsemigroup M) :
                                                                                                                          โ†ฅM' โ†’โ‚™* โ†ฅ(Subsemigroup.map f M')

                                                                                                                          The MulHom from a subsemigroup to its image. See MulEquiv.subsemigroupMap for a variant for MulEquivs.

                                                                                                                          Equations
                                                                                                                            Instances For
                                                                                                                              def AddHom.subsemigroupMap {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (M' : AddSubsemigroup M) :
                                                                                                                              โ†ฅM' โ†’โ‚™+ โ†ฅ(AddSubsemigroup.map f M')

                                                                                                                              the AddHom from an additive subsemigroup to its image. See AddEquiv.addSubsemigroupMap for a variant for AddEquivs.

                                                                                                                              Equations
                                                                                                                                Instances For
                                                                                                                                  @[simp]
                                                                                                                                  theorem AddHom.subsemigroupMap_apply_coe {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (M' : AddSubsemigroup M) (x : โ†ฅM') :
                                                                                                                                  โ†‘((f.subsemigroupMap M') x) = f โ†‘x
                                                                                                                                  @[simp]
                                                                                                                                  theorem MulHom.subsemigroupMap_apply_coe {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (M' : Subsemigroup M) (x : โ†ฅM') :
                                                                                                                                  โ†‘((f.subsemigroupMap M') x) = f โ†‘x
                                                                                                                                  @[simp]
                                                                                                                                  theorem Subsemigroup.srange_fst {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] [Nonempty N] :
                                                                                                                                  @[simp]
                                                                                                                                  theorem AddSubsemigroup.srange_fst {M : Type u_1} {N : Type u_2} [Add M] [Add N] [Nonempty N] :
                                                                                                                                  @[simp]
                                                                                                                                  theorem Subsemigroup.srange_snd {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] [Nonempty M] :
                                                                                                                                  @[simp]
                                                                                                                                  theorem AddSubsemigroup.srange_snd {M : Type u_1} {N : Type u_2} [Add M] [Add N] [Nonempty M] :
                                                                                                                                  def Subsemigroup.inclusion {M : Type u_1} [Mul M] {S T : Subsemigroup M} (h : S โ‰ค T) :
                                                                                                                                  โ†ฅS โ†’โ‚™* โ†ฅT

                                                                                                                                  The semigroup hom associated to an inclusion of subsemigroups.

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

                                                                                                                                      The AddSemigroup hom associated to an inclusion of subsemigroups.

                                                                                                                                      Equations
                                                                                                                                        Instances For
                                                                                                                                          theorem Subsemigroup.eq_top_iff' {M : Type u_1} [Mul M] (S : Subsemigroup M) :
                                                                                                                                          S = โŠค โ†” โˆ€ (x : M), x โˆˆ S
                                                                                                                                          def MulEquiv.subsemigroupCongr {M : Type u_1} [Mul M] {S T : Subsemigroup M} (h : S = T) :
                                                                                                                                          โ†ฅS โ‰ƒ* โ†ฅT

                                                                                                                                          Makes the identity isomorphism from a proof that two subsemigroups of a multiplicative semigroup are equal.

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

                                                                                                                                              Makes the identity additive isomorphism from a proof two subsemigroups of an additive semigroup are equal.

                                                                                                                                              Equations
                                                                                                                                                Instances For
                                                                                                                                                  def MulEquiv.ofLeftInverse {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) :
                                                                                                                                                  M โ‰ƒ* โ†ฅf.srange

                                                                                                                                                  A semigroup homomorphism f : M โ†’โ‚™* N with a left-inverse g : N โ†’ M defines a multiplicative equivalence between M and f.srange.

                                                                                                                                                  This is a bidirectional version of MulHom.srangeRestrict.

                                                                                                                                                  Equations
                                                                                                                                                    Instances For
                                                                                                                                                      def AddEquiv.ofLeftInverse {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) :
                                                                                                                                                      M โ‰ƒ+ โ†ฅf.srange

                                                                                                                                                      An additive semigroup homomorphism f : M โ†’+ N with a left-inverse g : N โ†’ M defines an additive equivalence between M and f.srange. This is a bidirectional version of AddHom.srangeRestrict.

                                                                                                                                                      Equations
                                                                                                                                                        Instances For
                                                                                                                                                          @[simp]
                                                                                                                                                          theorem MulEquiv.ofLeftInverse_apply {M : Type u_1} {N : Type u_2} [Mul M] [Mul 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} [Add M] [Add N] (f : M โ†’โ‚™+ N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) (aโœ : โ†ฅf.srange) :
                                                                                                                                                          (ofLeftInverse f h).symm aโœ = g โ†‘aโœ
                                                                                                                                                          @[simp]
                                                                                                                                                          theorem AddEquiv.ofLeftInverse_apply {M : Type u_1} {N : Type u_2} [Add M] [Add 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} [Mul M] [Mul N] (f : M โ†’โ‚™* N) {g : N โ†’ M} (h : Function.LeftInverse g โ‡‘f) (aโœ : โ†ฅf.srange) :
                                                                                                                                                          (ofLeftInverse f h).symm aโœ = g โ†‘aโœ
                                                                                                                                                          def MulEquiv.subsemigroupMap {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (e : M โ‰ƒ* N) (S : Subsemigroup M) :
                                                                                                                                                          โ†ฅS โ‰ƒ* โ†ฅ(Subsemigroup.map (โ†‘e) S)

                                                                                                                                                          A MulEquiv ฯ† between two semigroups M and N induces a MulEquiv between a subsemigroup S โ‰ค M and the subsemigroup ฯ†(S) โ‰ค N. See MulHom.subsemigroupMap for a variant for MulHoms.

                                                                                                                                                          Equations
                                                                                                                                                            Instances For
                                                                                                                                                              def AddEquiv.subsemigroupMap {M : Type u_1} {N : Type u_2} [Add M] [Add N] (e : M โ‰ƒ+ N) (S : AddSubsemigroup M) :
                                                                                                                                                              โ†ฅS โ‰ƒ+ โ†ฅ(AddSubsemigroup.map (โ†‘e) S)

                                                                                                                                                              An AddEquiv ฯ† between two additive semigroups M and N induces an AddEquiv between a subsemigroup S โ‰ค M and the subsemigroup ฯ†(S) โ‰ค N. See AddHom.addSubsemigroupMap for a variant for AddHoms.

                                                                                                                                                              Equations
                                                                                                                                                                Instances For
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem MulEquiv.subsemigroupMap_symm_apply_coe {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (e : M โ‰ƒ* N) (S : Subsemigroup M) (x : โ†ฅ(Subsemigroup.map (โ†‘e) S)) :
                                                                                                                                                                  โ†‘((e.subsemigroupMap S).symm x) = e.symm โ†‘x
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem AddEquiv.subsemigroupMap_symm_apply_coe {M : Type u_1} {N : Type u_2} [Add M] [Add N] (e : M โ‰ƒ+ N) (S : AddSubsemigroup M) (x : โ†ฅ(AddSubsemigroup.map (โ†‘e) S)) :
                                                                                                                                                                  โ†‘((e.subsemigroupMap S).symm x) = e.symm โ†‘x
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem MulEquiv.subsemigroupMap_apply_coe {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (e : M โ‰ƒ* N) (S : Subsemigroup M) (x : โ†ฅS) :
                                                                                                                                                                  โ†‘((e.subsemigroupMap S) x) = e โ†‘x
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem AddEquiv.subsemigroupMap_apply_coe {M : Type u_1} {N : Type u_2} [Add M] [Add N] (e : M โ‰ƒ+ N) (S : AddSubsemigroup M) (x : โ†ฅS) :
                                                                                                                                                                  โ†‘((e.subsemigroupMap S) x) = e โ†‘x
                                                                                                                                                                  theorem Subsemigroup.map_comap_eq {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (f : M โ†’โ‚™* N) (S : Subsemigroup N) :
                                                                                                                                                                  map f (comap f S) = S โŠ“ f.srange
                                                                                                                                                                  theorem AddSubsemigroup.map_comap_eq {M : Type u_1} {N : Type u_2} [Add M] [Add N] (f : M โ†’โ‚™+ N) (S : AddSubsemigroup N) :
                                                                                                                                                                  map f (comap f S) = S โŠ“ f.srange
                                                                                                                                                                  theorem Subsemigroup.map_comap_eq_self {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {f : M โ†’โ‚™* N} {S : Subsemigroup N} (h : S โ‰ค f.srange) :
                                                                                                                                                                  map f (comap f S) = S
                                                                                                                                                                  theorem AddSubsemigroup.map_comap_eq_self {M : Type u_1} {N : Type u_2} [Add M] [Add N] {f : M โ†’โ‚™+ N} {S : AddSubsemigroup N} (h : S โ‰ค f.srange) :
                                                                                                                                                                  map f (comap f S) = S