The standard irreducible representations of sl₂ #
TauCeti/Algebra/Lie/Sl2/WeightString.lean classifies the finite-dimensional modules irreducible
over the subalgebra of an sl₂ triple and carrying a primitive vector of weight n: there is at
most one, of rank n + 1. It does not exhibit one, so the classification is so far vacuous for
all we know. This file exhibits one, for every n : ℕ at once.
The module is Ado.Sl2Std K n, a type synonym for the coordinate space Fin (n + 1) → K,
with LieAlgebra.SpecialLinear.sl (Fin 2) K acting through the standard basis (e, f, h) of
Ado.slFinTwoBasis by the explicit ladder
e · vᵢ = i · vᵢ₋₁, f · vᵢ = (n - i) · vᵢ₊₁, h · vᵢ = (n - 2i) · vᵢ
on the coordinate vectors v₀, …, vₙ. Both ladder coefficients vanish at the end of the string
they would run off, which is what makes the finite string a module; the h-eigenvalues
n, n - 2, …, -n are the weights. So v₀ is a primitive vector of weight n, and over a field
of characteristic zero the module is irreducible: a nonzero submodule contains a nonzero vector
killed by e (the raising operator is nilpotent), such a vector is a multiple of v₀, and f
carries v₀ along the whole string because the coefficients n - i are invertible.
Nothing about that construction is special to sl (Fin 2) K: an arbitrary sl₂ triple
t : IsSl2Triple h e f generating a Lie algebra L is a basis of L obeying the same relations
(Ado.basisOfIsSl2Triple), so V(n) is a module over L too. That is what
Ado.exists_isIrreducible_hasPrimitiveVectorWith records, the existence half of the
classification for an arbitrary sl₂.
Main definitions #
Ado.Sl2Std: the moduleV(n), with thesl (Fin 2) K-action supplied byAdo.Sl2Std.instLieRingModuleandAdo.Sl2Std.instLieModule.Ado.Sl2Std.raise,Ado.Sl2Std.lower,Ado.Sl2Std.diag: the three ladder operators, defined directly in coordinates.Ado.Sl2Std.rep: the representation itself, the Lie algebra homomorphismsl (Fin 2) K →ₗ⁅K⁆ Module.End K (Sl2Std K n)sending the standard basis to the three operators. That the ladder operators obey the relations isAdo.Sl2Std.lie_raise_lower,Ado.Sl2Std.lie_diag_raiseandAdo.Sl2Std.lie_diag_lower.Ado.Sl2Std.repOfIsSl2Triple: the action onV(n)of a Lie algebra generated by an arbitrarysl₂triple, sending the triple to the ladder operators. It is built from the basisAdo.basisOfIsSl2Tripleof that algebra.Ado.Sl2Std.basis: the coordinate basisv₀, …, vₙ.Ado.Sl2Std.basisVector: the coordinate basis vectors indexed byℕand extended by zero past the end of the string, for uniformly stated ladder identities.Ado.Sl2Std.lieModuleEquiv: the classification, obtained by feeding this module toAdo.lieModuleEquivOfHasPrimitiveVectorWith.
Main results #
Ado.Sl2Std.hasPrimitiveVectorWith:v₀is a primitive vector of weightnfor the standardsl₂triple ofsl (Fin 2) K.Ado.Sl2Std.finrank_eq:V(n)has rankn + 1, matching the value forced byAdo.finrank_eq_of_hasPrimitiveVectorWith.Ado.Sl2Std.eigenspace_diag,Ado.Sl2Std.finrank_eigenspace_diagandAdo.Sl2Std.eigenspace_diag_eq_bot: the weights ofV(n)are exactlyn, n - 2, …, -n, each with multiplicity one, the eigenspace ofn - 2ibeing the coordinate line ofvᵢ.Ado.Sl2Std.lower_pow_basis_zero: the weight string ofv₀in coordinates,fⁱ · v₀beingvᵢscaled byn(n - 1)⋯(n - i + 1).Ado.Sl2Std.lieModuleEquiv_apply_basisreads the classification through it.Ado.Sl2Std.isIrreducibleandAdo.Sl2Std.isIrreducible_toLieSubalgebra: over a field of characteristic zeroV(n)is irreducible, both oversl (Fin 2) Kand over the subalgebra generated by the standard triple. The second is the hypothesis the classification asks for; the two agree here because the standard triple generates the whole ofsl (Fin 2) K(Ado.toLieSubalgebra_isSl2Triple_single_eq_top).Ado.Sl2Std.raise_pow_apply,Ado.Sl2Std.lower_pow_applyandAdo.Sl2Std.diag_pow_apply: explicit coordinate action formulas for powers of the ladder and Cartan operators.Ado.Sl2Std.isNilpotent_raiseandAdo.Sl2Std.isNilpotent_lower: nilpotence of the raising and lowering operators onV(n), withAdo.Sl2Std.raise_pow_eq_zeroandAdo.Sl2Std.lower_pow_eq_zerogiving the explicit exponentn + 1.Ado.exists_isIrreducible_hasPrimitiveVectorWith: existence for an arbitrarysl₂. A Lie algebra generated by ansl₂triple has, for everyn, a finite-dimensional irreducible module with a primitive vector of weightn.
Implementation notes #
Sl2Std K n is a type synonym for Fin (n + 1) → K rather than that type itself: the
sl (Fin 2) K-action is not canonical on a plain function space, and registering it there as an
instance would give every Fin m → K a surprise Lie module structure. The synonym is @[expose]d
so that its coordinates are still directly available, and Ado.Sl2Std.add_apply,
Ado.Sl2Std.smul_apply, Ado.Sl2Std.sub_apply, Ado.Sl2Std.neg_apply,
Ado.Sl2Std.zero_apply and Ado.Sl2Std.sum_apply restate the pointwise operations that
Pi lemmas can no longer reach through it.
The three ladder operators are @[expose]d for the same reason. They are defined by a
Module.End literal, and unfolding that literal is exactly what proves their coordinate equations
Ado.Sl2Std.raise_apply, Ado.Sl2Std.lower_apply and Ado.Sl2Std.diag_apply. A public
theorem may unfold only exposed definitions, in its own module as much as anywhere else, so without
exposure those equations could not be stated as public theorems at all, and there would be no way
to use the operators. Exposure is what makes those three equations provable, not an invitation to
unfold the literal again: the operators are marked irreducible immediately after the equations,
so the equations really are the only elimination API and no consumer, here or downstream, can
depend on how the operators are built.
Ado.Sl2Std.lie_slFinTwoBasis_zero, Ado.Sl2Std.lie_slFinTwoBasis_one and
Ado.Sl2Std.lie_slFinTwoBasis_two are deliberately not @[simp]: Ado.slFinTwoBasis_zero,
Ado.slFinTwoBasis_one and Ado.slFinTwoBasis_two are themselves @[simp], so their left
hand sides are not in simp normal form and simpNF rejects them. simp reaches the ladder
operators through the coordinate equations instead, and these three are used in both directions.
The ladder coefficients are pinned as above rather than in the more common normalization
e · vᵢ = i(n + 1 - i) · vᵢ₋₁, f · vᵢ = vᵢ₊₁: the two differ by rescaling the basis, and in the
normalization used here both coefficients vanish at the relevant end of the string, so the
bracket identities need no case split at the ends of the string and hold verbatim over any
commutative ring.
The construction and the bracket identities are stated over an arbitrary commutative ring. The
Cartan eigenspaces and the kernel of the raising operator need the coefficients i and n - i
only to be distinct and nonzero, and so ask for a domain of characteristic zero; a field is used
where those coefficients are actually inverted, which is the multiplicity count and irreducibility.
Ado.Sl2Std.rep is not the special case of Ado.Sl2Std.repOfIsSl2Triple for the standard
triple of sl (Fin 2) K: the general form needs a torsion-free Lie algebra over a domain of
characteristic zero, since a triple is a basis of the algebra it generates only there, while the
action on sl (Fin 2) K is available over any commutative ring. The two are instead both built
from Ado.lieHomOfSl2Basis, which carries the bilinearity argument they share.
The module produced by Ado.exists_isIrreducible_hasPrimitiveVectorWith lives in the universe
of the coefficient field, that being where the coordinate space Kⁿ⁺¹ lives.
References #
This is the "standard irreducible V(n)" milestone of Layer 0 of
TauCetiRoadmap/RepresentationTheory/LieHighestWeight/README.md, whose sl2_exists_irreducible is
Ado.exists_isIrreducible_hasPrimitiveVectorWith.
- [J. E. Humphreys, Introduction to Lie Algebras and Representation Theory][humphreys1972], §7.2.
The relations of the standard basis of sl₂ #
The standard basis of sl (Fin 2) K obeys the relation ⁅e, f⁆ = h, in the form
Ado.lieHomOfSl2Basis asks for.
The standard basis of sl (Fin 2) K obeys the relation ⁅h, e⁆ = 2e.
The standard basis of sl (Fin 2) K obeys the relation ⁅h, f⁆ = -2f.
The standard sl₂-module V(n): the (n + 1)-dimensional module of
LieAlgebra.SpecialLinear.sl (Fin 2) K with highest weight n. It is a type synonym for the
coordinate space Fin (n + 1) → K, carrying the action of Ado.Sl2Std.rep.
Equations
- Ado.Sl2Std K n = (Fin (n + 1) → K)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Ado.Sl2Std.instModule K n = { smul := Ado.Sl2Std.instModule._aux_1 K n, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
Equations
- Ado.Sl2Std.instModuleRatOfAlgebra K n = { smul := Ado.Sl2Std.instModuleRatOfAlgebra._aux_1 K n, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
The three ladder operators #
The raising operator e of V(n), sending the coordinate vector vᵢ to i · vᵢ₋₁; in
coordinates, (e · v) i = (i + 1) * v (i + 1), and 0 at the last index. It raises the weight by
2.
Equations
Instances For
The lowering operator f of V(n), sending the coordinate vector vᵢ to
(n - i) · vᵢ₊₁; in coordinates, (f · v) i = (n - i + 1) * v (i - 1), and 0 at index 0. It
lowers the weight by 2.
Equations
Instances For
The Cartan operator h of V(n), diagonal in the coordinate basis with eigenvalue
n - 2i at index i. Its eigenvalues are the weights n, n - 2, …, -n.
Equations
Instances For
The vector space operations in coordinates #
The type synonym hides Fin (n + 1) → K from the Pi lemmas, so the pointwise operations are
restated here.
The ladder operators in coordinates #
Raising after lowering is diagonal, with eigenvalue (i + 1)(n - i) at index i. The
statement is uniform in i: at the top of the string, i = n, the raising operator reads past the
end and returns 0, and the coefficient n - i vanishes to match.
The sl₂ relation ⁅e, f⁆ = h for the ladder operators: the two diagonal operators of
Ado.Sl2Std.raise_lower_apply and Ado.Sl2Std.lower_raise_apply differ by n - 2i.
The representation #
The standard representation of sl (Fin 2) K on V(n), sending the standard basis
(e, f, h) of Ado.slFinTwoBasis to the three ladder operators, which obey the same
relations.
Equations
- Ado.Sl2Std.rep K n = Ado.lieHomOfSl2Basis (Ado.slFinTwoBasis K) ⋯ ⋯ ⋯ (Ado.Sl2Std.raise K n) (Ado.Sl2Std.lower K n) (Ado.Sl2Std.diag K n) ⋯ ⋯ ⋯
Instances For
V(n) is a Lie ring module over sl (Fin 2) K, by transport along
Ado.Sl2Std.rep.
Equations
- Ado.Sl2Std.instLieRingModule K n = LieRingModule.compLieHom (Ado.Sl2Std K n) (Ado.Sl2Std.rep K n)
V(n) is a Lie module over sl (Fin 2) K.
The coordinate basis v₀, …, vₙ of V(n), a weight basis for the Cartan operator.
Equations
- Ado.Sl2Std.basis K n = Pi.basisFun K (Fin (n + 1))
Instances For
The action of sl (Fin 2) K on V(n) is the one given by Ado.Sl2Std.rep. This is the
elimination lemma for Ado.Sl2Std.instLieRingModule, which is that action transported along
Ado.Sl2Std.rep.
The lowering operator is the endomorphism by which f acts, which is the form in which
TauCeti/Algebra/Lie/Sl2/WeightString.lean writes the weight string.
V(n) has rank n + 1, the value that
Ado.finrank_eq_of_hasPrimitiveVectorWith forces on any irreducible with a primitive vector
of weight n.
The ladder on the coordinate basis #
The lowering operator kills the lowest weight vector vₙ. This is the counterpart at the
bottom of the string of Ado.Sl2Std.raise_basis_zero, and the case i = n that
Ado.Sl2Std.lower_basis leaves out.
The lowering operator walks v₀ along the coordinate basis. After i steps the highest
weight vector has become vᵢ, scaled by the product n(n - 1)⋯(n - i + 1) of the coefficients
picked up on the way. This is the weight string of V(n), read in coordinates.
The coordinate basis indexed by the naturals #
The i-th vector of the coordinate basis of V(n), extended by zero for i past the end of
the weight string. Indexing by ℕ rather than by Fin (n + 1) lets finite sums use natural
indices without carrying bounds through every rewrite.
Equations
- Ado.Sl2Std.basisVector K n i = if h : i < n + 1 then (Ado.Sl2Std.basis K n) ⟨i, h⟩ else 0
Instances For
Past the end of the weight string the extension by zero vanishes.
The Cartan operator scales the i-th coordinate basis vector by n - 2i, uniformly in i:
past the end of the string both sides vanish.
The raising operator sends the i-th coordinate basis vector to i times the (i-1)-st, for
i inside the weight string.
The lowering operator sends the i-th coordinate basis vector to (n - i) times the
(i+1)-st, uniformly in i: past the end of the weight string both sides vanish.
v₀ is a primitive vector of weight n for the standard sl₂ triple of
sl (Fin 2) K: it is nonzero, h scales it by n, and e kills it.
Powers of the ladder and Cartan operators #
The raising operator of V(n) is nilpotent.
The lowering operator of V(n) is nilpotent.
The standard-module Cartan and ladder operators form an sl₂ triple whenever the highest
weight is nonzero in the coefficient ring.
The Cartan eigenspaces #
The Cartan eigenspaces of V(n) are the coordinate lines. The eigenspace of h for the
weight n - 2i is exactly the line spanned by vᵢ: a vector of that eigenvalue has its jth
coordinate killed by 2(i - j), which in characteristic zero vanishes only at j = i.
The weights of V(n) are exactly n, n - 2, …, -n: no other scalar is an eigenvalue of
the Cartan operator, every coordinate of a would-be eigenvector being killed. Characteristic zero
is not needed here: it is what makes those n + 1 weights distinct, not what makes them the only
ones.
The kernel of the raising operator #
The kernel of the raising operator is the highest weight line. In characteristic zero the
coefficients i + 1 are nonzero, so a vector killed by e has all coordinates but the zeroth
equal to zero.
The kernel of the lowering operator #
The kernel of the lowering operator is the lowest weight line. In characteristic zero the
coefficients n - i + 1 are nonzero until the end of the string, so a vector killed by f has all
coordinates but the last equal to zero.
The multiplicity of the weights #
Irreducibility #
The engine of irreducibility. A nonzero subspace of V(n) stable under the raising and
lowering operators is the whole of V(n): raising produces the highest weight vector, lowering
walks it along the coordinate basis, and that basis spans.
V(n) is an irreducible sl (Fin 2) K-module.
V(n) is irreducible over the subalgebra generated by the standard sl₂ triple. This is
the form of irreducibility that the classification of
TauCeti/Algebra/Lie/Sl2/WeightString.lean asks for; here the two forms agree, since the standard
triple generates all of sl (Fin 2) K
(Ado.toLieSubalgebra_isSl2Triple_single_eq_top), so
Ado.isIrreducible_of_eq_top carries the one to the other.
The classification of the finite-dimensional irreducible sl₂-modules. A Noetherian
module over sl (Fin 2) K which is irreducible over the subalgebra of the standard triple and
carries a primitive vector of weight n is equivalent to V(n). Together with
Ado.Sl2Std.hasPrimitiveVectorWith and Ado.Sl2Std.isIrreducible_toLieSubalgebra this
exhibits V(n) as the irreducible of highest weight n: existence here, uniqueness in
Ado.lieModuleEquivOfHasPrimitiveVectorWith.
Equations
Instances For
The classification read in coordinates: the ladder basis m, f • m, …, fⁿ • m of M goes to
the coordinate basis of V(n), position by position, scaled by the coefficients
n(n - 1)⋯(n - i + 1) that the lowering operator picks up on the way down
(Ado.Sl2Std.lower_pow_basis_zero).
The standard module of an arbitrary generating triple #
The standard representation of a Lie algebra generated by an sl₂ triple on V(n),
sending the triple (e, f, h) to the three ladder operators. It is built exactly as
Ado.Sl2Std.rep is, from the basis Ado.basisOfIsSl2Triple, which obeys the same
relations as the standard basis of sl (Fin 2) K.
Equations
- Ado.Sl2Std.repOfIsSl2Triple t htop n = Ado.lieHomOfSl2Basis (Ado.basisOfIsSl2Triple t htop) ⋯ ⋯ ⋯ (Ado.Sl2Std.raise K n) (Ado.Sl2Std.lower K n) (Ado.Sl2Std.diag K n) ⋯ ⋯ ⋯
Instances For
The representation of a Lie algebra generated by an sl₂ triple sends the basis of the triple
to the ladder operators.
The element e of the triple acts on V(n) as the raising operator.
The element f of the triple acts on V(n) as the lowering operator.
The element h of the triple acts on V(n) as the Cartan operator.
Existence of the standard irreducible V(n). For every n : ℕ, a Lie algebra generated by
an sl₂ triple has a finite-dimensional module, irreducible over the whole algebra, carrying a
primitive vector of weight n: it is Ado.Sl2Std K n with the action transported along
Ado.Sl2Std.repOfIsSl2Triple, which is the reusable form of this statement.
Together with Ado.finrank_eq_of_hasPrimitiveVectorWith and
Ado.lieModuleEquivOfHasPrimitiveVectorWith this pins down the modules that carry a primitive
vector of weight n and are irreducible over the subalgebra of the triple: for each n : ℕ there
is one, it has rank n + 1, and any two are equivalent. That every finite-dimensional irreducible
carries a primitive vector is a further statement, proved in
TauCeti/Algebra/Lie/Sl2/Classification.lean
(Ado.exists_hasPrimitiveVectorWith), so this is the existence half of the classification
rather than the whole of it.