Documentation

LeanPool.BrillNoetherGraphs.Bananas.Jacobian.BananaJacobianLatticeReduction

Integer-lattice reduction for banana coordinates #

This file formalizes two elementary moves in the reduction algorithm used in Proposition 2.14. Subtracting the least coordinate times the diagonal makes all coordinates nonnegative and leaves a zero coordinate. Once coordinates lie in their strand intervals, an out-of-order terminal/zero pair can be swapped by a difference of two displayed strand-length relations.

The remaining existence step is the terminating iteration which alternates diagonal normalization with reducing coordinates larger than their strand length. The lemmas here record the algebraic invariants needed by that iteration without hiding them in the full kernel of the class map.

The relation lattice displayed in Proposition 2.14: it is generated by the diagonal vector and the strand-length relations based at strand zero.

Equations
Instances For

    Every displayed relation is an actual relation of the graph-level class map.

    def Bananas.bananaDiagonalNormalize {g : ℕ} (a : Fin (g + 1) → ℤ) (pivot : Fin (g + 1)) :
    Fin (g + 1) → ℤ

    Subtract the coordinate at pivot from every coordinate.

    Equations
    Instances For
      @[simp]
      theorem Bananas.bananaDiagonalNormalize_apply {g : ℕ} (a : Fin (g + 1) → ℤ) (pivot alpha : Fin (g + 1)) :
      bananaDiagonalNormalize a pivot alpha = a alpha - a pivot
      theorem Bananas.bananaDiagonalNormalize_pivot {g : ℕ} (a : Fin (g + 1) → ℤ) (pivot : Fin (g + 1)) :
      bananaDiagonalNormalize a pivot pivot = 0
      theorem Bananas.sub_bananaDiagonalNormalize {g : ℕ} (a : Fin (g + 1) → ℤ) (pivot : Fin (g + 1)) :

      Diagonal normalization changes a vector by an explicit multiple of the paper's diagonal generator.

      Hence diagonal normalization preserves the presented divisor class.

      theorem Bananas.exists_nonnegative_zero_diagonalNormalize {g : ℕ} (B : Banana g) (a : Fin (g + 1) → ℤ) :
      ∃ (b : Fin (g + 1) → ℤ), (∃ (pivot : Fin (g + 1)), b pivot = 0) ∧ (∀ (alpha : Fin (g + 1)), 0 ≤ b alpha) ∧ a - b ∈ bananaCoordinateRelations B

      Every integer coordinate vector can be made nonnegative with a zero coordinate using only the diagonal relation. This is the first normalization step in the paper's reduction algorithm.

      theorem Bananas.exists_nonnegative_zero_mod_displayedRelations {g : ℕ} (B : Banana g) (a : Fin (g + 1) → ℤ) :
      ∃ (b : Fin (g + 1) → ℤ), (∃ (pivot : Fin (g + 1)), b pivot = 0) ∧ (∀ (alpha : Fin (g + 1)), 0 ≤ b alpha) ∧ a - b ∈ bananaDisplayedRelations B

      The same first normalization step, now stated in the exact displayed relation lattice rather than the full kernel.

      def Bananas.bananaPairwiseLengthRelation {g : ℕ} (B : Banana g) (alpha beta : Fin (g + 1)) :
      Fin (g + 1) → ℤ

      The displayed relation comparing arbitrary strands alpha and beta. It is the difference of the paper's two generators based at strand zero.

      Equations
      Instances For

        Exchange a zero at beta with a terminal coordinate at alpha. Every output is a valid position because zero and the strand length are both endpoints of PathPosition.

        Equations
        Instances For
          @[simp]
          theorem Bananas.bananaLeftJustifySwap_at_full {g : ℕ} (B : Banana g) (p : (gamma : Fin (g + 1)) → Utilities.Certificate.SubdivisionGraph.Spec.PathPosition B gamma) (alpha beta : Fin (g + 1)) :
          ↑(bananaLeftJustifySwap B p alpha beta alpha) = 0
          @[simp]
          theorem Bananas.bananaLeftJustifySwap_at_zero {g : ℕ} (B : Banana g) (p : (gamma : Fin (g + 1)) → Utilities.Certificate.SubdivisionGraph.Spec.PathPosition B gamma) (alpha beta : Fin (g + 1)) (h : beta ≠ alpha) :
          ↑(bananaLeftJustifySwap B p alpha beta beta) = B.length beta
          theorem Bananas.bananaLeftJustifySwap_at_other {g : ℕ} (B : Banana g) (p : (gamma : Fin (g + 1)) → Utilities.Certificate.SubdivisionGraph.Spec.PathPosition B gamma) (alpha beta gamma : Fin (g + 1)) (hAlpha : gamma ≠ alpha) (hBeta : gamma ≠ beta) :
          bananaLeftJustifySwap B p alpha beta gamma = p gamma
          theorem Bananas.positionCoordinates_sub_leftJustifySwap {g : ℕ} (B : Banana g) (p : (gamma : Fin (g + 1)) → Utilities.Certificate.SubdivisionGraph.Spec.PathPosition B gamma) (alpha beta : Fin (g + 1)) (hFull : ↑(p alpha) = B.length alpha) (hZero : ↑(p beta) = 0) :

          A left-justification swap differs from the original coordinate vector by exactly one pairwise length relation.

          theorem Bananas.leftJustifySwap_normalization_step {g : ℕ} (B : Banana g) (p : (gamma : Fin (g + 1)) → Utilities.Certificate.SubdivisionGraph.Spec.PathPosition B gamma) (alpha beta : Fin (g + 1)) (_hOrder : beta < alpha) (hFull : ↑(p alpha) = B.length alpha) (hZero : ↑(p beta) = 0) :
          (∃ (gamma : Fin (g + 1)), ↑(bananaLeftJustifySwap B p alpha beta gamma) = 0) ∧ bananaPositionCoordinates B p - bananaPositionCoordinates B (bananaLeftJustifySwap B p alpha beta) ∈ bananaCoordinateRelations B

          The local ``move a terminal coordinate left and a zero right'' operation used in the paper preserves the presented class and retains a zero coordinate. The order hypothesis identifies precisely an out-of-order pair; it is not needed for the lattice identity itself.

          theorem Bananas.leftJustifySwap_mod_displayedRelations {g : ℕ} (B : Banana g) (p : (gamma : Fin (g + 1)) → Utilities.Certificate.SubdivisionGraph.Spec.PathPosition B gamma) (alpha beta : Fin (g + 1)) (hFull : ↑(p alpha) = B.length alpha) (hZero : ↑(p beta) = 0) :

          The same left-justification move in the exact displayed lattice.

          theorem Bananas.isPaperReduced_iff_no_leftJustify_pair {g : ℕ} (B : Banana g) (p : (gamma : Fin (g + 1)) → Utilities.Certificate.SubdivisionGraph.Spec.PathPosition B gamma) :
          IsPaperReducedPositionCoordinates B p ↔ (∃ (gamma : Fin (g + 1)), ↑(p gamma) = 0) ∧ ¬∃ (alpha : Fin (g + 1)), ∃ beta < alpha, ↑(p alpha) = B.length alpha ∧ ↑(p beta) = 0

          The ordering clause in IsPaperReducedPositionCoordinates says exactly that no zero occurs to the left of a terminal coordinate.