Documentation

Mathlib.Algebra.Lie.Prod

Products of Lie algebras #

This file defines the Lie algebra structure the Product of two Lie algebras

Main definitions #

Todo: Extend to further functionality from LinearMap.prod e.g. #

@[implicit_reducible]
instance LieAlgebra.Prod.instLieRing {L₁ : Type u_2} {Lā‚‚ : Type u_3} [LieRing L₁] [LieRing Lā‚‚] :
LieRing (L₁ Ɨ Lā‚‚)
@[simp]
theorem LieAlgebra.Prod.bracket_apply {L₁ : Type u_2} {Lā‚‚ : Type u_3} [LieRing L₁] [LieRing Lā‚‚] (x y : L₁ Ɨ Lā‚‚) :
@[implicit_reducible]
instance LieAlgebra.Prod.instLieAlgebra {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
LieAlgebra R (L₁ Ɨ Lā‚‚)
def LieHom.fst (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
L₁ Ɨ Lā‚‚ →ₗ⁅R⁆ L₁

The first projection of a product is a Lie algebra map.

Instances For
    def LieHom.snd (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
    L₁ Ɨ Lā‚‚ →ₗ⁅R⁆ Lā‚‚

    The second projection of a product is a Lie algebra map.

    Instances For
      def LieHom.inl (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
      L₁ →ₗ⁅R⁆ L₁ Ɨ Lā‚‚

      The left injection into a product is a Lie algebra map.

      Instances For
        def LieHom.inr (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
        Lā‚‚ →ₗ⁅R⁆ L₁ Ɨ Lā‚‚

        The right injection into a product is a Lie algebra map.

        Instances For
          @[simp]
          theorem LieHom.fst_apply {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] (x : L₁ Ɨ Lā‚‚) :
          (fst R L₁ Lā‚‚) x = x.1
          @[simp]
          theorem LieHom.snd_apply {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] (x : L₁ Ɨ Lā‚‚) :
          (snd R L₁ Lā‚‚) x = x.2
          @[simp]
          theorem LieHom.coe_fst {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
          ⇑(fst R L₁ Lā‚‚) = Prod.fst
          @[simp]
          theorem LieHom.coe_snd {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
          ⇑(snd R L₁ Lā‚‚) = Prod.snd
          theorem LieHom.fst_surjective {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
          Function.Surjective ⇑(fst R L₁ Lā‚‚)
          theorem LieHom.snd_surjective {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
          Function.Surjective ⇑(snd R L₁ Lā‚‚)
          def LieHom.prod {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] (f : L →ₗ⁅R⁆ L₁) (g : L →ₗ⁅R⁆ Lā‚‚) :
          L →ₗ⁅R⁆ L₁ Ɨ Lā‚‚

          The prod of two Lie algebra homomorphisms is a Lie algebra homomorphism.

          Instances For
            @[simp]
            theorem LieHom.prod_apply {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] (f : L →ₗ⁅R⁆ L₁) (g : L →ₗ⁅R⁆ Lā‚‚) (i : L) :
            (f.prod g) i = (f i, g i)
            theorem LieHom.coe_prod {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] (f : L →ₗ⁅R⁆ L₁) (g : L →ₗ⁅R⁆ Lā‚‚) :
            ⇑(f.prod g) = Pi.prod ⇑f ⇑g
            @[simp]
            theorem LieHom.fst_prod {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] (f : L →ₗ⁅R⁆ L₁) (g : L →ₗ⁅R⁆ Lā‚‚) :
            (fst R L₁ Lā‚‚).comp (f.prod g) = f
            @[simp]
            theorem LieHom.snd_prod {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] (f : L →ₗ⁅R⁆ L₁) (g : L →ₗ⁅R⁆ Lā‚‚) :
            (snd R L₁ Lā‚‚).comp (f.prod g) = g
            @[simp]
            theorem LieHom.pair_fst_snd {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            (fst R L₁ Lā‚‚).prod (snd R L₁ Lā‚‚) = id
            theorem LieHom.prod_comp {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] (f : L₁ →ₗ⁅R⁆ Lā‚‚) (g : L₁ →ₗ⁅R⁆ L) (h : L →ₗ⁅R⁆ L₁) :
            (f.prod g).comp h = (f.comp h).prod (g.comp h)
            theorem LieHom.inl_apply {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] (x : L₁) :
            (inl R L₁ Lā‚‚) x = (x, 0)
            theorem LieHom.inr_apply {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] (x : Lā‚‚) :
            (inr R L₁ Lā‚‚) x = (0, x)
            @[simp]
            theorem LieHom.coe_inl {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            ⇑(inl R L₁ Lā‚‚) = fun (x : L₁) => (x, 0)
            @[simp]
            theorem LieHom.coe_inr {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            ⇑(inr R L₁ Lā‚‚) = Prod.mk 0
            theorem LieHom.inl_injective {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            Function.Injective ⇑(inl R L₁ Lā‚‚)
            theorem LieHom.inr_injective {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            Function.Injective ⇑(inr R L₁ Lā‚‚)
            theorem LieHom.range_inl (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            (inl R L₁ Lā‚‚).range = LieIdeal.toLieSubalgebra R (L₁ Ɨ Lā‚‚) (snd R L₁ Lā‚‚).ker
            theorem LieHom.ker_snd (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            LieIdeal.toLieSubalgebra R (L₁ Ɨ Lā‚‚) (snd R L₁ Lā‚‚).ker = (inl R L₁ Lā‚‚).range
            theorem LieHom.range_inr (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            (inr R L₁ Lā‚‚).range = LieIdeal.toLieSubalgebra R (L₁ Ɨ Lā‚‚) (fst R L₁ Lā‚‚).ker
            theorem LieHom.ker_fst (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            LieIdeal.toLieSubalgebra R (L₁ Ɨ Lā‚‚) (fst R L₁ Lā‚‚).ker = (inr R L₁ Lā‚‚).range
            @[simp]
            theorem LieHom.fst_comp_inl (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            (fst R L₁ Lā‚‚).comp (inl R L₁ Lā‚‚) = id
            @[simp]
            theorem LieHom.snd_comp_inl (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            (snd R L₁ Lā‚‚).comp (inl R L₁ Lā‚‚) = 0
            @[simp]
            theorem LieHom.fst_comp_inr (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            (fst R L₁ Lā‚‚).comp (inr R L₁ Lā‚‚) = 0
            @[simp]
            theorem LieHom.snd_comp_inr (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            (snd R L₁ Lā‚‚).comp (inr R L₁ Lā‚‚) = id
            theorem LieHom.inl_eq_prod (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            inl R L₁ Lā‚‚ = id.prod 0
            theorem LieHom.inr_eq_prod (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] :
            inr R L₁ Lā‚‚ = prod 0 id
            theorem LieHom.prod_ext_iff (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] {f g : L₁ Ɨ Lā‚‚ →ₗ⁅R⁆ L} :
            f = g ↔ f.comp (inl R L₁ Lā‚‚) = g.comp (inl R L₁ Lā‚‚) ∧ f.comp (inr R L₁ Lā‚‚) = g.comp (inr R L₁ Lā‚‚)
            theorem LieHom.prod_ext (R : Type u_1) (L₁ : Type u_2) (Lā‚‚ : Type u_3) {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing L] [LieAlgebra R L] {f g : L₁ Ɨ Lā‚‚ →ₗ⁅R⁆ L} (hl : f.comp (inl R L₁ Lā‚‚) = g.comp (inl R L₁ Lā‚‚)) (hr : f.comp (inr R L₁ Lā‚‚) = g.comp (inr R L₁ Lā‚‚)) :
            f = g

            Split equality of Lie algebra homomorphisms from a product into Lie algebra homomorphism over each component, to allow ext to apply lemmas specific to L₁ →ₗ L and Lā‚‚ →ₗ L.

            See note [partially-applied ext lemmas].

            def LieHom.prodMap {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {Lā‚ƒ : Type u_5} {Lā‚„ : Type u_6} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing Lā‚ƒ] [LieAlgebra R Lā‚ƒ] [LieRing Lā‚„] [LieAlgebra R Lā‚„] (f : L₁ →ₗ⁅R⁆ Lā‚ƒ) (g : Lā‚‚ →ₗ⁅R⁆ Lā‚„) :
            L₁ Ɨ Lā‚‚ →ₗ⁅R⁆ Lā‚ƒ Ɨ Lā‚„

            Prod.map of two Lie algebra homomorphisms.

            Instances For
              theorem LieHom.coe_prodMap {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {Lā‚ƒ : Type u_5} {Lā‚„ : Type u_6} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing Lā‚ƒ] [LieAlgebra R Lā‚ƒ] [LieRing Lā‚„] [LieAlgebra R Lā‚„] (f : L₁ →ₗ⁅R⁆ Lā‚ƒ) (g : Lā‚‚ →ₗ⁅R⁆ Lā‚„) :
              ⇑(f.prodMap g) = Prod.map ⇑f ⇑g
              @[simp]
              theorem LieHom.prodMap_apply {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {Lā‚ƒ : Type u_5} {Lā‚„ : Type u_6} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing Lā‚ƒ] [LieAlgebra R Lā‚ƒ] [LieRing Lā‚„] [LieAlgebra R Lā‚„] (f : L₁ →ₗ⁅R⁆ Lā‚ƒ) (g : Lā‚‚ →ₗ⁅R⁆ Lā‚„) (x : L₁ Ɨ Lā‚‚) :
              (f.prodMap g) x = (f x.1, g x.2)
              @[simp]
              theorem LieHom.prodMap_id {R : Type u_1} {L₁ : Type u_2} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing L] [LieAlgebra R L] :
              @[simp]
              theorem LieHom.prodMap_one {R : Type u_1} {L₁ : Type u_2} {L : Type u_4} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing L] [LieAlgebra R L] :
              prodMap 1 1 = 1
              theorem LieHom.prodMap_comp {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {Lā‚ƒ : Type u_5} {Lā‚„ : Type u_6} {Lā‚… : Type u_7} {L₆ : Type u_8} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing Lā‚ƒ] [LieAlgebra R Lā‚ƒ] [LieRing Lā‚„] [LieAlgebra R Lā‚„] [LieRing Lā‚…] [LieAlgebra R Lā‚…] [LieRing L₆] [LieAlgebra R L₆] (f₁₂ : L₁ →ₗ⁅R⁆ Lā‚‚) (fā‚‚ā‚ƒ : Lā‚‚ →ₗ⁅R⁆ Lā‚ƒ) (g₁₂ : Lā‚„ →ₗ⁅R⁆ Lā‚…) (gā‚‚ā‚ƒ : Lā‚… →ₗ⁅R⁆ L₆) :
              (fā‚‚ā‚ƒ.prodMap gā‚‚ā‚ƒ).comp (f₁₂.prodMap g₁₂) = (fā‚‚ā‚ƒ.comp f₁₂).prodMap (gā‚‚ā‚ƒ.comp g₁₂)
              @[simp]
              theorem LieHom.prodMap_zero {R : Type u_1} {L₁ : Type u_2} {Lā‚‚ : Type u_3} {Lā‚ƒ : Type u_5} {Lā‚„ : Type u_6} [CommRing R] [LieRing L₁] [LieAlgebra R L₁] [LieRing Lā‚‚] [LieAlgebra R Lā‚‚] [LieRing Lā‚ƒ] [LieAlgebra R Lā‚ƒ] [LieRing Lā‚„] [LieAlgebra R Lā‚„] :
              prodMap 0 0 = 0