μ-slope on a surface: the weak slope data #
SlopeData is the curve case, and its own docstring says so: its field
degree_pos_of_rank_zero is false on a surface, where a skyscraper has c₁ = 0
and hence degree 0. This file supplies the structure a surface lane may
instantiate.
The single difference #
SlopeData degree_pos_of_rank_zero : … → 0 < degree E
WeakSlopeData degree_nonneg_of_rank_zero : … → 0 ≤ degree E
That 0 ≤ in place of 0 < is the whole of the weakening, and it is exactly the
skyscraper: rank zero and degree zero, so charge 0, which
semiClosedUpperHalfPlane excludes and closedUpperHalfPlane admits. The charge
is therefore a WeakStabilityFunctionOn (abelianDatum A) and not a
StabilityFunctionOn (abelianDatum A).
SlopeData.toWeakSlopeData (in Slope.lean) forgets 0 < d to 0 ≤ d, so this
is a genuine weakening with the curve case as an instance, not a second parallel
structure.
The order bridge survives #
phase_le_iff_slope_le carries a positive-rank hypothesis on both objects,
and at positive rank the charge lies in the open upper half-plane, where the
argument behaves exactly as it does in the strict theory. Nothing in that proof
touches the degree hypothesis: it goes through phaseCross and the sign of
rank E * degree F - degree E * rank F. So the order bridge is stated once here,
and SlopeData inherits it through toWeakSlopeData.
What breaks, and why that is the content rather than a defect #
SlopeCutoff.lean's chain does not survive. phase_eq_one_of_rank_zero and
mem_hnTors_of_rank_zero both derive from degree_pos_of_rank_zero: a rank-zero
object of positive degree lands on the negative real axis, so has phase one, so
lies in T β for every β < 1. With only 0 ≤ degree a degree-zero rank-zero
object — the skyscraper — has charge exactly 0, and arg 0 = 0, so it has no
phase and cannot be placed by any phase comparison.
That is not a gap to route around with an extra hypothesis. It is the
mathematical content of the weakening, and it is why the weak Harder–Narasimhan
theory (WeakAbelianHNFiltration, Weak/HarderNarasimhan/Heart.lean) exists. On
a K3 surface the skyscrapers are precisely the objects the surface case is about,
so a hypothesis excluding them would exclude the subject.
What is supplied and what is proved #
rank_nonneg and degree_nonneg_of_rank_zero are fields: they are the
geometric input, unprovable here because A is an arbitrary abelian category.
Everything else in this file is proved. Unlike SlopeData's
degree_pos_of_rank_zero, both fields do hold on a polarised surface, so the
structure has geometric inhabitants.
This file delivers the charge and the slope order on a surface. It does not
deliver a cutoff to read them against: hnTorsProperty, hnFreeProperty and
hnTorsionPair are all defined on the strict StabilityFunction, and there are
no weak counterparts yet.
Rank and degree data on an abelian category, in the form a polarised
surface supplies: rank is nonnegative, and a nonzero object of rank zero has
degree at least zero. See the module docstring — the single difference from
SlopeData is 0 ≤ where it has 0 <, and that is exactly the skyscraper.
The rank, as a hom out of the Grothendieck group.
The degree, as a hom out of the Grothendieck group. It is real-valued so that a real polarisation
ωcan supplyω·c₁; the rank stays integral because integrality of the rank, not of the degree, is what the positivity arguments downstream use.Rank is nonnegative — geometric input.
- degree_nonneg_of_rank_zero (E : A) : ¬Limits.IsZero E → self.rankHom (K₀Ab.of E) = 0 → 0 ≤ self.degreeHom (K₀Ab.of E)
A nonzero object of rank zero has nonnegative degree — geometric input, and what puts torsion sheaves on the closed nonpositive real axis rather than the strictly negative one. True on a surface, where a skyscraper has
c₁ = 0and so degree0.
Instances For
The rank of an object.
Equations
- D.rank E = D.rankHom (CategoryTheory.K₀Ab.of E)
Instances For
The degree of an object.
Equations
- D.degree E = D.degreeHom (CategoryTheory.K₀Ab.of E)
Instances For
The six formal properties #
These are K₀Ab.of_isZero, of_iso and of_shortExact composed with a hom, so
they are free of both geometric fields. The names and argument shapes match
SlopeData's.
The charge -degree + i * rank.
Instances For
A nonzero object has charge in the closed upper half-plane. Two cases,
both immediate: positive rank gives 0 < im, the first disjunct; rank zero gives
im = 0 together with re = -degree ≤ 0, the second. A skyscraper realises the
boundary case charge = 0, which is why the half-plane here must be the closed
one.
μ-slope on a surface is a weak stability function.
There is no WeakStabilityFunction A abbreviation to land in: the name
WeakStabilityFunction is already taken, by the t-structure-indexed structure in
Weak/Basic/Definitions.lean. The datum is written out instead.
Equations
- D.toWeakStabilityFunction = { Z := CategoryTheory.K₀Ab.liftOf D.charge ⋯, nonzero_mem := ⋯ }
Instances For
The slope degree / rank. It is junk at rank zero, where the classical
slope is +∞; every statement below asks for positive rank.
Instances For
The phase, normalised to (0, 1] on objects of nonzero charge. Unlike
the strict theory's StabilityFunction.phase, this is not positive on every
nonzero object: a skyscraper has charge 0 and so phase 0.
Instances For
The phase order is the slope order on objects of positive rank, on a surface exactly as on a curve.
At positive rank the charge lies in the open upper half-plane, so the degree
field plays no part: the proof runs through phaseCross, whose value
rank E * degree F - degree E * rank F is nonnegative exactly when
degree E / rank E ≤ degree F / rank F. This is the statement SlopeData
inherits through SlopeData.toWeakSlopeData.