Documentation

LeanPool.JacobianDiffgeo.PeriodLattice

period-lattice-rank: the period lattice is discrete and spans (Forster §21.1–21.4) #

Unit: period-lattice-rank (docs/design/period-lattice-rank.md). The final deep analytic unit: Λ := RS.periodSubgroup X is discrete and spans Fin (genus X) → ℂ over , i.e. Λ is a real lattice of rank 2·genus X — the two facts jacobian-construction's instance ledger (Jacobian/JacobianConstruction/Basic.lean:104-121) needs to fire ChartedSpace/IsManifold/ LieAddGroup/CompactSpace (Jacobian X) unconditionally.

Route (dissection-free, per the blueprint's ⚠) #

Hypothesis-gating status (read before consuming any theorem below) #

Discreteness is the only gated content in this unit, on RS.Abel.WeakSolutionUpgradeFinset (abel-theorem's own remaining, precisely-isolated, non-external hypothesis — the external serre-duality-tails blocker has already cleared; see Jacobian/Abel.lean's docstring). Since WeakSolutionUpgradeFinset X ι needs its index type ι explicit (a universe gotcha: binding it under an inner ∀ {ι} inside a def gives it a fresh, unrelated universe — documented in Jacobian/Abel/Sufficiency.lean), this unit threads it as:

abbrev RS.DiscretenessHyp (X) [...] : Prop :=
  ∀ S : Finset (Fin (genus X)), RS.Abel.WeakSolutionUpgradeFinset X (↥S : Type)

Every theorem taking (hupgrade : DiscretenessHyp X) is gated exactly by this hypothesis and nothing else; discharges automatically, no further code, the moment a sibling pass proves DiscretenessHyp X unconditionally for every X.

Gated (take hupgrade : DiscretenessHyp X): exists_isolating_nhds_periodSubgroup, discreteTopology_periodSubgroup, periodSubgroup_topologicalClosure_eq, discreteTopology_periodSubgroup_topologicalClosure, isZLattice_periodSubgroup_topologicalClosure (also needs the closure's DiscreteTopology in scope for its very statement to elaborate — see that theorem's haveI-in-type shape), finrank_int_periodSubgroup.

Ungated: everything in Membership.lean, GenericPoints.lean, Segment.lean, FormIdentity.lean, Nondegeneracy.lean (in particular form1_eq_zero_of_re_period_eq_zero), and FullRank.lean's span_real_periodSubgroup.

Statement bank (file map) #

Final-assembly-facing discharge shape #

Once a sibling pass proves hproof : RS.DiscretenessHyp X unconditionally (for the actual X in play, or ∀ X, ...), final assembly registers exactly:

instance : DiscreteTopology (RS.periodSubgroup X).topologicalClosure :=
  RS.discreteTopology_periodSubgroup_topologicalClosure hproof
instance : IsZLattice ℝ (RS.periodSubgroup X).topologicalClosure.toIntSubmodule :=
  RS.isZLattice_periodSubgroup_topologicalClosure hproof

and jacobian-construction's Jacobian.instChartedSpace/instIsManifold/instLieAddGroup/ instCompactSpace (docs/Jacobian_challenge.lean:78-89) all fire by instance search alone — no further code in this unit or in jacobian-construction. No other unit consumes this one (a DAG leaf apart from final assembly), except that periodSubgroup_topologicalClosure_eq is also of direct interest to abel-theorem's ofCurve_inj/ofCurve_eq_of_path consumers, who want to strip .topologicalClosure from Jac₀'s defining quotient once discreteness is unconditional.