Documentation

Mathlib.Data.FunLike.Group

Group instances for FunLike types #

In this file we define various instances related to groups for FunLike types.

For example given a FunLike F α β with IsMulApply F α β and Semigroup β, then F is naturally a semigroup. Note that currently, these are not registered as instances, but only abbrevs to avoid long typeclass searches.

Moreover, we define the homomorphism FunLike.coeMulHom : F →* α → β that acts by coercion. This definition is mainly needed to define a module instance on F.

def FunLike.coeMulHom (F : Type u_1) (α : Type u_2) (β : Type u_3) [FunLike F α β] [Mul F] [Mul β] [IsMulApply F α β] :
F →ₙ* αβ

Coercion as a multiplicative homomorphism.

Equations
Instances For
    def FunLike.coeAddHom (F : Type u_1) (α : Type u_2) (β : Type u_3) [FunLike F α β] [Add F] [Add β] [IsAddApply F α β] :
    F →ₙ+ αβ

    Coercion as an additive homomorphism.

    Equations
    Instances For
      theorem FunLike.coe_coeMulHom {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [Mul β] [IsMulApply F α β] :
      (coeMulHom F α β) = DFunLike.coe
      theorem FunLike.coe_coeAddHom {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Add β] [IsAddApply F α β] :
      (coeAddHom F α β) = DFunLike.coe
      theorem FunLike.coeMulHom_injective {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [Mul β] [IsMulApply F α β] :
      theorem FunLike.coeAddHom_injective {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Add β] [IsAddApply F α β] :
      def FunLike.coeMonoidHom (F : Type u_1) (α : Type u_2) (β : Type u_3) [FunLike F α β] [MulOne F] [MulOneClass β] [IsOneApply F α β] [IsMulApply F α β] :
      F →* αβ

      Coercion as a monoid homomorphism.

      Equations
      Instances For
        def FunLike.coeAddMonoidHom (F : Type u_1) (α : Type u_2) (β : Type u_3) [FunLike F α β] [AddZero F] [AddZeroClass β] [IsZeroApply F α β] [IsAddApply F α β] :
        F →+ αβ

        Coercion as an additive monoid homomorphism.

        Equations
        Instances For
          theorem FunLike.coe_coeMonoidHom {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [MulOne F] [MulOneClass β] [IsOneApply F α β] [IsMulApply F α β] :
          theorem FunLike.coe_coeAddMonoidHom {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [AddZero F] [AddZeroClass β] [IsZeroApply F α β] [IsAddApply F α β] :
          theorem FunLike.coe_coeMonoidHom' {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [MulOne F] [MulOneClass β] [IsOneApply F α β] [IsMulApply F α β] :
          (coeMonoidHom F α β) = coeMulHom F α β
          theorem FunLike.coe_coeAddMonoidHom' {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [AddZero F] [AddZeroClass β] [IsZeroApply F α β] [IsAddApply F α β] :
          (coeAddMonoidHom F α β) = coeAddHom F α β
          theorem FunLike.coeMonoidHom_injective {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [MulOne F] [MulOneClass β] [IsOneApply F α β] [IsMulApply F α β] :
          theorem FunLike.coeAddMonoidHom_injective {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [AddZero F] [AddZeroClass β] [IsZeroApply F α β] [IsAddApply F α β] :
          @[reducible, inline]
          abbrev FunLike.semigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [Semigroup β] [IsMulApply F α β] :

          A FunLike type that satisfies (f * g) x = f x * g x is a semigroup if β is a semigroup.

          Equations
          Instances For
            @[reducible, inline]
            abbrev FunLike.addSemigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [AddSemigroup β] [IsAddApply F α β] :

            A FunLike type that satisfies (f + g) x = f x + g x is an additive semigroup if β is an additive semigroup.

            Equations
            Instances For
              @[reducible, inline]
              abbrev FunLike.commSemigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [CommSemigroup β] [IsMulApply F α β] :

              A FunLike type that satisfies (f * g) x = f x * g x is a commutative semigroup if β is a commutative semigroup.

              Equations
              Instances For
                @[reducible, inline]
                abbrev FunLike.addCommSemigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [AddCommSemigroup β] [IsAddApply F α β] :

                A FunLike type that satisfies (f + g) x = f x + g x is a commatative additive semigroup if β is a commatative additive semigroup.

                Equations
                Instances For
                  theorem FunLike.isLeftCancelMul {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [Mul β] [IsLeftCancelMul β] [IsMulApply F α β] :

                  A FunLike type that satisfies (f * g) x = f x * g x has left cancellative multiplication if β has left cancellative multiplication.

                  theorem FunLike.isLeftCancelAdd {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Add β] [IsLeftCancelAdd β] [IsAddApply F α β] :

                  A FunLike type that satisfies (f + g) x = f x + g x has left cancellative addition if β has left cancellative addition.

                  theorem FunLike.isRightCancelMul {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [Mul β] [IsRightCancelMul β] [IsMulApply F α β] :

                  A FunLike type that satisfies (f * g) x = f x * g x has right cancellative multiplication if β has right cancellative multiplication.

                  theorem FunLike.isRightCancelAdd {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Add β] [IsRightCancelAdd β] [IsAddApply F α β] :

                  A FunLike type that satisfies (f + g) x = f x + g x has right cancellative addition if β has right cancellative addition.

                  theorem FunLike.isCancelMul {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [Mul β] [IsCancelMul β] [IsMulApply F α β] :

                  A FunLike type that satisfies (f * g) x = f x * g x has right multiplication if β has right multiplication.

                  theorem FunLike.isCancelAdd {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Add β] [IsCancelAdd β] [IsAddApply F α β] :

                  A FunLike type that satisfies (f + g) x = f x + g x has right addition if β has cancellative addition.

                  @[reducible, inline]
                  abbrev FunLike.leftCancelSemigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [LeftCancelSemigroup β] [IsMulApply F α β] :

                  A FunLike type that satisfies (f * g) x = f x * g x is a left cancel semigroup if β is a left cancel semigroup.

                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev FunLike.addLeftCancelSemigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [AddLeftCancelSemigroup β] [IsAddApply F α β] :

                    A FunLike type that satisfies (f + g) x = f x + g x is a left cancel additive semigroup if β is a left cancel additive semigroup.

                    Equations
                    Instances For
                      @[reducible, inline]
                      abbrev FunLike.rightCancelSemigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [RightCancelSemigroup β] [IsMulApply F α β] :

                      A FunLike type that satisfies (f * g) x = f x * g x is a right cancel semigroup if β is a right cancel semigroup.

                      Equations
                      Instances For
                        @[reducible, inline]
                        abbrev FunLike.addRightCancelSemigroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [AddRightCancelSemigroup β] [IsAddApply F α β] :

                        A FunLike type that satisfies (f + g) x = f x + g x is a right cancel additive semigroup if β is a right cancel additive semigroup.

                        Equations
                        Instances For
                          @[reducible, inline]
                          abbrev FunLike.mulOneClass {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [MulOneClass β] [IsOneApply F α β] [IsMulApply F α β] :

                          A FunLike type with 1 and * is MulOneClass if β is a MulOneClass.

                          Equations
                          Instances For
                            @[reducible, inline]
                            abbrev FunLike.addZeroClass {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [AddZeroClass β] [IsZeroApply F α β] [IsAddApply F α β] :

                            A FunLike type with 0 and + is AddZeroClass if β is a AddZeroClass.

                            Equations
                            Instances For
                              @[reducible, inline]
                              abbrev FunLike.monoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [Monoid β] [IsOneApply F α β] [IsMulApply F α β] [IsPowApply F α β] :

                              A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n is a monoid if β is a monoid.

                              Equations
                              Instances For
                                @[reducible, inline]
                                abbrev FunLike.addMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [AddMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsSMulApply F α β] :

                                A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and (n • f) x = n • f x is an additive monoid if β is an additive monoid.

                                Equations
                                Instances For
                                  @[reducible, inline]
                                  abbrev FunLike.leftCancelMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [LeftCancelMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsPowApply F α β] :

                                  A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n is a left cancel monoid if β is a left cancel monoid.

                                  Equations
                                  Instances For
                                    @[reducible, inline]
                                    abbrev FunLike.addLeftCancelMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [AddLeftCancelMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsSMulApply F α β] :

                                    A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and (n • f) x = n • f x is a left cancel additive monoid if β is a left cancel additive monoid.

                                    Equations
                                    Instances For
                                      @[reducible, inline]
                                      abbrev FunLike.rightCancelMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [RightCancelMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsPowApply F α β] :

                                      A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n is a right cancel monoid if β is a right cancel monoid.

                                      Equations
                                      Instances For
                                        @[reducible, inline]
                                        abbrev FunLike.addRightCancelMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [AddRightCancelMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsSMulApply F α β] :

                                        A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and (n • f) x = n • f x is a right cancel additive monoid if β is a right cancel additive monoid.

                                        Equations
                                        Instances For
                                          @[reducible, inline]
                                          abbrev FunLike.cancelMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [CancelMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsPowApply F α β] :

                                          A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n is a cancel monoid if β is a cancel monoid.

                                          Equations
                                          Instances For
                                            @[reducible, inline]
                                            abbrev FunLike.addCancelMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [AddCancelMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsSMulApply F α β] :

                                            A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and (n • f) x = n • f x is a cancel additive monoid if β is a cancel additive monoid.

                                            Equations
                                            Instances For
                                              @[reducible, inline]
                                              abbrev FunLike.commMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [CommMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsPowApply F α β] :

                                              A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n is a commutative monoid if β is a commutative monoid.

                                              Equations
                                              Instances For
                                                @[reducible, inline]
                                                abbrev FunLike.addCommMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [AddCommMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsSMulApply F α β] :

                                                A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and (n • f) x = n • f x is a commutative additive monoid if β is a commutative additive monoid.

                                                Equations
                                                Instances For
                                                  @[reducible, inline]
                                                  abbrev FunLike.cancelCommMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [CancelCommMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsPowApply F α β] :

                                                  A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n is a cancel commutative monoid if β is a cancel commutative monoid.

                                                  Equations
                                                  Instances For
                                                    @[reducible, inline]
                                                    abbrev FunLike.addCancelCommMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [AddCancelCommMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsSMulApply F α β] :

                                                    A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and (n • f) x = n • f x is a cancel commutative additive monoid if β is a cancel commutative additive monoid.

                                                    Equations
                                                    Instances For
                                                      @[reducible, inline]
                                                      abbrev FunLike.involutiveInv {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Inv F] [InvolutiveInv β] [IsInvApply F α β] :

                                                      A FunLike type with inverse that satisfies (f⁻¹) x = (f x)⁻¹ is an involutive inversion if β is an involutive inversion.

                                                      Equations
                                                      Instances For
                                                        @[reducible, inline]
                                                        abbrev FunLike.involutiveNeg {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Neg F] [InvolutiveNeg β] [IsNegApply F α β] :

                                                        A FunLike type with negation that satisfies (- f) x = - (f x) is an involutive negation if β is an involutive negation.

                                                        Equations
                                                        Instances For
                                                          @[reducible, inline]
                                                          abbrev FunLike.invOneClass {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [One F] [Inv F] [InvOneClass β] [IsOneApply F α β] [IsInvApply F α β] :

                                                          A FunLike type with 1 and inverse is an InvOneClass if β is an InvOneClass.

                                                          Equations
                                                          Instances For
                                                            @[reducible, inline]
                                                            abbrev FunLike.negZeroClass {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Zero F] [Neg F] [NegZeroClass β] [IsZeroApply F α β] [IsNegApply F α β] :

                                                            A FunLike type with 0 and negation is a NegZeroClass if β is a NegZeroClass.

                                                            Equations
                                                            Instances For
                                                              @[reducible, inline]
                                                              abbrev FunLike.divInvMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [Inv F] [Div F] [Pow F ] [DivInvMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsInvApply F α β] [IsDivApply F α β] [IsPowApply F α β] [IsPowApply F α β] :

                                                              A FunLike type is a DivInvMonoid if β is a DivInvMonoid.

                                                              Equations
                                                              Instances For
                                                                @[reducible, inline]
                                                                abbrev FunLike.subNegMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [Neg F] [Sub F] [SMul F] [SubNegMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsNegApply F α β] [IsSubApply F α β] [IsSMulApply F α β] [IsSMulApply F α β] :

                                                                A FunLike type is a SubNegMonoid if β is a SubNegMonoid.

                                                                Equations
                                                                Instances For
                                                                  @[reducible, inline]
                                                                  abbrev FunLike.divInvOneMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [Inv F] [Div F] [Pow F ] [DivInvOneMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsInvApply F α β] [IsDivApply F α β] [IsPowApply F α β] [IsPowApply F α β] :

                                                                  A FunLike type is a DivInvOneMonoid if β is a DivInvOneMonoid.

                                                                  Equations
                                                                  Instances For
                                                                    @[reducible, inline]
                                                                    abbrev FunLike.subNegZeroMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [Neg F] [Sub F] [SMul F] [SubNegZeroMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsNegApply F α β] [IsSubApply F α β] [IsSMulApply F α β] [IsSMulApply F α β] :

                                                                    A FunLike type is a SubNegOneMonoid if β is a SubNegOneMonoid.

                                                                    Equations
                                                                    Instances For
                                                                      @[reducible, inline]
                                                                      abbrev FunLike.divisionMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [Inv F] [Div F] [Pow F ] [DivisionMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsInvApply F α β] [IsDivApply F α β] [IsPowApply F α β] [IsPowApply F α β] :

                                                                      A FunLike type is a division monoid if β is a division monoid.

                                                                      Equations
                                                                      Instances For
                                                                        @[reducible, inline]
                                                                        abbrev FunLike.subtractionMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [Neg F] [Sub F] [SMul F] [SubtractionMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsNegApply F α β] [IsSubApply F α β] [IsSMulApply F α β] [IsSMulApply F α β] :

                                                                        A FunLike type is a subtraction monoid if β is a subtraction monoid.

                                                                        Equations
                                                                        Instances For
                                                                          @[reducible, inline]
                                                                          abbrev FunLike.divisionCommMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [Inv F] [Div F] [Pow F ] [DivisionCommMonoid β] [IsOneApply F α β] [IsMulApply F α β] [IsInvApply F α β] [IsDivApply F α β] [IsPowApply F α β] [IsPowApply F α β] :

                                                                          A FunLike type is a division commutative monoid if β is a division commutative monoid.

                                                                          Equations
                                                                          Instances For
                                                                            @[reducible, inline]
                                                                            abbrev FunLike.subtractionCommMonoid {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [Neg F] [Sub F] [SMul F] [SubtractionCommMonoid β] [IsZeroApply F α β] [IsAddApply F α β] [IsNegApply F α β] [IsSubApply F α β] [IsSMulApply F α β] [IsSMulApply F α β] :

                                                                            A FunLike type is a subtraction commutative monoid if β is a subtraction commutative monoid.

                                                                            Equations
                                                                            Instances For
                                                                              @[reducible, inline]
                                                                              abbrev FunLike.group {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [Inv F] [Div F] [Pow F ] [Group β] [IsOneApply F α β] [IsMulApply F α β] [IsInvApply F α β] [IsDivApply F α β] [IsPowApply F α β] [IsPowApply F α β] :

                                                                              A FunLike type is a group if β is a group.

                                                                              Equations
                                                                              Instances For
                                                                                @[reducible, inline]
                                                                                abbrev FunLike.addGroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [Neg F] [Sub F] [SMul F] [AddGroup β] [IsZeroApply F α β] [IsAddApply F α β] [IsNegApply F α β] [IsSubApply F α β] [IsSMulApply F α β] [IsSMulApply F α β] :

                                                                                A FunLike type is an additive group if β is an additive group.

                                                                                Equations
                                                                                Instances For
                                                                                  @[reducible, inline]
                                                                                  abbrev FunLike.commGroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Mul F] [One F] [Pow F ] [Inv F] [Div F] [Pow F ] [CommGroup β] [IsOneApply F α β] [IsMulApply F α β] [IsInvApply F α β] [IsDivApply F α β] [IsPowApply F α β] [IsPowApply F α β] :

                                                                                  A FunLike type is a commutative group if β is a commutative group.

                                                                                  Equations
                                                                                  Instances For
                                                                                    @[reducible, inline]
                                                                                    abbrev FunLike.addCommGroup {F : Type u_1} {α : Type u_2} {β : Type u_3} [FunLike F α β] [Add F] [Zero F] [SMul F] [Neg F] [Sub F] [SMul F] [AddCommGroup β] [IsZeroApply F α β] [IsAddApply F α β] [IsNegApply F α β] [IsSubApply F α β] [IsSMulApply F α β] [IsSMulApply F α β] :

                                                                                    A FunLike type is an additive commutative group if β is an additive commutative group.

                                                                                    Equations
                                                                                    Instances For