Documentation

DerivedAlgGeo.CategoryTheory.Abelian.Stability.Weak.Slope

μ-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.

  • rankHom : K₀Ab A →+ ℤ

    The rank, as a hom out of the Grothendieck group.

  • degreeHom : K₀Ab A →+ ℝ

    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_nonneg (E : A) : 0 ≤ self.rankHom (K₀Ab.of E)

    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₁ = 0 and so degree 0.

Instances For
    @[reducible, inline]

    The rank of an object.

    Equations
    Instances For
      @[reducible, inline]

      The degree of an object.

      Equations
      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.

        Equations
        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
          Instances For

            The slope degree / rank. It is junk at rank zero, where the classical slope is +∞; every statement below asks for positive rank.

            Equations
            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.

              Equations
              Instances For
                theorem CategoryTheory.Triangulated.WeakSlopeData.phase_le_iff_slope_le {A : Type u} [Category.{v, u} A] [Abelian A] (D : WeakSlopeData A) {E F : A} (hE : 0 < D.rank E) (hF : 0 < D.rank F) :
                D.phase E ≤ D.phase F ↔ D.slope E ≤ D.slope F

                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.