Documentation

LeanPool.JacobianDiffgeo.JacobianConstruction.Basic

Jac₀, Jacobian, and the challenge instance assembly (CC9, §2–§9) #

Unit: jacobian-construction. This is the unit's centerpiece file: it defines the challenge's Jacobian type exactly at its root-level signature (docs/Jacobian_challenge.lean:58-62) via the ULift shell (§2) around the honest Type 0 quotient Jac₀ (§3), and assembles every instance that is available now (no hypotheses beyond the standing Riemann-surface ones) plus every instance that is available given period-lattice-rank's discreteness/full-rank hooks — see the LEDGER at the bottom of this file's docstring.

Instance ledger #

InstanceAvailableHypothesis
AddCommGroup (Jacobian X)nownone
TopologicalSpace (Jacobian X)nownone
T2Space (Jacobian X)now, every genus incl. g = 0 (§3, the closure trick)none
ChartedSpace (Fin (genus X) → ℂ) (Jacobian X)gated`[DiscreteTopology (periodSubgroup
X).topologicalClosure]`
IsManifold 𝓘(ℂ, Fin (genus X) → ℂ) ω (Jacobian X)gatedsame as above
LieAddGroup 𝓘(ℂ, Fin (genus X) → ℂ) ω (Jacobian X)gatedsame as above
CompactSpace (Jacobian X)gatedthe above plus `[IsZLattice ℝ (periodSubgroup
X).topologicalClosure.toIntSubmodule]`

The gated instances are genuine (Prop-valued or data) instances with typeclass hypotheses — not sorries. Once period-lattice-rank registers DiscreteTopology (periodSubgroup X).topologicalClosure (and, for compactness, the IsZLattice full-rank fact) as instances for the actual period subgroup of a given X, Lean's instance search discharges all four automatically; nothing further needs to change here.

@[reducible, inline]

The Type 0 core of the Jacobian: the honest quotient construction, before the ULift shell. An abbrev so every Torus.lean fact for V ⧸ L (instantiated at V := Fin (genus X) → ℂ, L := (periodSubgroup X).topologicalClosure) applies to it directly, via instance search / definitional unfolding, with no extra glue code.

Equations
Instances For

    Bridge between AddSubgroup-level and Submodule-level discreteness (needed since Torus.compactSpace_torus is stated for a SubmoduleV, while the ChartedSpace/IsManifold/ LieAddGroup hooks are stated for the AddSubgroup directly): the underlying carrier sets agree (AddSubgroup.coe_toIntSubmodule), so the two subtypes are homeomorphic.

    @[reducible, inline]

    The Jacobian of a compact Riemann surface (docs/Jacobian_challenge.lean:58-62). Defined via the ULift shell around RS.Jac₀ X, matching the challenge's universe-polymorphic signature (Jacobian must have type Type u for every u, but the honest quotient construction only ever lives in Type 0 — see this unit's design doc §2). An abbrev, for the same instance-transfer reason as RS.Jac₀.

    Equations
    Instances For

      Unconditional instances (§3): no discreteness or rank input needed at all #

      Hausdorff for every X, including genus X = 0 — the closure trick (§3), no discreteness needed.

      Gated instances (§4–§6): hooks for period-lattice-rank #