Documentation

Mathlib.Algebra.Group.InjSurj

Lifting algebraic data classes along injective/surjective maps #

This file provides definitions that are meant to deal with situations such as the following:

Suppose that G is a group, and H is a type endowed with One H, Mul H, and Inv H. Suppose furthermore, that f : G → H is a surjective map that respects the multiplication, and the unit elements. Then H satisfies the group axioms.

The relevant definition in this case is Function.Surjective.group. Dually, there is also Function.Injective.group. And there are versions for (additive) (commutative) semigroups/monoids.

Implementation note #

The nsmul and zsmul assumptions on any transfer definition for an algebraic structure involving both addition and multiplication (eg AddMonoidWithOne) is ∀ n x, f (n • x) = n • f x, which is what we would expect. However, we cannot do the same for transfer definitions built using to_additive (eg AddMonoid) as we want the multiplicative versions to be ∀ x n, f (x ^ n) = f x ^ n. As a result, we must use Function.swap when using additivised transfer definitions in non-additivised ones.

Injective #

@[reducible, inline]
abbrev Function.Injective.addSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [AddSemigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

A type endowed with + is an additive semigroup, if it admits an injective map that preserves + to an additive semigroup.

Equations
Instances For
    @[reducible, inline]
    abbrev Function.Injective.semigroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [Semigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

    A type endowed with * is a semigroup, if it admits an injective map that preserves * to a semigroup. See note [reducible non-instances].

    Equations
    Instances For
      @[reducible, inline]
      abbrev Function.Injective.addCommMagma {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [AddCommMagma M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

      A type endowed with + is an additive commutative semigroup, if it admits a surjective map that preserves + from an additive commutative semigroup.

      Equations
      Instances For
        @[reducible, inline]
        abbrev Function.Injective.commMagma {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [CommMagma M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

        A type endowed with * is a commutative magma, if it admits a surjective map that preserves * from a commutative magma.

        Equations
        Instances For
          @[reducible, inline]
          abbrev Function.Injective.addCommSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [AddCommSemigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

          A type endowed with + is an additive commutative semigroup,if it admits an injective map that preserves + to an additive commutative semigroup.

          Equations
          Instances For
            @[reducible, inline]
            abbrev Function.Injective.commSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [CommSemigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

            A type endowed with * is a commutative semigroup, if it admits an injective map that preserves * to a commutative semigroup. See note [reducible non-instances].

            Equations
            Instances For
              @[reducible, inline]
              abbrev Function.Injective.addLeftCancelSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [AddLeftCancelSemigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

              A type endowed with + is an additive left cancel semigroup, if it admits an injective map that preserves + to an additive left cancel semigroup.

              Equations
              Instances For
                @[reducible, inline]
                abbrev Function.Injective.leftCancelSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [LeftCancelSemigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

                A type endowed with * is a left cancel semigroup, if it admits an injective map that preserves * to a left cancel semigroup. See note [reducible non-instances].

                Equations
                Instances For
                  @[reducible, inline]
                  abbrev Function.Injective.addRightCancelSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [AddRightCancelSemigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

                  A type endowed with + is an additive right cancel semigroup, if it admits an injective map that preserves + to an additive right cancel semigroup.

                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev Function.Injective.rightCancelSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [RightCancelSemigroup M₂] (f : M₁M₂) (hf : Function.Injective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

                    A type endowed with * is a right cancel semigroup, if it admits an injective map that preserves * to a right cancel semigroup. See note [reducible non-instances].

                    Equations
                    Instances For
                      @[reducible, inline]
                      abbrev Function.Injective.addZeroClass {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [AddZeroClass M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

                      A type endowed with 0 and + is an AddZeroClass, if it admits an injective map that preserves 0 and + to an AddZeroClass.

                      Equations
                      Instances For
                        @[reducible, inline]
                        abbrev Function.Injective.mulOneClass {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [MulOneClass M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

                        A type endowed with 1 and * is a MulOneClass, if it admits an injective map that preserves 1 and * to a MulOneClass. See note [reducible non-instances].

                        Equations
                        Instances For
                          @[reducible, inline]
                          abbrev Function.Injective.addMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [AddMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                          A type endowed with 0 and + is an additive monoid, if it admits an injective map that preserves 0 and + to an additive monoid. See note [reducible non-instances].

                          Equations
                          Instances For
                            @[reducible, inline]
                            abbrev Function.Injective.monoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [Monoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :
                            Monoid M₁

                            A type endowed with 1 and * is a monoid, if it admits an injective map that preserves 1 and * to a monoid. See note [reducible non-instances].

                            Equations
                            Instances For
                              @[reducible, inline]
                              abbrev Function.Injective.addMonoidWithOne {M₂ : Type u_2} {M₁ : Type u_3} [Zero M₁] [One M₁] [Add M₁] [SMul M₁] [NatCast M₁] [AddMonoidWithOne M₂] (f : M₁M₂) (hf : Function.Injective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) :

                              A type endowed with 0, 1 and + is an additive monoid with one, if it admits an injective map that preserves 0, 1 and + to an additive monoid with one. See note [reducible non-instances].

                              Equations
                              Instances For
                                @[reducible, inline]
                                abbrev Function.Injective.addLeftCancelMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [AddLeftCancelMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                A type endowed with 0 and + is an additive left cancel monoid, if it admits an injective map that preserves 0 and + to an additive left cancel monoid.

                                Equations
                                Instances For
                                  @[reducible, inline]
                                  abbrev Function.Injective.leftCancelMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [LeftCancelMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                  A type endowed with 1 and * is a left cancel monoid, if it admits an injective map that preserves 1 and * to a left cancel monoid. See note [reducible non-instances].

                                  Equations
                                  Instances For
                                    @[reducible, inline]
                                    abbrev Function.Injective.addRightCancelMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [AddRightCancelMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                    A type endowed with 0 and + is an additive left cancel monoid,if it admits an injective map that preserves 0 and + to an additive left cancel monoid.

                                    Equations
                                    Instances For
                                      @[reducible, inline]
                                      abbrev Function.Injective.rightCancelMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [RightCancelMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                      A type endowed with 1 and * is a right cancel monoid, if it admits an injective map that preserves 1 and * to a right cancel monoid. See note [reducible non-instances].

                                      Equations
                                      Instances For
                                        @[reducible, inline]
                                        abbrev Function.Injective.addCancelMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [AddCancelMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                        A type endowed with 0 and + is an additive left cancel monoid,if it admits an injective map that preserves 0 and + to an additive left cancel monoid.

                                        Equations
                                        Instances For
                                          @[reducible, inline]
                                          abbrev Function.Injective.cancelMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [CancelMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                          A type endowed with 1 and * is a cancel monoid, if it admits an injective map that preserves 1 and * to a cancel monoid. See note [reducible non-instances].

                                          Equations
                                          Instances For
                                            @[reducible, inline]
                                            abbrev Function.Injective.addCommMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [AddCommMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                            A type endowed with 0 and + is an additive commutative monoid, if it admits an injective map that preserves 0 and + to an additive commutative monoid.

                                            Equations
                                            Instances For
                                              @[reducible, inline]
                                              abbrev Function.Injective.commMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [CommMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                              A type endowed with 1 and * is a commutative monoid, if it admits an injective map that preserves 1 and * to a commutative monoid. See note [reducible non-instances].

                                              Equations
                                              Instances For
                                                @[reducible, inline]
                                                abbrev Function.Injective.addCommMonoidWithOne {M₂ : Type u_2} {M₁ : Type u_3} [Zero M₁] [One M₁] [Add M₁] [SMul M₁] [NatCast M₁] [AddCommMonoidWithOne M₂] (f : M₁M₂) (hf : Function.Injective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) :

                                                A type endowed with 0, 1 and + is an additive commutative monoid with one, if it admits an injective map that preserves 0, 1 and + to an additive commutative monoid with one. See note [reducible non-instances].

                                                Equations
                                                Instances For
                                                  @[reducible, inline]
                                                  abbrev Function.Injective.addCancelCommMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [AddCancelCommMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                  A type endowed with 0 and + is an additive cancel commutative monoid, if it admits an injective map that preserves 0 and + to an additive cancel commutative monoid.

                                                  Equations
                                                  Instances For
                                                    @[reducible, inline]
                                                    abbrev Function.Injective.cancelCommMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [CancelCommMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                    A type endowed with 1 and * is a cancel commutative monoid, if it admits an injective map that preserves 1 and * to a cancel commutative monoid. See note [reducible non-instances].

                                                    Equations
                                                    Instances For
                                                      @[reducible, inline]
                                                      abbrev Function.Injective.involutiveNeg {M₂ : Type u_2} {M₁ : Type u_3} [Neg M₁] [InvolutiveNeg M₂] (f : M₁M₂) (hf : Function.Injective f) (inv : ∀ (x : M₁), f (-x) = -f x) :

                                                      A type has an involutive negation if it admits a surjective map that preserves - to a type which has an involutive negation.

                                                      Equations
                                                      Instances For
                                                        @[reducible, inline]
                                                        abbrev Function.Injective.involutiveInv {M₂ : Type u_2} {M₁ : Type u_3} [Inv M₁] [InvolutiveInv M₂] (f : M₁M₂) (hf : Function.Injective f) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) :

                                                        A type has an involutive inversion if it admits a surjective map that preserves ⁻¹ to a type which has an involutive inversion. See note [reducible non-instances]

                                                        Equations
                                                        Instances For
                                                          @[reducible, inline]
                                                          abbrev Function.Injective.negZeroClass {M₁ : Type u_1} {M₂ : Type u_2} [Zero M₁] [Neg M₁] [NegZeroClass M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (inv : ∀ (x : M₁), f (-x) = -f x) :

                                                          A type endowed with 0 and unary - is an NegZeroClass, if it admits an injective map that preserves 0 and unary - to an NegZeroClass.

                                                          Equations
                                                          Instances For
                                                            @[reducible, inline]
                                                            abbrev Function.Injective.invOneClass {M₁ : Type u_1} {M₂ : Type u_2} [One M₁] [Inv M₁] [InvOneClass M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) :

                                                            A type endowed with 1 and ⁻¹ is a InvOneClass, if it admits an injective map that preserves 1 and ⁻¹ to a InvOneClass. See note [reducible non-instances].

                                                            Equations
                                                            Instances For
                                                              @[reducible, inline]
                                                              abbrev Function.Injective.subNegMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [SubNegMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                              A type endowed with 0, +, unary -, and binary - is a SubNegMonoid if it admits an injective map that preserves 0, +, unary -, and binary - to a SubNegMonoid. This version takes custom nsmul and zsmul as [SMul ℕ M₁] and [SMul ℤ M₁] arguments.

                                                              Equations
                                                              Instances For
                                                                @[reducible, inline]
                                                                abbrev Function.Injective.divInvMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [Inv M₁] [Div M₁] [Pow M₁ ] [DivInvMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                A type endowed with 1, *, ⁻¹, and / is a DivInvMonoid if it admits an injective map that preserves 1, *, ⁻¹, and / to a DivInvMonoid. See note [reducible non-instances].

                                                                Equations
                                                                Instances For
                                                                  @[reducible, inline]
                                                                  abbrev Function.Injective.subNegZeroMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [SubNegZeroMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                  A type endowed with 0, +, unary -, and binary - is a SubNegZeroMonoid if it admits an injective map that preserves 0, +, unary -, and binary - to a SubNegZeroMonoid. This version takes custom nsmul and zsmul as [SMul ℕ M₁] and [SMul ℤ M₁] arguments.

                                                                  Equations
                                                                  Instances For
                                                                    @[reducible, inline]
                                                                    abbrev Function.Injective.divInvOneMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [Inv M₁] [Div M₁] [Pow M₁ ] [DivInvOneMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                    A type endowed with 1, *, ⁻¹, and / is a DivInvOneMonoid if it admits an injective map that preserves 1, *, ⁻¹, and / to a DivInvOneMonoid. See note [reducible non-instances].

                                                                    Equations
                                                                    Instances For
                                                                      @[reducible, inline]
                                                                      abbrev Function.Injective.subtractionMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [SubtractionMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                      A type endowed with 0, +, unary -, and binary - is a SubtractionMonoid if it admits an injective map that preserves 0, +, unary -, and binary - to a SubtractionMonoid. This version takes custom nsmul and zsmul as [SMul ℕ M₁] and [SMul ℤ M₁] arguments.

                                                                      Equations
                                                                      Instances For
                                                                        @[reducible, inline]
                                                                        abbrev Function.Injective.divisionMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [Inv M₁] [Div M₁] [Pow M₁ ] [DivisionMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                        A type endowed with 1, *, ⁻¹, and / is a DivisionMonoid if it admits an injective map that preserves 1, *, ⁻¹, and / to a DivisionMonoid. See note [reducible non-instances]

                                                                        Equations
                                                                        Instances For
                                                                          @[reducible, inline]
                                                                          abbrev Function.Injective.subtractionCommMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [SubtractionCommMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                          A type endowed with 0, +, unary -, and binary - is a SubtractionCommMonoid if it admits an injective map that preserves 0, +, unary -, and binary - to a SubtractionCommMonoid. This version takes custom nsmul and zsmul as [SMul ℕ M₁] and [SMul ℤ M₁] arguments.

                                                                          Equations
                                                                          Instances For
                                                                            @[reducible, inline]
                                                                            abbrev Function.Injective.divisionCommMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [Inv M₁] [Div M₁] [Pow M₁ ] [DivisionCommMonoid M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                            A type endowed with 1, *, ⁻¹, and / is a DivisionCommMonoid if it admits an injective map that preserves 1, *, ⁻¹, and / to a DivisionCommMonoid. See note [reducible non-instances].

                                                                            Equations
                                                                            Instances For
                                                                              @[reducible, inline]
                                                                              abbrev Function.Injective.addGroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [AddGroup M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                              A type endowed with 0 and + is an additive group, if it admits an injective map that preserves 0 and + to an additive group.

                                                                              Equations
                                                                              Instances For
                                                                                @[reducible, inline]
                                                                                abbrev Function.Injective.group {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [Inv M₁] [Div M₁] [Pow M₁ ] [Group M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :
                                                                                Group M₁

                                                                                A type endowed with 1, * and ⁻¹ is a group, if it admits an injective map that preserves 1, * and ⁻¹ to a group. See note [reducible non-instances].

                                                                                Equations
                                                                                Instances For
                                                                                  @[reducible, inline]
                                                                                  abbrev Function.Injective.addGroupWithOne {M₂ : Type u_2} {M₁ : Type u_3} [Zero M₁] [One M₁] [Add M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [NatCast M₁] [IntCast M₁] [AddGroupWithOne M₂] (f : M₁M₂) (hf : Function.Injective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (neg : ∀ (x : M₁), f (-x) = -f x) (sub : ∀ (x y : M₁), f (x - y) = f x - f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (zsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) (intCast : ∀ (n : ), f n = n) :

                                                                                  A type endowed with 0, 1 and + is an additive group with one, if it admits an injective map that preserves 0, 1 and + to an additive group with one. See note [reducible non-instances].

                                                                                  Equations
                                                                                  Instances For
                                                                                    @[reducible, inline]
                                                                                    abbrev Function.Injective.addCommGroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₁] [Zero M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [AddCommGroup M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                                    A type endowed with 0 and + is an additive commutative group, if it admits an injective map that preserves 0 and + to an additive commutative group.

                                                                                    Equations
                                                                                    Instances For
                                                                                      @[reducible, inline]
                                                                                      abbrev Function.Injective.commGroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₁] [One M₁] [Pow M₁ ] [Inv M₁] [Div M₁] [Pow M₁ ] [CommGroup M₂] (f : M₁M₂) (hf : Function.Injective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                                      A type endowed with 1, * and ⁻¹ is a commutative group, if it admits an injective map that preserves 1, * and ⁻¹ to a commutative group. See note [reducible non-instances].

                                                                                      Equations
                                                                                      Instances For
                                                                                        @[reducible, inline]
                                                                                        abbrev Function.Injective.addCommGroupWithOne {M₂ : Type u_2} {M₁ : Type u_3} [Zero M₁] [One M₁] [Add M₁] [SMul M₁] [Neg M₁] [Sub M₁] [SMul M₁] [NatCast M₁] [IntCast M₁] [AddCommGroupWithOne M₂] (f : M₁M₂) (hf : Function.Injective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (neg : ∀ (x : M₁), f (-x) = -f x) (sub : ∀ (x y : M₁), f (x - y) = f x - f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (zsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) (intCast : ∀ (n : ), f n = n) :

                                                                                        A type endowed with 0, 1 and + is an additive commutative group with one, if it admits an injective map that preserves 0, 1 and + to an additive commutative group with one. See note [reducible non-instances].

                                                                                        Equations
                                                                                        Instances For

                                                                                          Surjective #

                                                                                          @[reducible, inline]
                                                                                          abbrev Function.Surjective.addSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [AddSemigroup M₁] (f : M₁M₂) (hf : Function.Surjective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

                                                                                          A type endowed with + is an additive semigroup, if it admits a surjective map that preserves + from an additive semigroup.

                                                                                          Equations
                                                                                          Instances For
                                                                                            @[reducible, inline]
                                                                                            abbrev Function.Surjective.semigroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [Semigroup M₁] (f : M₁M₂) (hf : Function.Surjective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

                                                                                            A type endowed with * is a semigroup, if it admits a surjective map that preserves * from a semigroup. See note [reducible non-instances].

                                                                                            Equations
                                                                                            Instances For
                                                                                              @[reducible, inline]
                                                                                              abbrev Function.Surjective.addCommMagma {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [AddCommMagma M₁] (f : M₁M₂) (hf : Function.Surjective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

                                                                                              A type endowed with + is an additive commutative semigroup, if it admits a surjective map that preserves + from an additive commutative semigroup.

                                                                                              Equations
                                                                                              Instances For
                                                                                                @[reducible, inline]
                                                                                                abbrev Function.Surjective.commMagma {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [CommMagma M₁] (f : M₁M₂) (hf : Function.Surjective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

                                                                                                A type endowed with * is a commutative semigroup, if it admits a surjective map that preserves * from a commutative semigroup. See note [reducible non-instances].

                                                                                                Equations
                                                                                                Instances For
                                                                                                  @[reducible, inline]
                                                                                                  abbrev Function.Surjective.addCommSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [AddCommSemigroup M₁] (f : M₁M₂) (hf : Function.Surjective f) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

                                                                                                  A type endowed with + is an additive commutative semigroup, if it admits a surjective map that preserves + from an additive commutative semigroup.

                                                                                                  Equations
                                                                                                  Instances For
                                                                                                    @[reducible, inline]
                                                                                                    abbrev Function.Surjective.commSemigroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [CommSemigroup M₁] (f : M₁M₂) (hf : Function.Surjective f) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

                                                                                                    A type endowed with * is a commutative semigroup, if it admits a surjective map that preserves * from a commutative semigroup. See note [reducible non-instances].

                                                                                                    Equations
                                                                                                    Instances For
                                                                                                      @[reducible, inline]
                                                                                                      abbrev Function.Surjective.addZeroClass {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [Zero M₂] [AddZeroClass M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) :

                                                                                                      A type endowed with 0 and + is an AddZeroClass, if it admits a surjective map that preserves 0 and + to an AddZeroClass.

                                                                                                      Equations
                                                                                                      Instances For
                                                                                                        @[reducible, inline]
                                                                                                        abbrev Function.Surjective.mulOneClass {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [One M₂] [MulOneClass M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) :

                                                                                                        A type endowed with 1 and * is a MulOneClass, if it admits a surjective map that preserves 1 and * from a MulOneClass. See note [reducible non-instances].

                                                                                                        Equations
                                                                                                        Instances For
                                                                                                          @[reducible, inline]
                                                                                                          abbrev Function.Surjective.addMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [Zero M₂] [SMul M₂] [AddMonoid M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                                                          A type endowed with 0 and + is an additive monoid, if it admits a surjective map that preserves 0 and + to an additive monoid. This version takes a custom nsmul as a [SMul ℕ M₂] argument.

                                                                                                          Equations
                                                                                                          Instances For
                                                                                                            @[reducible, inline]
                                                                                                            abbrev Function.Surjective.monoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [One M₂] [Pow M₂ ] [Monoid M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :
                                                                                                            Monoid M₂

                                                                                                            A type endowed with 1 and * is a monoid, if it admits a surjective map that preserves 1 and * to a monoid. See note [reducible non-instances].

                                                                                                            Equations
                                                                                                            Instances For
                                                                                                              @[reducible, inline]
                                                                                                              abbrev Function.Surjective.addMonoidWithOne {M₁ : Type u_1} {M₂ : Type u_3} [Zero M₂] [One M₂] [Add M₂] [SMul M₂] [NatCast M₂] [AddMonoidWithOne M₁] (f : M₁M₂) (hf : Function.Surjective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) :

                                                                                                              A type endowed with 0, 1 and + is an additive monoid with one, if it admits a surjective map that preserves 0, 1 and * from an additive monoid with one. See note [reducible non-instances].

                                                                                                              Equations
                                                                                                              Instances For
                                                                                                                @[reducible, inline]
                                                                                                                abbrev Function.Surjective.addCommMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [Zero M₂] [SMul M₂] [AddCommMonoid M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                                                                A type endowed with 0 and + is an additive commutative monoid, if it admits a surjective map that preserves 0 and + to an additive commutative monoid.

                                                                                                                Equations
                                                                                                                Instances For
                                                                                                                  @[reducible, inline]
                                                                                                                  abbrev Function.Surjective.commMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [One M₂] [Pow M₂ ] [CommMonoid M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                                                                  A type endowed with 1 and * is a commutative monoid, if it admits a surjective map that preserves 1 and * from a commutative monoid. See note [reducible non-instances].

                                                                                                                  Equations
                                                                                                                  Instances For
                                                                                                                    @[reducible, inline]
                                                                                                                    abbrev Function.Surjective.addCommMonoidWithOne {M₁ : Type u_1} {M₂ : Type u_3} [Zero M₂] [One M₂] [Add M₂] [SMul M₂] [NatCast M₂] [AddCommMonoidWithOne M₁] (f : M₁M₂) (hf : Function.Surjective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) :

                                                                                                                    A type endowed with 0, 1 and + is an additive monoid with one, if it admits a surjective map that preserves 0, 1 and * from an additive monoid with one. See note [reducible non-instances].

                                                                                                                    Equations
                                                                                                                    Instances For
                                                                                                                      @[reducible, inline]
                                                                                                                      abbrev Function.Surjective.involutiveNeg {M₁ : Type u_1} {M₂ : Type u_3} [Neg M₂] [InvolutiveNeg M₁] (f : M₁M₂) (hf : Function.Surjective f) (inv : ∀ (x : M₁), f (-x) = -f x) :

                                                                                                                      A type has an involutive negation if it admits a surjective map that preserves - to a type which has an involutive negation.

                                                                                                                      Equations
                                                                                                                      Instances For
                                                                                                                        @[reducible, inline]
                                                                                                                        abbrev Function.Surjective.involutiveInv {M₁ : Type u_1} {M₂ : Type u_3} [Inv M₂] [InvolutiveInv M₁] (f : M₁M₂) (hf : Function.Surjective f) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) :

                                                                                                                        A type has an involutive inversion if it admits a surjective map that preserves ⁻¹ to a type which has an involutive inversion. See note [reducible non-instances]

                                                                                                                        Equations
                                                                                                                        Instances For
                                                                                                                          @[reducible, inline]
                                                                                                                          abbrev Function.Surjective.subNegMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [Zero M₂] [SMul M₂] [Neg M₂] [Sub M₂] [SMul M₂] [SubNegMonoid M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                                                                          A type endowed with 0, +, unary -, and binary - is a SubNegMonoid if it admits a surjective map that preserves 0, +, unary -, and binary - to a SubNegMonoid.

                                                                                                                          Equations
                                                                                                                          Instances For
                                                                                                                            @[reducible, inline]
                                                                                                                            abbrev Function.Surjective.divInvMonoid {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [One M₂] [Pow M₂ ] [Inv M₂] [Div M₂] [Pow M₂ ] [DivInvMonoid M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                                                                            A type endowed with 1, *, ⁻¹, and / is a DivInvMonoid if it admits a surjective map that preserves 1, *, ⁻¹, and / to a DivInvMonoid. See note [reducible non-instances].

                                                                                                                            Equations
                                                                                                                            Instances For
                                                                                                                              @[reducible, inline]
                                                                                                                              abbrev Function.Surjective.addGroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [Zero M₂] [SMul M₂] [Neg M₂] [Sub M₂] [SMul M₂] [AddGroup M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                                                                              A type endowed with 0 and + is an additive group, if it admits a surjective map that preserves 0 and + to an additive group.

                                                                                                                              Equations
                                                                                                                              Instances For
                                                                                                                                @[reducible, inline]
                                                                                                                                abbrev Function.Surjective.group {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [One M₂] [Pow M₂ ] [Inv M₂] [Div M₂] [Pow M₂ ] [Group M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :
                                                                                                                                Group M₂

                                                                                                                                A type endowed with 1, * and ⁻¹ is a group, if it admits a surjective map that preserves 1, * and ⁻¹ to a group. See note [reducible non-instances].

                                                                                                                                Equations
                                                                                                                                Instances For
                                                                                                                                  @[reducible, inline]
                                                                                                                                  abbrev Function.Surjective.addGroupWithOne {M₁ : Type u_1} {M₂ : Type u_3} [Zero M₂] [One M₂] [Add M₂] [Neg M₂] [Sub M₂] [SMul M₂] [SMul M₂] [NatCast M₂] [IntCast M₂] [AddGroupWithOne M₁] (f : M₁M₂) (hf : Function.Surjective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (neg : ∀ (x : M₁), f (-x) = -f x) (sub : ∀ (x y : M₁), f (x - y) = f x - f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (zsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) (intCast : ∀ (n : ), f n = n) :

                                                                                                                                  A type endowed with 0, 1, + is an additive group with one, if it admits a surjective map that preserves 0, 1, and + to an additive group with one. See note [reducible non-instances].

                                                                                                                                  Equations
                                                                                                                                  Instances For
                                                                                                                                    @[reducible, inline]
                                                                                                                                    abbrev Function.Surjective.addCommGroup {M₁ : Type u_1} {M₂ : Type u_2} [Add M₂] [Zero M₂] [SMul M₂] [Neg M₂] [Sub M₂] [SMul M₂] [AddCommGroup M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 0 = 0) (mul : ∀ (x y : M₁), f (x + y) = f x + f y) (inv : ∀ (x : M₁), f (-x) = -f x) (div : ∀ (x y : M₁), f (x - y) = f x - f y) (npow : ∀ (x : M₁) (n : ), f (n x) = n f x) (zpow : ∀ (x : M₁) (n : ), f (n x) = n f x) :

                                                                                                                                    A type endowed with 0 and + is an additive commutative group, if it admits a surjective map that preserves 0 and + to an additive commutative group.

                                                                                                                                    Equations
                                                                                                                                    Instances For
                                                                                                                                      @[reducible, inline]
                                                                                                                                      abbrev Function.Surjective.commGroup {M₁ : Type u_1} {M₂ : Type u_2} [Mul M₂] [One M₂] [Pow M₂ ] [Inv M₂] [Div M₂] [Pow M₂ ] [CommGroup M₁] (f : M₁M₂) (hf : Function.Surjective f) (one : f 1 = 1) (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹) (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) (zpow : ∀ (x : M₁) (n : ), f (x ^ n) = f x ^ n) :

                                                                                                                                      A type endowed with 1, *, ⁻¹, and / is a commutative group, if it admits a surjective map that preserves 1, *, ⁻¹, and / from a commutative group. See note [reducible non-instances].

                                                                                                                                      Equations
                                                                                                                                      Instances For
                                                                                                                                        @[reducible, inline]
                                                                                                                                        abbrev Function.Surjective.addCommGroupWithOne {M₁ : Type u_1} {M₂ : Type u_3} [Zero M₂] [One M₂] [Add M₂] [Neg M₂] [Sub M₂] [SMul M₂] [SMul M₂] [NatCast M₂] [IntCast M₂] [AddCommGroupWithOne M₁] (f : M₁M₂) (hf : Function.Surjective f) (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (neg : ∀ (x : M₁), f (-x) = -f x) (sub : ∀ (x y : M₁), f (x - y) = f x - f y) (nsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (zsmul : ∀ (n : ) (x : M₁), f (n x) = n f x) (natCast : ∀ (n : ), f n = n) (intCast : ∀ (n : ), f n = n) :

                                                                                                                                        A type endowed with 0, 1, + is an additive commutative group with one, if it admits a surjective map that preserves 0, 1, and + to an additive commutative group with one. See note [reducible non-instances].

                                                                                                                                        Equations
                                                                                                                                        Instances For