Documentation

Mathlib.LinearAlgebra.QuadraticForm.TensorProduct

The quadratic form on a tensor product #

Main definitions #

noncomputable def QuadraticMap.tensorDistrib (R : Type uR) (A : Type uA) {M₁ : Type uM₁} {M₂ : Type uM₂} {N₁ : Type uN₁} {N₂ : Type uN₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [AddCommGroup N₁] [AddCommGroup N₂] [Algebra R A] [Module R M₁] [Module A M₁] [Module R N₁] [Module A N₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [SMulCommClass R A N₁] [IsScalarTower R A N₁] [Module R M₂] [Module R N₂] [Invertible 2] :
TensorProduct R (QuadraticMap A M₁ N₁) (QuadraticMap R M₂ N₂) →ₗ[A] QuadraticMap A (TensorProduct R M₁ M₂) (TensorProduct R N₁ N₂)

The tensor product of two quadratic maps injects into quadratic maps on tensor products.

Note this is heterobasic; the quadratic map on the left can take values in a module over a larger ring than the one on the right.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem QuadraticMap.tensorDistrib_tmul {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} {N₁ : Type uN₁} {N₂ : Type uN₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [AddCommGroup N₁] [AddCommGroup N₂] [Algebra R A] [Module R M₁] [Module A M₁] [Module R N₁] [Module A N₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [SMulCommClass R A N₁] [IsScalarTower R A N₁] [Module R M₂] [Module R N₂] [Invertible 2] (Q₁ : QuadraticMap A M₁ N₁) (Q₂ : QuadraticMap R M₂ N₂) (m₁ : M₁) (m₂ : M₂) :
    ((QuadraticMap.tensorDistrib R A) (Q₁ ⊗ₜ[R] Q₂)) (m₁ ⊗ₜ[R] m₂) = Q₁ m₁ ⊗ₜ[R] Q₂ m₂
    @[reducible, inline]
    noncomputable abbrev QuadraticMap.tmul {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} {N₁ : Type uN₁} {N₂ : Type uN₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [AddCommGroup N₁] [AddCommGroup N₂] [Algebra R A] [Module R M₁] [Module A M₁] [Module R N₁] [Module A N₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [SMulCommClass R A N₁] [IsScalarTower R A N₁] [Module R M₂] [Module R N₂] [Invertible 2] (Q₁ : QuadraticMap A M₁ N₁) (Q₂ : QuadraticMap R M₂ N₂) :
    QuadraticMap A (TensorProduct R M₁ M₂) (TensorProduct R N₁ N₂)

    The tensor product of two quadratic maps, a shorthand for dot notation.

    Equations
    Instances For
      noncomputable def QuadraticForm.tensorDistrib (R : Type uR) (A : Type uA) {M₁ : Type uM₁} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [Algebra R A] [Module R M₁] [Module A M₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [Module R M₂] [Invertible 2] :

      The tensor product of two quadratic forms injects into quadratic forms on tensor products.

      Note this is heterobasic; the quadratic form on the left can take values in a larger ring than the one on the right.

      Equations
      Instances For
        @[simp]
        theorem QuadraticForm.tensorDistrib_tmul {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [Algebra R A] [Module R M₁] [Module A M₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [Module R M₂] [Invertible 2] (Q₁ : QuadraticForm A M₁) (Q₂ : QuadraticForm R M₂) (m₁ : M₁) (m₂ : M₂) :
        ((QuadraticForm.tensorDistrib R A) (Q₁ ⊗ₜ[R] Q₂)) (m₁ ⊗ₜ[R] m₂) = Q₂ m₂ Q₁ m₁
        @[reducible, inline]
        noncomputable abbrev QuadraticForm.tmul {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [Algebra R A] [Module R M₁] [Module A M₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [Module R M₂] [Invertible 2] (Q₁ : QuadraticForm A M₁) (Q₂ : QuadraticForm R M₂) :

        The tensor product of two quadratic forms, a shorthand for dot notation.

        Equations
        Instances For
          theorem QuadraticForm.associated_tmul {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [Algebra R A] [Module R M₁] [Module A M₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [Module R M₂] [Invertible 2] [Invertible 2] (Q₁ : QuadraticForm A M₁) (Q₂ : QuadraticForm R M₂) :
          QuadraticMap.associated (Q₁.tmul Q₂) = LinearMap.BilinForm.tmul (QuadraticMap.associated Q₁) (QuadraticMap.associated Q₂)
          theorem QuadraticForm.polarBilin_tmul {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₁] [AddCommGroup M₂] [Algebra R A] [Module R M₁] [Module A M₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [Module R M₂] [Invertible 2] [Invertible 2] (Q₁ : QuadraticForm A M₁) (Q₂ : QuadraticForm R M₂) :
          noncomputable def QuadraticForm.baseChange {R : Type uR} (A : Type uA) {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₂] [Algebra R A] [Module R M₂] [Invertible 2] (Q : QuadraticForm R M₂) :

          The base change of a quadratic form.

          Equations
          Instances For
            @[simp]
            theorem QuadraticForm.baseChange_tmul {R : Type uR} {A : Type uA} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₂] [Algebra R A] [Module R M₂] [Invertible 2] (Q : QuadraticForm R M₂) (a : A) (m₂ : M₂) :
            (QuadraticForm.baseChange A Q) (a ⊗ₜ[R] m₂) = Q m₂ (a * a)
            theorem QuadraticForm.associated_baseChange {R : Type uR} {A : Type uA} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₂] [Algebra R A] [Module R M₂] [Invertible 2] [Invertible 2] (Q : QuadraticForm R M₂) :
            QuadraticMap.associated (QuadraticForm.baseChange A Q) = LinearMap.BilinForm.baseChange A (QuadraticMap.associated Q)
            theorem baseChange_ext {R : Type uR} {A : Type uA} {M₂ : Type uM₂} [CommRing R] [CommRing A] [AddCommGroup M₂] [Algebra R A] [Module R M₂] ⦃Q₁ Q₂ : QuadraticForm A (TensorProduct R A M₂) (h : ∀ (m : M₂), Q₁ (1 ⊗ₜ[R] m) = Q₂ (1 ⊗ₜ[R] m)) :
            Q₁ = Q₂

            If two quadratic forms from A ⊗[R] M₂ agree on elements of the form 1 ⊗ m, they are equal.

            In other words, if a base change exists for a quadratic form, it is unique.

            Note that unlike QuadraticForm.baseChange, this does not need Invertible (2 : R).