Documentation

TauCeti.Algebra.Lie.Weights.TensorProduct

Weight spaces of a tensor product of Lie modules #

Let L be a nilpotent Lie algebra acting on two modules M and N. Then L acts on M ⊗ N, and this file computes the generalized weight spaces of that action: the χ-weight space of M ⊗ N is spanned by the pure tensors m ⊗ₜ n with m of weight μ, n of weight ν and μ + ν = χ.

Two facts meet. Mathlib's LieModule.weight_vector_multiplication already says that a pure tensor of a generalized eigenvector of eigenvalue φ and one of eigenvalue ψ is a generalized eigenvector of eigenvalue φ + ψ, so the inclusion Mμ ⊗ Nν ≤ (M ⊗ N)_{μ+ν} needs no hypothesis beyond nilpotency of L, and the tensor product of two triangularizable modules is triangularizable over any commutative ring. The reverse inclusion is not a computation but a counting argument: over a field, in finite dimensions and with M and N triangularizable, the pure tensors of weight vectors already span M ⊗ N, so the coarse family indexed by χ refines the independent family of weight spaces of M ⊗ N and must agree with it termwise (iSupIndep.le_iff_eq_of_iSup_eq_top).

Main results #

Implementation notes #

The submodule spanned by the pure tensors m ⊗ₜ n with m ∈ Mμ and n ∈ Nν is written as Mathlib's Submodule.map₂ (TensorProduct.mk R M N), the submodule image of a bilinear map, rather than through a new definition: the supremum and monotonicity API the proofs need (Submodule.map₂_iSup_left, Submodule.map₂_le) is already stated for it.

The weight spaces are Mathlib's generalized weight spaces LieModule.genWeightSpace, so the statements below are read in Submodule R (M ⊗[R] N) rather than in the lattice of Lie submodules; LieSubmodule.toSubmodule mediates. Nothing here needs the weight spaces to be honest eigenspaces.

The multiplicity count dim (M ⊗ N)_χ = ∑_{μ + ν = χ} dim Mμ · dim Nν, which is what a formal character consumes, needs in addition that the family indexed by pairs (μ, ν) is independent, and is not proved here.

References #

Generalized eigenvalues add on pure tensors #

theorem TauCeti.tmul_mem_maxGenEigenspace_add {R : Type u} {L : Type v} {M : Type w} {N : Type w₁} [CommRing R] [LieRing L] [LieAlgebra R L] [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M] [AddCommGroup N] [Module R N] [LieRingModule L N] [LieModule R L N] {φ ψ : R} {x : L} {m : M} {n : N} (hm : m ((LieModule.toEnd R L M) x).maxGenEigenspace φ) (hn : n ((LieModule.toEnd R L N) x).maxGenEigenspace ψ) :

Generalized eigenvalues add on pure tensors. A pure tensor of a generalized eigenvector of x of eigenvalue φ in M and one of eigenvalue ψ in N is a generalized eigenvector of x of eigenvalue φ + ψ in M ⊗ N.

This is the elementwise form of Mathlib's LieModule.weight_vector_multiplication, applied to the identity map of M ⊗ N. Neither nilpotency of L nor any finiteness is involved.

A tensor product of triangularizable modules is triangularizable. If every element of L acts on M and on N with its generalized eigenspaces spanning, then the same holds on M ⊗ N: the pure tensors of generalized eigenvectors span M ⊗ N, and they are generalized eigenvectors by TauCeti.tmul_mem_maxGenEigenspace_add.

Weights add on pure tensors #

theorem TauCeti.tmul_mem_genWeightSpace_add {R : Type u} {L : Type v} {M : Type w} {N : Type w₁} [CommRing R] [LieRing L] [LieAlgebra R L] [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M] [AddCommGroup N] [Module R N] [LieRingModule L N] [LieModule R L N] [LieRing.IsNilpotent L] {χ ψ : LR} {m : M} {n : N} (hm : m LieModule.genWeightSpace M χ) (hn : n LieModule.genWeightSpace N ψ) :

Weights add on pure tensors. A pure tensor of a vector of generalized weight χ in M and a vector of generalized weight ψ in N has generalized weight χ + ψ in M ⊗ N.

This is TauCeti.tmul_mem_maxGenEigenspace_add, applied one element x : L at a time. No finiteness or triangularizability is involved.

