Documentation

Mathlib.Algebra.Star.MonoidHom

Morphisms of star monoids #

This file defines the type of morphisms StarMonoidHom between monoids A and B where both A and B are equipped with a star operation. These morphisms are star-preserving monoid homomorphisms and are equipped with the notation A →⋆* B.

The primary motivation for these morphisms is to provide a target type for morphisms which induce a corresponding morphism between the unitary groups in a star monoid.

Main definitions #

Tags #

monoid, star

Star monoid homomorphisms #

structure StarMonoidHom (A : Type u_6) (B : Type u_7) [Monoid A] [Star A] [Monoid B] [Star B] extends A →* B :
Type (max u_6 u_7)

A star monoid homomorphism is a monoid homomorphism which is star-preserving.

Instances For

    α →⋆* β denotes the type of star monoid homomorphisms from α to β.

    Equations
    Instances For
      instance StarMonoidHom.instFunLike {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] :
      FunLike (A →⋆* B) A B
      Equations
      instance StarMonoidHom.instMonoidHomClass {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] :
      instance StarMonoidHom.instStarHomClass {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] :
      def StarMonoidHom.Simps.coe {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →⋆* B) :
      AB

      See Note [custom simps projection]

      Equations
      Instances For
        def StarMonoidHom.ofClass {F : Type u_1} {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] [FunLike F A B] [MonoidHomClass F A B] [StarHomClass F A B] (f : F) :

        Construct a StarMonoidHom from a morphism in some type which preserves 1, * and star.

        Equations
        Instances For
          @[simp]
          theorem StarMonoidHom.ofClass_coe {F : Type u_1} {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] [FunLike F A B] [MonoidHomClass F A B] [StarHomClass F A B] (f : F) (a : A) :
          (ofClass f) a = f a
          @[simp]
          theorem StarMonoidHom.coe_toMonoidHom {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →⋆* B) :
          f.toMonoidHom = f
          theorem StarMonoidHom.ext {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] {f g : A →⋆* B} (h : ∀ (x : A), f x = g x) :
          f = g
          theorem StarMonoidHom.ext_iff {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] {f g : A →⋆* B} :
          f = g ∀ (x : A), f x = g x
          def StarMonoidHom.copy {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →⋆* B) (f' : AB) (h : f' = f) :

          Copy of a StarMonoidHom with a new toFun equal to the old one. Useful to fix definitional equalities.

          Equations
          • f.copy f' h = { toFun := f', map_one' := , map_mul' := , map_star' := }
          Instances For
            @[simp]
            theorem StarMonoidHom.coe_copy {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →⋆* B) (f' : AB) (h : f' = f) :
            (f.copy f' h) = f'
            theorem StarMonoidHom.copy_eq {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →⋆* B) (f' : AB) (h : f' = f) :
            f.copy f' h = f
            @[simp]
            theorem StarMonoidHom.coe_mk {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →* B) (h : ∀ (a : A), (↑f).toFun (star a) = star ((↑f).toFun a)) :
            { toMonoidHom := f, map_star' := h } = f
            def StarMonoidHom.id (A : Type u_2) [Monoid A] [Star A] :

            The identity as a star monoid homomorphism.

            Equations
            Instances For
              @[simp]
              theorem StarMonoidHom.coe_id (A : Type u_2) [Monoid A] [Star A] :
              def StarMonoidHom.comp {A : Type u_2} {B : Type u_3} {C : Type u_4} [Monoid A] [Star A] [Monoid B] [Star B] [Monoid C] [Star C] (f : B →⋆* C) (g : A →⋆* B) :

              The composition of star monoid homomorphisms, as a star monoid homomorphism.

              Equations
              Instances For
                @[simp]
                theorem StarMonoidHom.coe_comp {A : Type u_2} {B : Type u_3} {C : Type u_4} [Monoid A] [Star A] [Monoid B] [Star B] [Monoid C] [Star C] (f : B →⋆* C) (g : A →⋆* B) :
                (f.comp g) = f g
                @[simp]
                theorem StarMonoidHom.comp_apply {A : Type u_2} {B : Type u_3} {C : Type u_4} [Monoid A] [Star A] [Monoid B] [Star B] [Monoid C] [Star C] (f : B →⋆* C) (g : A →⋆* B) (a : A) :
                (f.comp g) a = f (g a)
                @[simp]
                theorem StarMonoidHom.comp_assoc {A : Type u_2} {B : Type u_3} {C : Type u_4} {D : Type u_5} [Monoid A] [Star A] [Monoid B] [Star B] [Monoid C] [Star C] [Monoid D] [Star D] (f : C →⋆* D) (g : B →⋆* C) (h : A →⋆* B) :
                (f.comp g).comp h = f.comp (g.comp h)
                @[simp]
                theorem StarMonoidHom.id_comp {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →⋆* B) :
                @[simp]
                theorem StarMonoidHom.comp_id {A : Type u_2} {B : Type u_3} [Monoid A] [Star A] [Monoid B] [Star B] (f : A →⋆* B) :
                instance StarMonoidHom.instMonoid {A : Type u_2} [Monoid A] [Star A] :
                Equations
                @[simp]
                theorem StarMonoidHom.coe_one {A : Type u_2} [Monoid A] [Star A] :
                1 = id
                theorem StarMonoidHom.one_apply {A : Type u_2} [Monoid A] [Star A] (a : A) :
                1 a = a

                Star monoid equivalences #

                structure StarMulEquiv (A : Type u_6) (B : Type u_7) [Mul A] [Mul B] [Star A] [Star B] extends A ≃* B :
                Type (max u_6 u_7)

                A star monoid equivalence is an equivalence preserving multiplication and the star operation.

                Instances For

                  A star monoid equivalence is an equivalence preserving multiplication and the star operation.

                  Equations
                  Instances For
                    instance StarMulEquiv.instEquivLike {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] :
                    EquivLike (A ≃⋆* B) A B
                    Equations
                    instance StarMulEquiv.instMulEquivClass {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] :
                    instance StarMulEquiv.instStarHomClass {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] :
                    theorem StarMulEquiv.ext {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] {f g : A ≃⋆* B} (h : ∀ (a : A), f a = g a) :
                    f = g
                    theorem StarMulEquiv.ext_iff {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] {f g : A ≃⋆* B} :
                    f = g ∀ (a : A), f a = g a
                    def StarMulEquiv.refl (A : Type u_2) [Mul A] [Star A] :

                    The identity map as a star monoid isomorphism.

                    Equations
                    Instances For
                      @[simp]
                      theorem StarMulEquiv.coe_refl {A : Type u_2} [Mul A] [Star A] :
                      def StarMulEquiv.symm {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) :

                      The inverse of a star monoid isomorphism is a star monoid isomorphism.

                      Equations
                      Instances For
                        def StarMulEquiv.Simps.apply {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) :
                        AB

                        See Note [custom simps projection]

                        Equations
                        Instances For
                          def StarMulEquiv.Simps.symm_apply {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) :
                          BA

                          See Note [custom simps projection]

                          Equations
                          Instances For
                            @[simp]
                            theorem StarMulEquiv.invFun_eq_symm {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] {e : A ≃⋆* B} :
                            @[simp]
                            theorem StarMulEquiv.symm_symm {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) :
                            e.symm.symm = e
                            theorem StarMulEquiv.symm_bijective {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] :
                            theorem StarMulEquiv.coe_mk {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃* B) (h₁ : ∀ (a : A), e.toFun (star a) = star (e.toFun a)) :
                            { toMulEquiv := e, map_star' := h₁ } = e
                            def StarMulEquiv.ofClass {F : Type u_1} {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] [EquivLike F A B] [MulEquivClass F A B] [StarHomClass F A B] (f : F) :

                            Construct a StarMulEquiv from an equivalence in some type which preserves * and star.

                            Equations
                            Instances For
                              @[simp]
                              theorem StarMulEquiv.ofClass_symm_apply {F : Type u_1} {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] [EquivLike F A B] [MulEquivClass F A B] [StarHomClass F A B] (f : F) (a✝ : B) :
                              (ofClass f).symm a✝ = EquivLike.inv f a✝
                              @[simp]
                              theorem StarMulEquiv.ofClass_apply {F : Type u_1} {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] [EquivLike F A B] [MulEquivClass F A B] [StarHomClass F A B] (f : F) (a : A) :
                              (ofClass f) a = f a
                              @[simp]
                              theorem StarMulEquiv.coe_toMulEquiv {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (f : A ≃⋆* B) :
                              f.toMulEquiv = f
                              def StarMulEquiv.trans {A : Type u_2} {B : Type u_3} {C : Type u_4} [Mul A] [Mul B] [Mul C] [Star A] [Star B] [Star C] (e₁ : A ≃⋆* B) (e₂ : B ≃⋆* C) :

                              Transitivity of StarMulEquiv.

                              Equations
                              Instances For
                                @[simp]
                                theorem StarMulEquiv.apply_symm_apply {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) (x : B) :
                                e (e.symm x) = x
                                @[simp]
                                theorem StarMulEquiv.symm_apply_apply {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) (x : A) :
                                e.symm (e x) = x
                                @[simp]
                                theorem StarMulEquiv.symm_trans_apply {A : Type u_2} {B : Type u_3} {C : Type u_4} [Mul A] [Mul B] [Mul C] [Star A] [Star B] [Star C] (e₁ : A ≃⋆* B) (e₂ : B ≃⋆* C) (x : C) :
                                (e₁.trans e₂).symm x = e₁.symm (e₂.symm x)
                                @[simp]
                                theorem StarMulEquiv.coe_trans {A : Type u_2} {B : Type u_3} {C : Type u_4} [Mul A] [Mul B] [Mul C] [Star A] [Star B] [Star C] (e₁ : A ≃⋆* B) (e₂ : B ≃⋆* C) :
                                (e₁.trans e₂) = e₂ e₁
                                @[simp]
                                theorem StarMulEquiv.trans_apply {A : Type u_2} {B : Type u_3} {C : Type u_4} [Mul A] [Mul B] [Mul C] [Star A] [Star B] [Star C] (e₁ : A ≃⋆* B) (e₂ : B ≃⋆* C) (x : A) :
                                (e₁.trans e₂) x = e₂ (e₁ x)
                                theorem StarMulEquiv.leftInverse_symm {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) :
                                theorem StarMulEquiv.rightInverse_symm {A : Type u_2} {B : Type u_3} [Mul A] [Mul B] [Star A] [Star B] (e : A ≃⋆* B) :
                                def StarMulEquiv.ofStarMonoidHom {A : Type u_2} {B : Type u_3} [Monoid A] [Monoid B] [Star A] [Star B] (f : A →⋆* B) (g : B →⋆* A) (h₁ : g.comp f = StarMonoidHom.id A) (h₂ : f.comp g = StarMonoidHom.id B) :

                                If a star monoid morphism has an inverse, it is an isomorphism of star monoids.

                                Equations
                                Instances For
                                  @[simp]
                                  theorem StarMulEquiv.ofStarMonoidHom_apply {A : Type u_2} {B : Type u_3} [Monoid A] [Monoid B] [Star A] [Star B] (f : A →⋆* B) (g : B →⋆* A) (h₁ : g.comp f = StarMonoidHom.id A) (h₂ : f.comp g = StarMonoidHom.id B) (a : A) :
                                  (ofStarMonoidHom f g h₁ h₂) a = f a
                                  @[simp]
                                  theorem StarMulEquiv.ofStarMonoidHom_symm_apply {A : Type u_2} {B : Type u_3} [Monoid A] [Monoid B] [Star A] [Star B] (f : A →⋆* B) (g : B →⋆* A) (h₁ : g.comp f = StarMonoidHom.id A) (h₂ : f.comp g = StarMonoidHom.id B) (a : B) :
                                  (ofStarMonoidHom f g h₁ h₂).symm a = g a
                                  noncomputable def StarMulEquiv.ofBijective {A : Type u_2} {B : Type u_3} [Monoid A] [Monoid B] [Star A] [Star B] (f : A →⋆* B) (hf : Function.Bijective f) :

                                  Promote a bijective star monoid homomorphism to a star monoid equivalence.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem StarMulEquiv.coe_ofBijective {A : Type u_2} {B : Type u_3} [Monoid A] [Monoid B] [Star A] [Star B] {f : A →⋆* B} (hf : Function.Bijective f) :
                                    (ofBijective f hf) = f
                                    theorem StarMulEquiv.ofBijective_apply {A : Type u_2} {B : Type u_3} [Monoid A] [Monoid B] [Star A] [Star B] {f : A →⋆* B} (hf : Function.Bijective f) (a : A) :
                                    (ofBijective f hf) a = f a