Documentation

Mathlib.Algebra.Group.Hom.Basic

Additional lemmas about monoid and group homomorphisms #

theorem NeZero.of_map {F : Type u_8} {R : Type u_9} {M : Type u_10} [Zero R] [Zero M] [FunLike F R M] [ZeroHomClass F R M] (f : F) {r : R} [neZero : NeZero (f r)] :
theorem NeZero.of_injective {F : Type u_8} {R : Type u_9} {M : Type u_10} [Zero R] {r : R} [NeZero r] [Zero M] [FunLike F R M] [ZeroHomClass F R M] {f : F} (hf : Function.Injective f) :
NeZero (f r)
def negAddMonoidHom {α : Type u_1} [SubtractionCommMonoid α] :
α →+ α

Negation on a commutative additive group, considered as an additive monoid homomorphism.

Equations
  • negAddMonoidHom = { toZeroHom := { toFun := Neg.neg, map_zero' := (_ : -0 = 0) }, map_add' := (_ : ∀ (a b : α), -(a + b) = -a + -b) }
Instances For
    def invMonoidHom {α : Type u_1} [DivisionCommMonoid α] :
    α →* α

    Inversion on a commutative group, considered as a monoid homomorphism.

    Equations
    • invMonoidHom = { toOneHom := { toFun := Inv.inv, map_one' := (_ : 1⁻¹ = 1) }, map_mul' := (_ : ∀ (a b : α), (a * b)⁻¹ = a⁻¹ * b⁻¹) }
    Instances For
      @[simp]
      theorem coe_invMonoidHom {α : Type u_1} [DivisionCommMonoid α] :
      invMonoidHom = Inv.inv
      @[simp]
      theorem invMonoidHom_apply {α : Type u_1} [DivisionCommMonoid α] (a : α) :
      invMonoidHom a = a⁻¹
      theorem AddHom.instAddAddHomToAddToAddCommMagma.proof_1 {M : Type u_2} {N : Type u_1} [Add M] [AddCommSemigroup N] (f : AddHom M N) (g : AddHom M N) (x : M) (y : M) :
      f (x + y) + g (x + y) = f x + g x + (f y + g y)
      instance AddHom.instAddAddHomToAddToAddCommMagma {M : Type u_3} {N : Type u_4} [Add M] [AddCommSemigroup N] :
      Add (AddHom M N)

      Given two additive morphisms f, g to an additive commutative semigroup, f + g is the additive morphism sending x to f x + g x.

      Equations
      • One or more equations did not get rendered due to their size.
      instance MulHom.instMulMulHomToMulToCommMagma {M : Type u_3} {N : Type u_4} [Mul M] [CommSemigroup N] :
      Mul (M →ₙ* N)

      Given two mul morphisms f, g to a commutative semigroup, f * g is the mul morphism sending x to f x * g x.

      Equations
      • One or more equations did not get rendered due to their size.
      @[simp]
      theorem AddHom.add_apply {M : Type u_9} {N : Type u_10} [Add M] [AddCommSemigroup N] (f : AddHom M N) (g : AddHom M N) (x : M) :
      (f + g) x = f x + g x
      @[simp]
      theorem MulHom.mul_apply {M : Type u_9} {N : Type u_10} [Mul M] [CommSemigroup N] (f : M →ₙ* N) (g : M →ₙ* N) (x : M) :
      (f * g) x = f x * g x
      theorem AddHom.add_comp {M : Type u_3} {N : Type u_4} {P : Type u_5} [Add M] [Add N] [AddCommSemigroup P] (g₁ : AddHom N P) (g₂ : AddHom N P) (f : AddHom M N) :
      AddHom.comp (g₁ + g₂) f = AddHom.comp g₁ f + AddHom.comp g₂ f
      theorem MulHom.mul_comp {M : Type u_3} {N : Type u_4} {P : Type u_5} [Mul M] [Mul N] [CommSemigroup P] (g₁ : N →ₙ* P) (g₂ : N →ₙ* P) (f : M →ₙ* N) :
      MulHom.comp (g₁ * g₂) f = MulHom.comp g₁ f * MulHom.comp g₂ f
      theorem AddHom.comp_add {M : Type u_3} {N : Type u_4} {P : Type u_5} [Add M] [AddCommSemigroup N] [AddCommSemigroup P] (g : AddHom N P) (f₁ : AddHom M N) (f₂ : AddHom M N) :
      AddHom.comp g (f₁ + f₂) = AddHom.comp g f₁ + AddHom.comp g f₂
      theorem MulHom.comp_mul {M : Type u_3} {N : Type u_4} {P : Type u_5} [Mul M] [CommSemigroup N] [CommSemigroup P] (g : N →ₙ* P) (f₁ : M →ₙ* N) (f₂ : M →ₙ* N) :
      MulHom.comp g (f₁ * f₂) = MulHom.comp g f₁ * MulHom.comp g f₂
      theorem AddMonoidHom.add.proof_1 {M : Type u_2} {N : Type u_1} [AddZeroClass M] [AddCommMonoid N] (f : M →+ N) (g : M →+ N) :
      f 0 + g 0 = 0
      instance AddMonoidHom.add {M : Type u_9} {N : Type u_10} [AddZeroClass M] [AddCommMonoid N] :
      Add (M →+ N)

      Given two additive monoid morphisms f, g to an additive commutative monoid, f + g is the additive monoid morphism sending x to f x + g x.

      Equations
      • One or more equations did not get rendered due to their size.
      theorem AddMonoidHom.add.proof_2 {M : Type u_2} {N : Type u_1} [AddZeroClass M] [AddCommMonoid N] (f : M →+ N) (g : M →+ N) (x : M) (y : M) :
      f (x + y) + g (x + y) = f x + g x + (f y + g y)
      instance MonoidHom.mul {M : Type u_9} {N : Type u_10} [MulOneClass M] [CommMonoid N] :
      Mul (M →* N)

      Given two monoid morphisms f, g to a commutative monoid, f * g is the monoid morphism sending x to f x * g x.

      Equations
      • One or more equations did not get rendered due to their size.
      @[simp]
      theorem AddMonoidHom.add_apply {M : Type u_9} {N : Type u_10} [AddZeroClass M] [AddCommMonoid N] (f : M →+ N) (g : M →+ N) (x : M) :
      (f + g) x = f x + g x
      @[simp]
      theorem MonoidHom.mul_apply {M : Type u_9} {N : Type u_10} [MulOneClass M] [CommMonoid N] (f : M →* N) (g : M →* N) (x : M) :
      (f * g) x = f x * g x
      theorem AddMonoidHom.add_comp {M : Type u_3} {N : Type u_4} {P : Type u_5} [AddZeroClass M] [AddZeroClass N] [AddCommMonoid P] (g₁ : N →+ P) (g₂ : N →+ P) (f : M →+ N) :
      theorem MonoidHom.mul_comp {M : Type u_3} {N : Type u_4} {P : Type u_5} [MulOneClass M] [MulOneClass N] [CommMonoid P] (g₁ : N →* P) (g₂ : N →* P) (f : M →* N) :
      MonoidHom.comp (g₁ * g₂) f = MonoidHom.comp g₁ f * MonoidHom.comp g₂ f
      theorem AddMonoidHom.comp_add {M : Type u_3} {N : Type u_4} {P : Type u_5} [AddZeroClass M] [AddCommMonoid N] [AddCommMonoid P] (g : N →+ P) (f₁ : M →+ N) (f₂ : M →+ N) :
      theorem MonoidHom.comp_mul {M : Type u_3} {N : Type u_4} {P : Type u_5} [MulOneClass M] [CommMonoid N] [CommMonoid P] (g : N →* P) (f₁ : M →* N) (f₂ : M →* N) :
      MonoidHom.comp g (f₁ * f₂) = MonoidHom.comp g f₁ * MonoidHom.comp g f₂
      theorem injective_iff_map_eq_zero {F : Type u_8} {G : Type u_9} {H : Type u_10} [AddGroup G] [AddZeroClass H] [FunLike F G H] [AddMonoidHomClass F G H] (f : F) :
      Function.Injective f ∀ (a : G), f a = 0a = 0

      A homomorphism from an additive group to an additive monoid is injective iff its kernel is trivial. For the iff statement on the triviality of the kernel, see injective_iff_map_eq_zero'.

      theorem injective_iff_map_eq_one {F : Type u_8} {G : Type u_9} {H : Type u_10} [Group G] [MulOneClass H] [FunLike F G H] [MonoidHomClass F G H] (f : F) :
      Function.Injective f ∀ (a : G), f a = 1a = 1

      A homomorphism from a group to a monoid is injective iff its kernel is trivial. For the iff statement on the triviality of the kernel, see injective_iff_map_eq_one'.

      theorem injective_iff_map_eq_zero' {F : Type u_8} {G : Type u_9} {H : Type u_10} [AddGroup G] [AddZeroClass H] [FunLike F G H] [AddMonoidHomClass F G H] (f : F) :
      Function.Injective f ∀ (a : G), f a = 0 a = 0

      A homomorphism from an additive group to an additive monoid is injective iff its kernel is trivial, stated as an iff on the triviality of the kernel. For the implication, see injective_iff_map_eq_zero.

      theorem injective_iff_map_eq_one' {F : Type u_8} {G : Type u_9} {H : Type u_10} [Group G] [MulOneClass H] [FunLike F G H] [MonoidHomClass F G H] (f : F) :
      Function.Injective f ∀ (a : G), f a = 1 a = 1

      A homomorphism from a group to a monoid is injective iff its kernel is trivial, stated as an iff on the triviality of the kernel. For the implication, see injective_iff_map_eq_one.

      def AddMonoidHom.ofMapAddNeg {G : Type u_6} [AddGroup G] {H : Type u_9} [AddGroup H] (f : GH) (map_div : ∀ (a b : G), f (a + -b) = f a + -f b) :
      G →+ H

      Makes an additive group homomorphism from a proof that the map preserves the operation fun a b => a + -b. See also AddMonoidHom.ofMapSub for a version using fun a b => a - b.

      Equations
      Instances For
        theorem AddMonoidHom.ofMapAddNeg.proof_1 {G : Type u_2} [AddGroup G] {H : Type u_1} [AddGroup H] (f : GH) (map_div : ∀ (a b : G), f (a + -b) = f a + -f b) (x : G) (y : G) :
        f (x + y) = f x + f y
        def MonoidHom.ofMapMulInv {G : Type u_6} [Group G] {H : Type u_9} [Group H] (f : GH) (map_div : ∀ (a b : G), f (a * b⁻¹) = f a * (f b)⁻¹) :
        G →* H

        Makes a group homomorphism from a proof that the map preserves right division fun x y => x * y⁻¹. See also MonoidHom.of_map_div for a version using fun x y => x / y.

        Equations
        Instances For
          @[simp]
          theorem AddMonoidHom.coe_of_map_add_neg {G : Type u_6} [AddGroup G] {H : Type u_9} [AddGroup H] (f : GH) (map_div : ∀ (a b : G), f (a + -b) = f a + -f b) :
          (AddMonoidHom.ofMapAddNeg f map_div) = f
          @[simp]
          theorem MonoidHom.coe_of_map_mul_inv {G : Type u_6} [Group G] {H : Type u_9} [Group H] (f : GH) (map_div : ∀ (a b : G), f (a * b⁻¹) = f a * (f b)⁻¹) :
          (MonoidHom.ofMapMulInv f map_div) = f
          theorem AddMonoidHom.ofMapSub.proof_1 {G : Type u_2} [AddGroup G] {H : Type u_1} [AddGroup H] (f : GH) (hf : ∀ (x y : G), f (x - y) = f x - f y) (a : G) (a : G) :
          f (a✝ + -a) = f a✝ + -f a
          def AddMonoidHom.ofMapSub {G : Type u_6} [AddGroup G] {H : Type u_9} [AddGroup H] (f : GH) (hf : ∀ (x y : G), f (x - y) = f x - f y) :
          G →+ H

          Define a morphism of additive groups given a map which respects difference.

          Equations
          Instances For
            def MonoidHom.ofMapDiv {G : Type u_6} [Group G] {H : Type u_9} [Group H] (f : GH) (hf : ∀ (x y : G), f (x / y) = f x / f y) :
            G →* H

            Define a morphism of additive groups given a map which respects ratios.

            Equations
            Instances For
              @[simp]
              theorem AddMonoidHom.coe_of_map_sub {G : Type u_6} [AddGroup G] {H : Type u_9} [AddGroup H] (f : GH) (hf : ∀ (x y : G), f (x - y) = f x - f y) :
              @[simp]
              theorem MonoidHom.coe_of_map_div {G : Type u_6} [Group G] {H : Type u_9} [Group H] (f : GH) (hf : ∀ (x y : G), f (x / y) = f x / f y) :
              (MonoidHom.ofMapDiv f hf) = f

              If f is an additive monoid homomorphism to an additive commutative group, then -f is the homomorphism sending x to -(f x).

              Equations
              • One or more equations did not get rendered due to their size.

              If f is a monoid homomorphism to a commutative group, then f⁻¹ is the homomorphism sending x to (f x)⁻¹.

              Equations
              • One or more equations did not get rendered due to their size.
              @[simp]
              theorem AddMonoidHom.neg_apply {M : Type u_9} {G : Type u_10} [AddZeroClass M] [AddCommGroup G] (f : M →+ G) (x : M) :
              (-f) x = -f x
              @[simp]
              theorem MonoidHom.inv_apply {M : Type u_9} {G : Type u_10} [MulOneClass M] [CommGroup G] (f : M →* G) (x : M) :
              f⁻¹ x = (f x)⁻¹
              @[simp]
              theorem AddMonoidHom.neg_comp {M : Type u_9} {N : Type u_10} {A : Type u_11} [AddZeroClass M] [AddZeroClass N] [AddCommGroup A] (φ : N →+ A) (ψ : M →+ N) :
              @[simp]
              theorem MonoidHom.inv_comp {M : Type u_9} {N : Type u_10} {A : Type u_11} [MulOneClass M] [MulOneClass N] [CommGroup A] (φ : N →* A) (ψ : M →* N) :
              @[simp]
              theorem AddMonoidHom.comp_neg {M : Type u_9} {A : Type u_10} {B : Type u_11} [AddZeroClass M] [AddCommGroup A] [AddCommGroup B] (φ : A →+ B) (ψ : M →+ A) :
              @[simp]
              theorem MonoidHom.comp_inv {M : Type u_9} {A : Type u_10} {B : Type u_11} [MulOneClass M] [CommGroup A] [CommGroup B] (φ : A →* B) (ψ : M →* A) :
              theorem AddMonoidHom.instSubAddMonoidHomToAddZeroClassToAddMonoidToSubNegAddMonoidToAddGroup.proof_1 {M : Type u_2} {G : Type u_1} [AddZeroClass M] [AddCommGroup G] (f : M →+ G) (g : M →+ G) (a : M) (b : M) :
              f (a + b) - g (a + b) = f a - g a + (f b - g b)

              If f and g are monoid homomorphisms to an additive commutative group, then f - g is the homomorphism sending x to (f x) - (g x).

              Equations
              • One or more equations did not get rendered due to their size.

              If f and g are monoid homomorphisms to a commutative group, then f / g is the homomorphism sending x to (f x) / (g x).

              Equations
              • One or more equations did not get rendered due to their size.
              @[simp]
              theorem AddMonoidHom.sub_apply {M : Type u_9} {G : Type u_10} [AddZeroClass M] [AddCommGroup G] (f : M →+ G) (g : M →+ G) (x : M) :
              (f - g) x = f x - g x
              @[simp]
              theorem MonoidHom.div_apply {M : Type u_9} {G : Type u_10} [MulOneClass M] [CommGroup G] (f : M →* G) (g : M →* G) (x : M) :
              (f / g) x = f x / g x

              Given two monoid with zero morphisms f, g to a commutative monoid, f * g is the monoid with zero morphism sending x to f x * g x.

              Equations
              • One or more equations did not get rendered due to their size.