Documentation

Mathlib.Algebra.Algebra.Bilinear

Facts about algebras involving bilinear maps and tensor products #

We move a few basic statements about algebras out of Algebra.Algebra.Basic, in order to avoid importing LinearAlgebra.BilinearMap and LinearAlgebra.TensorProduct unnecessarily.

def LinearMap.mulLeft (R : Type u_1) {A : Type u_2} [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] (a : A) :

The multiplication on the left in an algebra is a linear map.

Note that this only assumes SMulCommClass R A A, so that it also works for R := Aᵐᵒᵖ.

When A is unital and associative, this is the same as DistribMulAction.toLinearMap R A a

Equations
Instances For
    @[simp]
    theorem LinearMap.mulLeft_apply (R : Type u_1) {A : Type u_2} [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] (a b : A) :
    (mulLeft R a) b = a * b
    @[simp]
    @[simp]
    def LinearMap.mulRight (R : Type u_1) {A : Type u_2} [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [IsScalarTower R A A] (b : A) :

    The multiplication on the right in an algebra is a linear map.

    Note that this only assumes IsScalarTower R A A, so that it also works for R := A.

    When A is unital and associative, this is the same as DistribMulAction.toLinearMap R A (MulOpposite.op b).

    Equations
    Instances For
      @[simp]
      theorem LinearMap.mulRight_apply (R : Type u_1) {A : Type u_2} [Semiring R] [NonUnitalNonAssocSemiring A] [Module R A] [IsScalarTower R A A] (a b : A) :
      (mulRight R a) b = b * a
      @[simp]
      @[simp]
      def LinearMap.mul (R : Type u_1) (A : Type u_2) [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] :

      The multiplication in a non-unital non-associative algebra is a bilinear map.

      A weaker version of this for semirings exists as AddMonoidHom.mul.

      Equations
      Instances For
        @[simp]
        theorem LinearMap.mul_apply_apply (R : Type u_1) (A : Type u_2) [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (m x2✝ : A) :
        ((mul R A) m) x2✝ = m * x2✝

        The multiplication map on a non-unital algebra, as an R-linear map from A ⊗[R] A to A.

        Equations
        Instances For

          The multiplication map on a non-unital algebra, as an R-linear map from A ⊗[R] A to A.

          Equations
          Instances For

            The multiplication map on a non-unital algebra, as an R-linear map from A ⊗[R] A to A.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def LinearMap.mulLeftRight (R : Type u_1) {A : Type u_2} [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (ab : A × A) :

              Simultaneous multiplication on the left and right is a linear map.

              Equations
              Instances For
                @[simp]
                theorem LinearMap.mul_apply' {R : Type u_1} {A : Type u_2} [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (a b : A) :
                ((mul R A) a) b = a * b
                @[simp]
                theorem LinearMap.mulLeftRight_apply {R : Type u_1} {A : Type u_2} [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (a b x : A) :
                (mulLeftRight R (a, b)) x = a * x * b
                @[simp]
                theorem LinearMap.mul'_apply {R : Type u_1} {A : Type u_2} [CommSemiring R] [NonUnitalNonAssocSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] {a b : A} :
                (mul' R A) (a ⊗ₜ[R] b) = a * b
                @[simp]
                theorem LinearMap.mulLeft_mul (R : Type u_1) (A : Type u_2) [Semiring R] [NonUnitalSemiring A] [Module R A] [SMulCommClass R A A] (a b : A) :
                mulLeft R (a * b) = mulLeft R a ∘ₗ mulLeft R b
                @[simp]
                theorem LinearMap.mulRight_mul (R : Type u_1) (A : Type u_2) [Semiring R] [NonUnitalSemiring A] [Module R A] [IsScalarTower R A A] (a b : A) :

                The multiplication in a non-unital algebra is a bilinear map.

                A weaker version of this for non-unital non-associative algebras exists as LinearMap.mul.

                Equations
                Instances For
                  @[simp]
                  theorem NonUnitalAlgHom.coe_lmul_eq_mul {R : Type u_1} {A : Type u_2} [CommSemiring R] [NonUnitalSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] :
                  (lmul R A) = (LinearMap.mul R A)
                  theorem LinearMap.commute_mulLeft_right {R : Type u_1} {A : Type u_2} [CommSemiring R] [NonUnitalSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (a b : A) :
                  theorem LinearMap.map_mul_iff {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommSemiring R] [NonUnitalSemiring A] [NonUnitalSemiring B] [Module R B] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] [SMulCommClass R B B] [IsScalarTower R B B] (f : A →ₗ[R] B) :
                  (∀ (x y : A), f (x * y) = f x * f y) (mul R A).compr₂ f = (mul R B ∘ₗ f).compl₂ f

                  A LinearMap preserves multiplication if pre- and post- composition with LinearMap.mul are equivalent. By converting the statement into an equality of LinearMaps, this lemma allows various specialized ext lemmas about →ₗ[R] to then be applied.

                  This is the LinearMap version of AddMonoidHom.map_mul_iff.

                  @[simp]
                  theorem LinearMap.mulLeft_inj {R : Type u_4} {A : Type u_5} [Semiring R] [NonAssocSemiring A] [Module R A] [SMulCommClass R A A] {a b : A} :
                  mulLeft R a = mulLeft R b a = b
                  @[simp]
                  theorem LinearMap.mulRight_inj {R : Type u_4} {A : Type u_5} [Semiring R] [NonAssocSemiring A] [Module R A] [IsScalarTower R A A] {a b : A} :
                  mulRight R a = mulRight R b a = b
                  @[simp]
                  theorem LinearMap.mulLeft_one (R : Type u_1) (A : Type u_2) [Semiring R] [Semiring A] [Module R A] [SMulCommClass R A A] :
                  @[simp]
                  theorem LinearMap.mulLeft_eq_zero_iff (R : Type u_1) (A : Type u_2) [Semiring R] [Semiring A] [Module R A] [SMulCommClass R A A] (a : A) :
                  mulLeft R a = 0 a = 0
                  @[simp]
                  theorem LinearMap.pow_mulLeft (R : Type u_1) (A : Type u_2) [Semiring R] [Semiring A] [Module R A] [SMulCommClass R A A] (a : A) (n : ) :
                  mulLeft R a ^ n = mulLeft R (a ^ n)
                  @[simp]
                  theorem LinearMap.mulRight_one (R : Type u_1) (A : Type u_2) [Semiring R] [Semiring A] [Module R A] [IsScalarTower R A A] :
                  @[simp]
                  theorem LinearMap.mulRight_eq_zero_iff (R : Type u_1) (A : Type u_2) [Semiring R] [Semiring A] [Module R A] [IsScalarTower R A A] (a : A) :
                  mulRight R a = 0 a = 0
                  @[simp]
                  theorem LinearMap.pow_mulRight (R : Type u_1) (A : Type u_2) [Semiring R] [Semiring A] [Module R A] [IsScalarTower R A A] (a : A) (n : ) :
                  mulRight R a ^ n = mulRight R (a ^ n)
                  def Algebra.lmul (R : Type u_1) (A : Type u_2) [CommSemiring R] [Semiring A] [Algebra R A] :

                  The multiplication in an algebra is an algebra homomorphism into the endomorphisms on the algebra.

                  A weaker version of this for non-unital algebras exists as NonUnitalAlgHom.lmul.

                  Equations
                  Instances For
                    @[simp]
                    theorem Algebra.coe_lmul_eq_mul {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] :
                    (lmul R A) = (LinearMap.mul R A)
                    theorem Algebra.lmul_injective {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] :
                    theorem Algebra.lmul_isUnit_iff {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] {x : A} :
                    IsUnit ((lmul R A) x) IsUnit x
                    @[simp]
                    theorem LinearMap.flip_mul {R : Type u_1} {A : Type u_2} [CommSemiring R] [NonUnitalCommSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] :
                    (mul R A).flip = mul R A
                    theorem LinearMap.mul'_comm {R : Type u_1} {A : Type u_2} [CommSemiring R] [NonUnitalCommSemiring A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A] (x : TensorProduct R A A) :
                    (mul' R A) ((TensorProduct.comm R A A) x) = (mul' R A) x