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.

Note that the nsmul and zsmul hypotheses in the declarations in this file are declared as โˆ€ x n, f (n โ€ข x) = n โ€ข f x, with the binders in a slightly unnatural order, as they are to_additiveized from the versions for ^.

Injective #

@[reducible, inline]
abbrev Function.Injective.semigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [Semigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
Semigroup Mโ‚

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.addSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [AddSemigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :
      AddSemigroup Mโ‚

      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.commMagma {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [CommMagma Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
          CommMagma Mโ‚

          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.addCommMagma {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [AddCommMagma Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :
              AddCommMagma Mโ‚

              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.commSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [CommSemigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
                  CommSemigroup Mโ‚

                  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.addCommSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [AddCommSemigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (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
                          theorem Function.Injective.isLeftCancelMul {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [Mul Mโ‚‚] [IsLeftCancelMul Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :

                          A type has left-cancellative multiplication, if it admits an injective map that preserves * to another type with left-cancellative multiplication.

                          theorem Function.Injective.isLeftCancelAdd {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Add Mโ‚‚] [IsLeftCancelAdd Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :

                          A type has left-cancellative addition, if it admits an injective map that preserves + to another type with left-cancellative addition.

                          theorem Function.Injective.isRightCancelMul {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [Mul Mโ‚‚] [IsRightCancelMul Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :

                          A type has right-cancellative multiplication, if it admits an injective map that preserves * to another type with right-cancellative multiplication.

                          theorem Function.Injective.isRightCancelAdd {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Add Mโ‚‚] [IsRightCancelAdd Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :

                          A type has right-cancellative addition, if it admits an injective map that preserves + to another type with right-cancellative addition.

                          theorem Function.Injective.isCancelMul {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [Mul Mโ‚‚] [IsCancelMul Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
                          IsCancelMul Mโ‚

                          A type has cancellative multiplication, if it admits an injective map that preserves * to another type with cancellative multiplication.

                          theorem Function.Injective.isCancelAdd {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Add Mโ‚‚] [IsCancelAdd Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :
                          IsCancelAdd Mโ‚

                          A type has cancellative addition, if it admits an injective map that preserves + to another type with cancellative addition.

                          @[reducible, inline]
                          abbrev Function.Injective.leftCancelSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [LeftCancelSemigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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.addLeftCancelSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [AddLeftCancelSemigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (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.rightCancelSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [RightCancelSemigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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.addRightCancelSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [AddRightCancelSemigroup Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (add : โˆ€ (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.mulOneClass {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [One Mโ‚] [MulOneClass Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (one : f 1 = 1) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
                                          MulOneClass Mโ‚

                                          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.addZeroClass {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Zero Mโ‚] [AddZeroClass Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :
                                              AddZeroClass Mโ‚

                                              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.monoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [One Mโ‚] [Pow Mโ‚ โ„•] [Monoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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.addMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Zero Mโ‚] [SMul โ„• Mโ‚] [AddMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) :
                                                      AddMonoid Mโ‚

                                                      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.leftCancelMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [One Mโ‚] [Pow Mโ‚ โ„•] [LeftCancelMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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.addLeftCancelMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Zero Mโ‚] [SMul โ„• Mโ‚] [AddLeftCancelMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (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 : 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.addRightCancelMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Zero Mโ‚] [SMul โ„• Mโ‚] [AddRightCancelMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (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 : 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) :
                                                                          CancelMonoid Mโ‚

                                                                          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.addCancelMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Zero Mโ‚] [SMul โ„• Mโ‚] [AddCancelMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (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.commMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [One Mโ‚] [Pow Mโ‚ โ„•] [CommMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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) :
                                                                                  CommMonoid Mโ‚

                                                                                  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.addCommMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Zero Mโ‚] [SMul โ„• Mโ‚] [AddCommMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) :
                                                                                      AddCommMonoid Mโ‚

                                                                                      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.cancelCommMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚] [One Mโ‚] [Pow Mโ‚ โ„•] [CancelCommMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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.addCancelCommMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚] [Zero Mโ‚] [SMul โ„• Mโ‚] [AddCancelCommMonoid Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (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.involutiveInv {Mโ‚‚ : Type u_2} {Mโ‚ : Type u_3} [Inv Mโ‚] [InvolutiveInv Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (inv : โˆ€ (x : Mโ‚), f xโปยน = (f x)โปยน) :
                                                                                                  InvolutiveInv Mโ‚

                                                                                                  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.involutiveNeg {Mโ‚‚ : Type u_2} {Mโ‚ : Type u_3} [Neg Mโ‚] [InvolutiveNeg Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (neg : โˆ€ (x : Mโ‚), f (-x) = -f x) :
                                                                                                      InvolutiveNeg Mโ‚

                                                                                                      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.invOneClass {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [One Mโ‚] [Inv Mโ‚] [InvOneClass Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (one : f 1 = 1) (inv : โˆ€ (x : Mโ‚), f xโปยน = (f x)โปยน) :
                                                                                                          InvOneClass Mโ‚

                                                                                                          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.negZeroClass {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Zero Mโ‚] [Neg Mโ‚] [NegZeroClass Mโ‚‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Injective f) (zero : f 0 = 0) (neg : โˆ€ (x : Mโ‚), f (-x) = -f x) :
                                                                                                              NegZeroClass Mโ‚

                                                                                                              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.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 : 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) :
                                                                                                                  DivInvMonoid Mโ‚

                                                                                                                  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.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 : Injective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (x : Mโ‚) (n : โ„ค), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                      SubNegMonoid Mโ‚

                                                                                                                      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.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 : 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.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 : Injective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (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.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 : 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.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 : Injective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (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.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 : 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.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 : Injective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (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.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 : 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.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 : Injective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (x : Mโ‚) (n : โ„ค), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                                                      AddGroup Mโ‚

                                                                                                                                                      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.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 : 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) :
                                                                                                                                                          CommGroup Mโ‚

                                                                                                                                                          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.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 : Injective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (x : Mโ‚) (n : โ„ค), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                                                              AddCommGroup Mโ‚

                                                                                                                                                              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

                                                                                                                                                                  Surjective #

                                                                                                                                                                  @[reducible, inline]
                                                                                                                                                                  abbrev Function.Surjective.semigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚‚] [Semigroup Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
                                                                                                                                                                  Semigroup Mโ‚‚

                                                                                                                                                                  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.addSemigroup {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚‚] [AddSemigroup Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :
                                                                                                                                                                      AddSemigroup Mโ‚‚

                                                                                                                                                                      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.commMagma {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚‚] [CommMagma Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
                                                                                                                                                                          CommMagma Mโ‚‚

                                                                                                                                                                          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.addCommMagma {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚‚] [AddCommMagma Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :
                                                                                                                                                                              AddCommMagma Mโ‚‚

                                                                                                                                                                              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 : Surjective f) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
                                                                                                                                                                                  CommSemigroup Mโ‚‚

                                                                                                                                                                                  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 : Surjective f) (add : โˆ€ (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.mulOneClass {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚‚] [One Mโ‚‚] [MulOneClass Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (one : f 1 = 1) (mul : โˆ€ (x y : Mโ‚), f (x * y) = f x * f y) :
                                                                                                                                                                                          MulOneClass Mโ‚‚

                                                                                                                                                                                          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.addZeroClass {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚‚] [Zero Mโ‚‚] [AddZeroClass Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) :
                                                                                                                                                                                              AddZeroClass Mโ‚‚

                                                                                                                                                                                              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.monoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚‚] [One Mโ‚‚] [Pow Mโ‚‚ โ„•] [Monoid Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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.addMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚‚] [Zero Mโ‚‚] [SMul โ„• Mโ‚‚] [AddMonoid Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                                                                                                      AddMonoid Mโ‚‚

                                                                                                                                                                                                      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.commMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Mul Mโ‚‚] [One Mโ‚‚] [Pow Mโ‚‚ โ„•] [CommMonoid Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : 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) :
                                                                                                                                                                                                          CommMonoid Mโ‚‚

                                                                                                                                                                                                          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.addCommMonoid {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_2} [Add Mโ‚‚] [Zero Mโ‚‚] [SMul โ„• Mโ‚‚] [AddCommMonoid Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (zero : f 0 = 0) (add : โˆ€ (x y : Mโ‚), f (x + y) = f x + f y) (nsmul : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                                                                                                              AddCommMonoid Mโ‚‚

                                                                                                                                                                                                              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.involutiveInv {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_3} [Inv Mโ‚‚] [InvolutiveInv Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (inv : โˆ€ (x : Mโ‚), f xโปยน = (f x)โปยน) :
                                                                                                                                                                                                                  InvolutiveInv Mโ‚‚

                                                                                                                                                                                                                  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.involutiveNeg {Mโ‚ : Type u_1} {Mโ‚‚ : Type u_3} [Neg Mโ‚‚] [InvolutiveNeg Mโ‚] (f : Mโ‚ โ†’ Mโ‚‚) (hf : Surjective f) (neg : โˆ€ (x : Mโ‚), f (-x) = -f x) :
                                                                                                                                                                                                                      InvolutiveNeg Mโ‚‚

                                                                                                                                                                                                                      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.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 : 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) :
                                                                                                                                                                                                                          DivInvMonoid Mโ‚‚

                                                                                                                                                                                                                          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.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 : Surjective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (x : Mโ‚) (n : โ„ค), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                                                                                                                              SubNegMonoid Mโ‚‚

                                                                                                                                                                                                                              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.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 : 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.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 : Surjective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (x : Mโ‚) (n : โ„ค), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                                                                                                                                      AddGroup Mโ‚‚

                                                                                                                                                                                                                                      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.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 : 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) :
                                                                                                                                                                                                                                          CommGroup Mโ‚‚

                                                                                                                                                                                                                                          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.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 : Surjective f) (zero : f 0 = 0) (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 : โˆ€ (x : Mโ‚) (n : โ„•), f (n โ€ข x) = n โ€ข f x) (zsmul : โˆ€ (x : Mโ‚) (n : โ„ค), f (n โ€ข x) = n โ€ข f x) :
                                                                                                                                                                                                                                              AddCommGroup Mโ‚‚

                                                                                                                                                                                                                                              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