Documentation

Mathlib.Algebra.Group.Units.Equiv

Multiplicative and additive equivalence acting on units. #

def toUnits {G : Type u_5} [Group G] :

A group is isomorphic to its group of units.

Instances For
    def toAddUnits {G : Type u_5} [AddGroup G] :

    An additive group is isomorphic to its group of additive units

    Instances For
      @[simp]
      theorem val_toUnits_apply {G : Type u_5} [Group G] (x : G) :
      โ†‘(toUnits x) = x
      @[simp]
      theorem toUnits_symm_apply {G : Type u_5} [Group G] (x : Gหฃ) :
      toUnits.symm x = โ†‘x
      @[simp]
      theorem val_toAddUnits_apply {G : Type u_5} [AddGroup G] (x : G) :
      โ†‘(toAddUnits x) = x
      @[simp]
      theorem toAddUnits_symm_apply {G : Type u_5} [AddGroup G] (x : AddUnits G) :
      toAddUnits.symm x = โ†‘x
      @[simp]
      theorem toUnits_val_apply {G : Type u_6} [Group G] (x : Gหฃ) :
      toUnits โ†‘x = x
      @[simp]
      theorem toAddUnits_val_apply {G : Type u_6} [AddGroup G] (x : AddUnits G) :
      toAddUnits โ†‘x = x
      def Units.mapEquiv {M : Type u_3} {N : Type u_4} [Monoid M] [Monoid N] (h : M โ‰ƒ* N) :

      A multiplicative equivalence of monoids defines a multiplicative equivalence of their groups of units.

      Instances For
        @[simp]
        theorem Units.mapEquiv_symm {M : Type u_3} {N : Type u_4} [Monoid M] [Monoid N] (h : M โ‰ƒ* N) :
        @[simp]
        theorem Units.coe_mapEquiv {M : Type u_3} {N : Type u_4} [Monoid M] [Monoid N] (h : M โ‰ƒ* N) (x : Mหฃ) :
        โ†‘((mapEquiv h) x) = h โ†‘x
        def Units.mulLeft {M : Type u_3} [Monoid M] (u : Mหฃ) :

        Left multiplication by a unit of a monoid is a permutation of the underlying type.

        Instances For
          def AddUnits.addLeft {M : Type u_3} [AddMonoid M] (u : AddUnits M) :

          Left addition of an additive unit is a permutation of the underlying type.

          Instances For
            @[simp]
            theorem Units.mulLeft_apply {M : Type u_3} [Monoid M] (u : Mหฃ) :
            โ‡‘u.mulLeft = fun (x : M) => โ†‘u * x
            @[simp]
            theorem AddUnits.addLeft_apply {M : Type u_3} [AddMonoid M] (u : AddUnits M) :
            โ‡‘u.addLeft = fun (x : M) => โ†‘u + x
            theorem Units.mulLeft_bijective {M : Type u_3} [Monoid M] (a : Mหฃ) :
            Function.Bijective fun (x : M) => โ†‘a * x
            theorem AddUnits.addLeft_bijective {M : Type u_3} [AddMonoid M] (a : AddUnits M) :
            Function.Bijective fun (x : M) => โ†‘a + x
            def Units.mulRight {M : Type u_3} [Monoid M] (u : Mหฃ) :

            Right multiplication by a unit of a monoid is a permutation of the underlying type.

            Instances For
              def AddUnits.addRight {M : Type u_3} [AddMonoid M] (u : AddUnits M) :

              Right addition of an additive unit is a permutation of the underlying type.

              Instances For
                @[simp]
                theorem AddUnits.addRight_apply {M : Type u_3} [AddMonoid M] (u : AddUnits M) :
                โ‡‘u.addRight = fun (x : M) => x + โ†‘u
                @[simp]
                theorem Units.mulRight_apply {M : Type u_3} [Monoid M] (u : Mหฃ) :
                โ‡‘u.mulRight = fun (x : M) => x * โ†‘u
                theorem Units.mulRight_bijective {M : Type u_3} [Monoid M] (a : Mหฃ) :
                Function.Bijective fun (x : M) => x * โ†‘a
                theorem AddUnits.addRight_bijective {M : Type u_3} [AddMonoid M] (a : AddUnits M) :
                Function.Bijective fun (x : M) => x + โ†‘a
                def Equiv.mulLeft {G : Type u_5} [Group G] (a : G) :

                Left multiplication in a Group is a permutation of the underlying type.

                Instances For
                  def Equiv.addLeft {G : Type u_5} [AddGroup G] (a : G) :

                  Left addition in an AddGroup is a permutation of the underlying type.

                  Instances For
                    @[simp]
                    theorem Equiv.coe_mulLeft {G : Type u_5} [Group G] (a : G) :
                    โ‡‘(Equiv.mulLeft a) = fun (x : G) => a * x
                    @[simp]
                    theorem Equiv.coe_addLeft {G : Type u_5} [AddGroup G] (a : G) :
                    โ‡‘(Equiv.addLeft a) = fun (x : G) => a + x
                    @[simp]
                    theorem Equiv.mulLeft_symm_apply {G : Type u_5} [Group G] (a : G) :
                    โ‡‘(Equiv.symm (Equiv.mulLeft a)) = fun (x : G) => aโปยน * x

                    Extra simp lemma that dsimp can use. simp will never use this.

                    @[simp]
                    theorem Equiv.addLeft_symm_apply {G : Type u_5} [AddGroup G] (a : G) :
                    โ‡‘(Equiv.symm (Equiv.addLeft a)) = fun (x : G) => -a + x

                    Extra simp lemma that dsimp can use. simp will never use this.

                    theorem Group.mulLeft_bijective {G : Type u_5} [Group G] (a : G) :
                    Function.Bijective fun (x : G) => a * x
                    theorem AddGroup.addLeft_bijective {G : Type u_5} [AddGroup G] (a : G) :
                    Function.Bijective fun (x : G) => a + x
                    def Equiv.mulRight {G : Type u_5} [Group G] (a : G) :

                    Right multiplication in a Group is a permutation of the underlying type.

                    Instances For
                      def Equiv.addRight {G : Type u_5} [AddGroup G] (a : G) :

                      Right addition in an AddGroup is a permutation of the underlying type.

                      Instances For
                        @[simp]
                        theorem Equiv.coe_mulRight {G : Type u_5} [Group G] (a : G) :
                        โ‡‘(Equiv.mulRight a) = fun (x : G) => x * a
                        @[simp]
                        theorem Equiv.coe_addRight {G : Type u_5} [AddGroup G] (a : G) :
                        โ‡‘(Equiv.addRight a) = fun (x : G) => x + a
                        @[simp]
                        theorem Equiv.mulRight_symm_apply {G : Type u_5} [Group G] (a : G) :
                        โ‡‘(Equiv.symm (Equiv.mulRight a)) = fun (x : G) => x * aโปยน

                        Extra simp lemma that dsimp can use. simp will never use this.

                        @[simp]
                        theorem Equiv.addRight_symm_apply {G : Type u_5} [AddGroup G] (a : G) :
                        โ‡‘(Equiv.symm (Equiv.addRight a)) = fun (x : G) => x + -a

                        Extra simp lemma that dsimp can use. simp will never use this.

                        theorem Group.mulRight_bijective {G : Type u_5} [Group G] (a : G) :
                        Function.Bijective fun (x : G) => x * a
                        theorem AddGroup.addRight_bijective {G : Type u_5} [AddGroup G] (a : G) :
                        Function.Bijective fun (x : G) => x + a
                        def Equiv.divLeft {G : Type u_5} [Group G] (a : G) :

                        A version of Equiv.mulLeft a bโปยน that is defeq to a / b.

                        Instances For
                          def Equiv.subLeft {G : Type u_5} [AddGroup G] (a : G) :

                          A version of Equiv.addLeft a (-b) that is defeq to a - b.

                          Instances For
                            @[simp]
                            theorem Equiv.divLeft_apply {G : Type u_5} [Group G] (a b : G) :
                            (Equiv.divLeft a) b = a / b
                            @[simp]
                            theorem Equiv.divLeft_symm_apply {G : Type u_5} [Group G] (a b : G) :
                            @[simp]
                            theorem Equiv.subLeft_apply {G : Type u_5} [AddGroup G] (a b : G) :
                            (Equiv.subLeft a) b = a - b
                            @[simp]
                            theorem Equiv.subLeft_symm_apply {G : Type u_5} [AddGroup G] (a b : G) :
                            (Equiv.subLeft a).symm b = -b + a
                            def Equiv.divRight {G : Type u_5} [Group G] (a : G) :

                            A version of Equiv.mulRight aโปยน b that is defeq to b / a.

                            Instances For
                              def Equiv.subRight {G : Type u_5} [AddGroup G] (a : G) :

                              A version of Equiv.addRight (-a) b that is defeq to b - a.

                              Instances For
                                @[simp]
                                theorem Equiv.subRight_apply {G : Type u_5} [AddGroup G] (a b : G) :
                                (Equiv.subRight a) b = b - a
                                @[simp]
                                theorem Equiv.subRight_symm_apply {G : Type u_5} [AddGroup G] (a b : G) :
                                (Equiv.subRight a).symm b = b + a
                                @[simp]
                                theorem Equiv.divRight_symm_apply {G : Type u_5} [Group G] (a b : G) :
                                (Equiv.divRight a).symm b = b * a
                                @[simp]
                                theorem Equiv.divRight_apply {G : Type u_5} [Group G] (a b : G) :
                                (Equiv.divRight a) b = b / a
                                def unitsEquivProdSubtype (ฮฑ : Type u_2) [Monoid ฮฑ] :
                                ฮฑหฃ โ‰ƒ { p : ฮฑ ร— ฮฑ // p.1 * p.2 = 1 โˆง p.2 * p.1 = 1 }

                                The ฮฑหฃ type is equivalent to a subtype of ฮฑ ร— ฮฑ.

                                Instances For
                                  @[simp]
                                  theorem val_inv_unitsEquivProdSubtype_symm_apply (ฮฑ : Type u_2) [Monoid ฮฑ] (p : { p : ฮฑ ร— ฮฑ // p.1 * p.2 = 1 โˆง p.2 * p.1 = 1 }) :
                                  โ†‘((unitsEquivProdSubtype ฮฑ).symm p)โปยน = (โ†‘p).2
                                  @[simp]
                                  theorem val_unitsEquivProdSubtype_symm_apply (ฮฑ : Type u_2) [Monoid ฮฑ] (p : { p : ฮฑ ร— ฮฑ // p.1 * p.2 = 1 โˆง p.2 * p.1 = 1 }) :
                                  โ†‘((unitsEquivProdSubtype ฮฑ).symm p) = (โ†‘p).1
                                  @[simp]
                                  theorem unitsEquivProdSubtype_apply_coe (ฮฑ : Type u_2) [Monoid ฮฑ] (u : ฮฑหฃ) :
                                  โ†‘((unitsEquivProdSubtype ฮฑ) u) = (โ†‘u, โ†‘uโปยน)

                                  In a DivisionCommMonoid, Equiv.inv is a MulEquiv. There is a variant of this MulEquiv.inv' G : G โ‰ƒ* Gแตแต’แต– for the non-commutative case.

                                  Instances For

                                    When the AddGroup is commutative, Equiv.neg is an AddEquiv.

                                    Instances For
                                      @[simp]
                                      theorem MulEquiv.inv_apply (G : Type u_6) [DivisionCommMonoid G] (aโœ : G) :
                                      (inv G) aโœ = aโœโปยน
                                      @[simp]
                                      theorem AddEquiv.neg_apply (G : Type u_6) [SubtractionCommMonoid G] (aโœ : G) :
                                      (neg G) aโœ = -aโœ
                                      @[simp]
                                      theorem MulEquiv.isUnit_map {F : Type u_1} {M : Type u_3} {N : Type u_4} [Monoid M] [Monoid N] [EquivLike F M N] [MulEquivClass F M N] (f : F) {x : M} :
                                      IsUnit (f x) โ†” IsUnit x
                                      @[simp]
                                      theorem AddEquiv.isAddUnit_map {F : Type u_1} {M : Type u_3} {N : Type u_4} [AddMonoid M] [AddMonoid N] [EquivLike F M N] [AddEquivClass F M N] (f : F) {x : M} :
                                      IsAddUnit (f x) โ†” IsAddUnit x
                                      instance isLocalHom_equiv {F : Type u_1} {M : Type u_3} {N : Type u_4} [Monoid M] [Monoid N] [EquivLike F M N] [MulEquivClass F M N] (f : F) :