theorem TauCeti.map₂_mk_genWeightSpace_le {R : Type u} {L : Type v} (M : Type w) (N : Type w₁) [CommRing R] [LieRing L] [LieAlgebra R L] [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M] [AddCommGroup N] [Module R N] [LieRingModule L N] [LieModule R L N] [LieRing.IsNilpotent L] (χ ψ : LR) :

The submodule of M ⊗ N spanned by the pure tensors of a χ-weight vector of M and a ψ-weight vector of N lies in the (χ + ψ)-weight space of M ⊗ N. This is the submodule form of TauCeti.tmul_mem_genWeightSpace_add.

The weights of a tensor product over a field #

theorem TauCeti.genWeightSpace_tensorProduct_ne_bot {K : Type u} {L : Type v} {M : Type w} {N : Type w₁} [Field K] [LieRing L] [LieAlgebra K L] [LieRing.IsNilpotent L] [AddCommGroup M] [Module K M] [LieRingModule L M] [LieModule K L M] [AddCommGroup N] [Module K N] [LieRingModule L N] [LieModule K L N] {μ ν : LK} ( : LieModule.genWeightSpace M μ ) ( : LieModule.genWeightSpace N ν ) :

A sum of weights is a weight of the tensor product. If the μ-weight space of M and the ν-weight space of N are both nonzero, then so is the (μ + ν)-weight space of M ⊗ N: a pure tensor of two nonzero vectors is nonzero over a field. This is the converse of TauCeti.exists_weight_add_eq.

The pure tensors of weight vectors span the tensor product. The weight spaces of M and of N exhaust them, and Submodule.map₂ distributes over suprema in both arguments.

theorem TauCeti.genWeightSpace_tensorProduct_eq_iSup {K : Type u} {L : Type v} {M : Type w} {N : Type w₁} [Field K] [LieRing L] [LieAlgebra K L] [LieRing.IsNilpotent L] [AddCommGroup M] [Module K M] [LieRingModule L M] [LieModule K L M] [AddCommGroup N] [Module K N] [LieRingModule L N] [LieModule K L N] [FiniteDimensional K M] [FiniteDimensional K N] [LieModule.IsTriangularizable K L M] [LieModule.IsTriangularizable K L N] (χ : LK) :
(LieModule.genWeightSpace (TensorProduct K M N) χ) = ⨆ (μ : LK), ⨆ (ν : LK), ⨆ (_ : μ + ν = χ), Submodule.map₂ (TensorProduct.mk K M N) (LieModule.genWeightSpace M μ) (LieModule.genWeightSpace N ν)

The weight-space decomposition of a tensor product. The generalized χ-weight space of M ⊗ N is the supremum, over the pairs of weights (μ, ν) with μ + ν = χ, of the submodules spanned by the pure tensors m ⊗ₜ n with m of weight μ and n of weight ν.

One inclusion is TauCeti.map₂_mk_genWeightSpace_le. For the other, the family on the right has supremum , and it lies inside the independent family of weight spaces of M ⊗ N, so iSupIndep.le_iff_eq_of_iSup_eq_top makes the two families agree term by term.

theorem TauCeti.exists_weight_add_eq {K : Type u} {L : Type v} {M : Type w} {N : Type w₁} [Field K] [LieRing L] [LieAlgebra K L] [LieRing.IsNilpotent L] [AddCommGroup M] [Module K M] [LieRingModule L M] [LieModule K L M] [AddCommGroup N] [Module K N] [LieRingModule L N] [LieModule K L N] [FiniteDimensional K M] [FiniteDimensional K N] [LieModule.IsTriangularizable K L M] [LieModule.IsTriangularizable K L N] (χ : LieModule.Weight K L (TensorProduct K M N)) :
∃ (μ : LieModule.Weight K L M) (ν : LieModule.Weight K L N), μ + ν = χ

Every weight of a tensor product is a sum of weights. If χ is a weight of M ⊗ N, then χ = μ + ν for a weight μ of M and a weight ν of N. This is the converse of TauCeti.genWeightSpace_tensorProduct_ne_bot.

If no such pair existed then every term of the decomposition TauCeti.genWeightSpace_tensorProduct_eq_iSup of the χ-weight space would have a zero factor, so that weight space would be zero.

A tensor product of finite-dimensional triangularizable modules with linear weights again has linear weights. Every weight of the tensor product is a sum of weights of the two factors.