Documentation

LeanPool.BrillNoetherGraphs.Utilities.Subdivision.DoubledAnchorChecks

Doubled-anchor rows for an explicit-potential certificate #

Two executable rows that a marked leaf needs and an unmarked one does not:

Both are allFin/decide Booleans over Fin n, so an emitter discharges them on concrete data and the kernel replays them. Each comes with the Prop it characterizes and an iff, so a consumer may use either form.

These lived in MarkedGraphs/Certificate/DegenerateDoubledAnchor.lean until 2026-08-31. Nothing about them is specific to a genus, a row, or a marked-graph existence statement, and the generic row-proof checker under Utilities/Subdivision/ClosedRowProof/ needs them to state its marked leaf checkers, so they belong on this side of the boundary. The soundness theorems that consume them — effective_degenerateDivisor_sub_smul_one_chip, class_mult_balance_nonnegative, winnable_sub_smul_one_chip_degenerateCoreVertex — stay private, where their only consumers are.

W7 at a mark: the divisor dominates, point-independently #

The checker's W7 domination row. The core divisor carries at least chips chips at mark and nothing negative anywhere else. Written as a single uniform inequality so that the Boolean form below is one allFin.

Equations
Instances For

    Executable form of DominatesMark, for an emitter to discharge by decide on concrete data.

    Equations
    Instances For
      @[simp]
      theorem Utilities.Certificate.ExplicitPotential.CertificateData.dominatesMarkCheck_eq_true_iff {m n p : ℕ} (certificate : CertificateData m n p) (mark : Fin n) (chips : ℤ) :
      certificate.dominatesMarkCheck mark chips = true ↔ certificate.DominatesMark mark chips

      W5 at multiplicity mult #

      def Utilities.Certificate.ExplicitPotential.CertificateData.multTargetCoefficient {m n p : ℕ} (certificate : CertificateData m n p) (mult : ℤ) (anchor vertex : Fin n) :

      The target coefficient at a core vertex after removing mult chips at the anchor. At mult = 1 this is targetCoefficient, syntactically.

      Equations
      Instances For
        theorem Utilities.Certificate.ExplicitPotential.CertificateData.multTargetCoefficient_one {m n p : ℕ} (certificate : CertificateData m n p) (anchor vertex : Fin n) :
        certificate.multTargetCoefficient 1 anchor vertex = certificate.targetCoefficient anchor vertex
        def Utilities.Certificate.ExplicitPotential.CertificateData.MultResidual {m n p : ℕ} (certificate : CertificateData m n p) (mult : ℤ) (anchor : Fin n) :

        The checker's W5 with mult in place of 1. This is the whole semantic content of the (comp x …) plan: everything else — the slack discipline, the potential, the endpoint bookkeeping — is shared verbatim with the n rank anchors.

        Equations
        Instances For

          Executable form of MultResidual.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem Utilities.Certificate.ExplicitPotential.CertificateData.multResidualCheck_eq_true_iff {m n p : ℕ} (certificate : CertificateData m n p) (mult : ℤ) (anchor : Fin n) :
            certificate.multResidualCheck mult anchor = true ↔ certificate.MultResidual mult anchor