Positive and negative roots #
This file packages Mathlib's positivity predicate for a root-pairing base as the sets of positive and negative root indices. It records their partition, their exchange under root negation, and the fact that a simple reflection permutes the positive roots other than its own simple root.
A base b of a root pairing P is simultaneously a base b.flip of the flipped pairing P.flip,
so the same positivity predicate measures both a root against the simple roots and the
corresponding coroot against the simple coroots. The last part of the file proves that the two
measurements agree, so that a base and its flip have the same positive roots and the coroot of a
positive root is a nonnegative integer combination of the simple coroots.
Main definitions #
Ado.posRootsis the set of positive roots relative to a base.Ado.negRootsis its complementary set of negative roots.Ado.posRootsFinsetandAdo.negRootsFinsetare the same two sets as finsets, for a finite root index type, so that they can be summed over.Ado.posRootConeis the additive monoidQ⁺of nonnegative integer combinations of the simple roots.
Main results #
Ado.image_reflectionPerm_self_posRootssays root negation exchanges the two sets.Ado.ncard_posRoots_eq_natCard_div_twosays that, for a finite root index type, exactly half of the roots are positive, andAdo.posRootsFinset_eq_filter,Ado.card_posRootsFinsetreadAdo.posRootsFinsetas the filter of the positivity predicate and its cardinality as the cardinality ofAdo.posRoots.Ado.add_mem_posRootsandAdo.add_mem_negRootssay each of the two sets is closed under those sums of its members that are again roots, andAdo.reflectionPerm_self_notMem_posRoots,Ado.reflectionPerm_self_notMem_negRootssay neither contains a root together with its negative.Ado.bijOn_reflectionPerm_posRoots_diff_singletonsays a simple reflection permutes the positive roots other than its own simple root, andAdo.sum_posRootsFinset_erase_comp_reflectionPermis the resulting reindexing rule for sums over those roots.Ado.mem_support_iff_isPos_and_forall_ne_addsays the simple roots are exactly the indecomposable positive roots: those that are not the sum of two positive roots.RootPairing.Base.isPos_flip_iffsays a root is positive for a base exactly when its coroot is positive for that base, andAdo.posRoots_fliprestates it for the sets.Ado.mem_posRoots_iff_root_mem_posRootConesays the positive roots are exactly the roots lying inQ⁺,Ado.isPointed_posRootConesaysQ⁺is pointed,Ado.eq_zero_of_add_eq_zero_of_mem_posRootConeis the same fact as a cancellation rule,Ado.root_add_ne_zero_of_mem_posRoots_of_mem_posRootConespecializes that to a positive root added to a member ofQ⁺, andAdo.sum_root_ne_zero_of_mem_posRootsdeduces that a nonempty sum of positive roots is nonzero.Ado.eq_of_nsmul_root_sub_root_mem_posRootConesays that the only positive root lying below a natural multiple of a simple root, in the order defined byQ⁺, is that simple root itself.Ado.one_le_height_of_mem_posRootssays every positive root has height at least one, andAdo.height_neg_of_mem_negRootssays every negative root has negative height.Ado.heightLinearMap_sum_nsmul_rootcomputes the height of a nonnegative integer combination of the simple roots, whenceAdo.exists_natCast_eq_heightLinearMap_of_mem_posRootCone, that the height functional takes natural-number values onQ⁺, andAdo.eq_zero_of_mem_posRootCone_of_heightLinearMap_eq_zero, that zero is the only member ofQ⁺of height zero.Ado.exists_intCast_eq_coroot'_of_mem_posRootConesays a coroot functional takes integer values onQ⁺.Ado.exists_coroot_eq_sum_nat_of_mem_posRootssays the coroot of a positive root is a nonnegative integer combination of the simple coroots, andAdo.exists_coroot'_eq_sum_nat_of_mem_posRootsrestates that on the coroot functionals.
Implementation notes #
The indecomposability characterisation is stated with root vectors rather than with an index-level
sum, matching Mathlib's RootPairing.Base.height_add and RootPairing.Base.IsPos.add, whose
hypothesis is an equation between root vectors: an index-level statement would need a chosen index
for the sum, which need not be unique for a non-reduced pairing.
References #
This file implements the “Positive and negative roots” item in Layer 1 of
TauCetiRoadmap/RepresentationTheory/RootSystems/README.md, following the target signatures in
TauCetiRoadmap/RepresentationTheory/RootSystems/Suggested.lean. The coroot-side positivity at the
end of the file is the prerequisite that the fundamental-domain item of Layer 4 consumes; that
argument is the one in J. E. Humphreys, Introduction to Lie Algebras and Representation Theory,
GTM 9, Ch. III, §10. The decomposition half of Ado.mem_support_iff_isPos_and_forall_ne_add is
the step that Mathlib currently performs only inside the proof of
RootPairing.Base.IsPos.induction_on_add, isolated here as a statement of its own.
Root negation is an involution of the root index type: it is the InvolutiveNeg supplied by
RootPairing.indexNeg, written through the self-reflection permutation.
The positive roots relative to a base.
Instances For
The negative roots relative to a base.
Instances For
Membership in the set of positive roots.
A positive root has height at least one.
Membership in the set of negative roots.
A negative root has negative height.
The negative roots are the complement of the positive roots.
The negative roots are the complement of the positive roots.
No root is both positive and negative.
Every root is either positive or negative.
Every root is either positive or negative.
A root is negative exactly when it is not positive.
The positive roots form a finite set when the root index type is finite.
The negative roots form a finite set when the root index type is finite.
The positive roots of a base, as a finset, so that they can be summed over.
Equations
- Ado.posRootsFinset P b = ⋯.toFinset
Instances For
The negative roots of a base, as a finset, so that they can be summed over.
Equations
- Ado.negRootsFinset P b = ⋯.toFinset
Instances For
The finset of positive roots is the filter of the positivity predicate, which is the shape a
consumer that counts positive roots by Finset.filter meets them in.
Counting the positive roots as a finset agrees with counting them as a set.
Every simple root is positive.
A nonempty root index type has a positive root.
The negative of a positive root is negative.
The self-reflection of a root is positive exactly when the root is negative.
The negative of a negative root is positive.
Neither set contains a root together with its negative.
Neither set contains a root together with its negative.
The positive roots are closed under addition: a root that is the sum of two positive roots is positive, because heights add.
The negative roots are closed under addition: a root that is the sum of two negative roots is negative.
A positive root is a nonnegative natural-number combination of simple roots.
The cone of nonnegative combinations of the simple roots #
The positive root cone Q⁺ of a base: the additive submonoid generated by the simple
roots, that is the set of nonnegative integer combinations of them.
Equations
- Ado.posRootCone P b = AddSubmonoid.closure (⇑P.root '' ↑b.support)
Instances For
Membership in the positive root cone, spelled out as a nonnegative integer combination of the simple roots.
Every positive root lies in the positive root cone.
A root is positive exactly when it lies in the positive root cone.
The height of a nonnegative integer combination of the simple roots is the total number of simple roots occurring in it, every simple root having height one.
The height functional takes natural-number values on the positive root cone: the height of a nonnegative integer combination of simple roots is the total number of simple roots in it, every simple root having height one. This is what makes the height of a cone member a legitimate induction parameter.
The only member of the positive root cone of height zero is zero. The height counts the simple roots occurring in a member, so a member of height zero has no summand at all.
A coroot functional takes integer values on the positive root cone: a nonnegative integer combination of the simple roots pairs with a coroot to the matching combination of Cartan integers.
The positive root cone is pointed: the only member whose negative is again a member is zero. Expanding a member and its negative in the simple roots, the total coefficient vector is nonnegative and sums to zero and, the simple roots being linearly independent, must vanish, so each coefficient vector does.
This is what makes the cone an order on weights: μ ≤ λ defined by λ - μ ∈ Q⁺ is antisymmetric,
and a weight cannot be reached from itself through a nonempty chain of positive roots.
A member of the positive root cone that is cancelled by another member is zero: pointedness of the cone, in the additive form the weight order uses.
A positive root is never cancelled inside the positive root cone. A positive root is a
nonzero member of the cone, so Ado.eq_zero_of_add_eq_zero_of_mem_posRootCone forbids it.
A nonempty sum of positive roots is nonzero. Splitting off one summand, the rest is a nonnegative integer combination of the simple roots, and a positive root is never cancelled inside that cone.
This is the integral form of the statement that the positive roots lie in an open half space. It is what rules out a cycle of weights each obtained from the previous one by adding a positive root, and so is the reason a maximal weight exists.
A simple root dominates only itself. If a natural multiple of a simple root αᵢ exceeds a
positive root αⱼ inside the cone Q⁺, then αⱼ is αᵢ.
Expanding both αⱼ and the difference in the simple roots and comparing coefficients, which is
legitimate because the simple roots are linearly independent, leaves αⱼ a natural multiple of
αᵢ; the multiple is 1 because a base contains no proper multiple of one of its members
(RootPairing.Base.eq_one_or_neg_one_of_mem_support_of_smul_mem).
This is the combinatorial input to the integrability relation of a highest weight module: it is
what confines a positive root vector raising the weight lam - (n + 1) αᵢ to the single direction
αᵢ.
Root negation exchanges positive and negative roots.
Root negation exchanges negative and positive roots.
The number of positive roots #
A root pairing has equally many positive and negative roots. Root negation gives the bijection between the two sets.
The numbers of positive and negative roots add up to the total number of roots.
Twice the number of positive roots is the total number of roots.
Exactly half of a finite root index type consists of positive roots.
Reflecting a positive root in a simple root never produces that simple root: the only root
sent to a simple root αᵢ by sᵢ is -αᵢ, which is negative.
The simple roots are the indecomposable positive roots #
A simple root is not the sum of two positive roots.
A positive root that is not simple is a positive root plus a simple root.
The simple roots are exactly the indecomposable positive roots. This is the description of the base that mentions only the additive structure of the positive roots, so it is the one that transports along an additive bijection of the positive roots.
A simple reflection preserves the set of positive roots other than its own simple root. Both
directions follow from the forward implication because P.reflectionPerm i is an involution.
A simple reflection permutes the positive roots other than its own simple root.
The image form of bijOn_reflectionPerm_posRoots_diff_singleton: a simple reflection maps the
positive roots other than its own simple root onto themselves.
The finset form of reflectionPerm_mem_posRoots_diff_singleton_iff.
Reindexing along a simple reflection leaves a sum over the other positive roots unchanged.
Since sᵢ permutes the positive roots other than αᵢ, summing any function over them is
insensitive to precomposition with sᵢ.
A simple reflection preserves and reflects positivity of every root other than its own simple root and the negative of that simple root.
A root is positive for a base exactly when its coroot is positive for that base.
A base and its flip have the same positive roots.
A base and its flip have the same negative roots.
The coroot of a positive root is a nonnegative integer combination of the simple coroots.
A positive coroot functional is a nonnegative integer combination of the simple coroot functionals, with at least one simple coroot genuinely occurring.