Documentation

LeanPool.BrillNoetherGraphs.Utilities.Subdivision.DegenerateRankOne

From a closed-orthant explicit-potential record to rank one #

This is the DegSpec/ValidClosed counterpart of the assembly half of Certificate/ExplicitPotentialRankOne.lean: the divisor extended over the contracted subdivision, the anchor firing script, effectivity of the removed-chip residual, core reachability, and the rank-one conclusion under a strong-separator certificate. Nothing existing is modified; subdivisionSpec, subdivisionDivisor and bnExists_of_valid_of_strongSeparator keep working verbatim on the open orthant.

The two shape changes a consumer sees #

  1. degenerateDivisor, not subdivisionDivisor. DegSpec.coreVertex is not injective, so a Fin n-indexed divisor is ill-posed on a face: two named core vertices can be the same graph vertex. The extended divisor therefore gives a class the sum of its members' chips, which is exactly what keeps CFDiv.degree equal to the checked core degree (deg_degenerateDivisor).

  2. Class-level endpoint bookkeeping. lowerEndpointContribution_le_endpointContribution is false vertex by vertex at a face: on a collapsed slot the certificate bounds α_e ≤ step and β_e ≤ -step are unavailable (they need a unit step). What is true, and what the Laplacian actually needs, is the inequality at a contracted class, where the collapsed slot contributes α_e + β_e ≤ 0 on the left and exactly 0 on the right because its two endpoint terms are equal and opposite. That is classLowerEndpointContribution_le_classEndpointContribution, and class_core_balance_nonnegative is the corresponding balance. On the interior the class is a singleton and both collapse to the existing statements.

The one input the certificate does not determine #

DegSpec.RepInvariant — that the anchor potential is constant on each contracted class. ValidClosed gives it along each individual collapsed slot for free (potential_eq_of_segment_eval_zero); what it cannot give is that rep merges only vertices joined by chains of collapsed slots, because rep names the face and the certificate does not. ZeroReach and repInvariant_evaluatedPotential_of_zeroReach below discharge it from such a chain; that is the exact join with the contraction census.

Fibre regrouping for an arbitrary endpoint map #

Utilities.Certificate.DegenerateSpec.DegSpec.sum_tail_class / sum_head_class are the same statement for d.core.tail / d.core.head; this is the version used by the certificate-level bookkeeping, where no DegSpec is in scope yet.

theorem Utilities.Certificate.sum_endpointIndicator_class {n p : ℕ} (rep : Fin n → Fin n) (endpoint : Fin p → Fin n) (r : Fin n) (F : Fin p → ℤ) :
(∑ e : Fin p, if rep (endpoint e) = rep r then F e else 0) = ∑ v : Fin n with rep v = rep r, ∑ e : Fin p, if endpoint e = v then F e else 0

Endpoint bookkeeping at a contracted class #

Conservative endpoint bookkeeping, summed over a contracted class.

Equations
Instances For
    def Utilities.Certificate.ExplicitPotential.CertificateData.classEndpointContribution {m n p : ℕ} (certificate : CertificateData m n p) (rep : Fin n → Fin n) (anchor : Fin n) (point : Fin m → ℤ) (r : Fin n) :

    Actual interpolated endpoint contribution, summed over a contracted class.

    Equations
    Instances For
      def Utilities.Certificate.ExplicitPotential.CertificateData.classTargetCoefficient {m n p : ℕ} (certificate : CertificateData m n p) (rep : Fin n → Fin n) (anchor r : Fin n) :

      Target coefficient after removing the anchor chip, summed over a contracted class.

      Equations
      Instances For
        theorem Utilities.Certificate.ExplicitPotential.CertificateData.classLowerEndpointContribution_eq {m n p : ℕ} (certificate : CertificateData m n p) (rep : Fin n → Fin n) (anchor r : Fin n) :
        certificate.classLowerEndpointContribution rep anchor r = ∑ e : Fin p, ((if rep (certificate.core.tail e) = rep r then (certificate.witness anchor).alpha e else 0) + if rep (certificate.core.head e) = rep r then (certificate.witness anchor).beta e else 0)
        theorem Utilities.Certificate.ExplicitPotential.CertificateData.classEndpointContribution_eq {m n p : ℕ} (certificate : CertificateData m n p) (rep : Fin n → Fin n) (anchor : Fin n) (point : Fin m → ℤ) (r : Fin n) :
        certificate.classEndpointContribution rep anchor point r = ∑ e : Fin p, ((if rep (certificate.core.tail e) = rep r then SubdivisionArithmetic.step (certificate.segmentNat point e) (certificate.riseValue anchor point e) 0 else 0) + if rep (certificate.core.head e) = rep r then -SubdivisionArithmetic.step (certificate.segmentNat point e) (certificate.riseValue anchor point e) (certificate.segmentNat point e - 1) else 0)
        theorem Utilities.Certificate.ExplicitPotential.CertificateData.classTargetCoefficient_eq {m n p : ℕ} (certificate : CertificateData m n p) (rep : Fin n → Fin n) (anchor r : Fin n) :
        certificate.classTargetCoefficient rep anchor r = ∑ v : Fin n with rep v = rep r, certificate.divisor v - if rep anchor = rep r then 1 else 0
        theorem Utilities.Certificate.ExplicitPotential.CertificateData.classLowerEndpointContribution_le_classEndpointContribution {m n p : ℕ} (certificate : CertificateData m n p) {degree : ℤ} (hValid : certificate.ValidClosed degree) (point : Fin m → ℤ) (hCone : FormsHold certificate.cone point) (rep : Fin n → Fin n) (hRepZero : ∀ (e : Fin p), certificate.segmentNat point e = 0 → rep (certificate.core.tail e) = rep (certificate.core.head e)) (anchor r : Fin n) :
        certificate.classLowerEndpointContribution rep anchor r ≤ certificate.classEndpointContribution rep anchor point r

        Gap 2, the comparison. The conservative endpoint bound is still conservative at a contracted class. On a surviving slot this is the existing interpolated_endpoint_bounds argument, recovered from ValidClosed by interpolated_endpoint_bounds_of_validClosed. On a collapsed slot the actual contribution is exactly 0, because the two endpoint terms lie in the same class and are equal and opposite, while the bound contributes α_e + β_e ≤ 0 — Valid's third conjunct, unchanged.

        theorem Utilities.Certificate.ExplicitPotential.CertificateData.class_core_balance_nonnegative {m n p : ℕ} (certificate : CertificateData m n p) {degree : ℤ} (hValid : certificate.ValidClosed degree) (point : Fin m → ℤ) (hCone : FormsHold certificate.cone point) (rep : Fin n → Fin n) (hRepZero : ∀ (e : Fin p), certificate.segmentNat point e = 0 → rep (certificate.core.tail e) = rep (certificate.core.head e)) (anchor r : Fin n) :
        0 ≤ certificate.classTargetCoefficient rep anchor r + certificate.classEndpointContribution rep anchor point r

        Gap 2, the balance. At every contracted class the target plus the actual interpolated contributions is non-negative.

        theorem Utilities.Certificate.ExplicitPotential.CertificateData.classEndpointContribution_eq_of_rep_id {m n p : ℕ} (certificate : CertificateData m n p) (rep : Fin n → Fin n) (hId : ∀ (v : Fin n), rep v = v) (anchor : Fin n) (point : Fin m → ℤ) (r : Fin n) :
        certificate.classEndpointContribution rep anchor point r = certificate.endpointContribution anchor point r

        On the interior the class is a singleton, so the class-level statements are literally the existing per-vertex ones.

        Rep-invariance of the anchor potential #

        def Utilities.Certificate.ExplicitPotential.CertificateData.ZeroReach {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) :
        Fin n → Fin n → Prop

        Joined by a chain of collapsed slots. This is the relation a contraction census decides; rep is meant to be its component map.

        Equations
        Instances For
          theorem Utilities.Certificate.ExplicitPotential.CertificateData.segment_eval_eq_zero_of_segmentNat_eq_zero {m n p : ℕ} (certificate : CertificateData m n p) {degree : ℤ} (hValid : certificate.ValidClosed degree) (point : Fin m → ℤ) (hCone : FormsHold certificate.cone point) {e : Fin p} (hzero : certificate.segmentNat point e = 0) :
          AffineCover.AffineForm.eval (certificate.segment e) point = 0
          theorem Utilities.Certificate.ExplicitPotential.CertificateData.evaluatedPotential_eq_of_zeroReach {m n p : ℕ} (certificate : CertificateData m n p) {degree : ℤ} (hValid : certificate.ValidClosed degree) (point : Fin m → ℤ) (hCone : FormsHold certificate.cone point) (anchor : Fin n) {u v : Fin n} (hReach : certificate.ZeroReach point u v) :
          certificate.evaluatedPotential anchor point u = certificate.evaluatedPotential anchor point v

          The face named by a contraction datum #

          theorem Utilities.Certificate.ExplicitPotential.CertificateData.repInvariant_evaluatedPotential_of_zeroReach {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) {degree : ℤ} (hValid : certificate.ValidClosed degree) (hCone : FormsHold certificate.cone point) (anchor : Fin n) (hReach : ∀ (v : Fin n), certificate.ZeroReach point v (rep v)) :
          (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).RepInvariant (certificate.evaluatedPotential anchor point)

          The rep-invariance obligation, discharged from a chain of collapsed slots. This is the exact join with a contraction census: the census produces rep together with the reachability witness.

          theorem Utilities.Certificate.ExplicitPotential.CertificateData.repInvariant_evaluatedPotential_of_pos {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) (hpos : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge) (anchor : Fin n) :
          (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).RepInvariant (certificate.evaluatedPotential anchor point)

          On the interior of the orthant the obligation is free.

          theorem Utilities.Certificate.ExplicitPotential.CertificateData.coreRise_evaluatedPotential_degenerate {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) (anchor : Fin n) (edge : Fin p) :
          (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).coreRise (certificate.evaluatedPotential anchor point) edge = certificate.riseValue anchor point edge

          The degenerate rise is the certificate's numerical rise, verbatim: no rep enters DegSpec.coreRise.

          The extended divisor #

          The atlas divisor, pushed to the contracted core: a class carries the total of its members' chips, and every interior vertex carries none.

          This is the shape change forced by non-injectivity of coreVertex.

          Equations
          Instances For
            @[simp]
            theorem Utilities.Certificate.ExplicitPotential.CertificateData.degenerateDivisor_coreVertex {m n p : ℕ} (certificate : CertificateData m n p) (d : DegenerateSpec.DegSpec n p) (r : Fin n) :
            certificate.degenerateDivisor d (d.coreVertex r) = ∑ v : Fin n with d.rep v = d.rep r, certificate.divisor v
            theorem Utilities.Certificate.ExplicitPotential.CertificateData.degenerateDivisor_coreVertex_of_pos {m n p : ℕ} (certificate : CertificateData m n p) (d : DegenerateSpec.DegSpec n p) (hpos : ∀ (e : Fin p), 0 < d.length e) (r : Fin n) :
            certificate.degenerateDivisor d (d.coreVertex r) = certificate.divisor r

            Agreement with the strictly positive layer: on the interior each class is a singleton, so the extended divisor is literally subdivisionDivisor's value.

            The extended divisor has exactly the degree checked on the core: no chip is lost when two named core vertices are merged.

            The anchor script and its residual #

            def Utilities.Certificate.ExplicitPotential.CertificateData.degenerateAnchorScript {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) (anchor : Fin n) :
            firingScript (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).graph

            The firing script attached to a core anchor, assembled on the contracted subdivision by canonical integral interpolation.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem Utilities.Certificate.ExplicitPotential.CertificateData.prin_degenerateAnchorScript_coreVertex {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) (anchor r : Fin n) (hInv : (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).RepInvariant (certificate.evaluatedPotential anchor point)) :
              (prin (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).graph) (certificate.degenerateAnchorScript point core_nonempty rep rep_idem rep_zero rep_loopless forest anchor) ((certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).coreVertex r) = certificate.classEndpointContribution rep anchor point r

              The Laplacian of the anchor script at a contracted class is the class-level endpoint contribution. This is the bridge between the graph layer and the class-level bookkeeping of gap 2.

              theorem Utilities.Certificate.ExplicitPotential.CertificateData.effective_degenerateAnchorResidual {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) {degree : ℤ} (hValid : certificate.ValidClosed degree) (hCone : FormsHold certificate.cone point) (anchor : Fin n) (hInv : (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).RepInvariant (certificate.evaluatedPotential anchor point)) :
              effective (certificate.degenerateDivisor (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest) - oneChip ((certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).coreVertex anchor) + (prin (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).graph) (certificate.degenerateAnchorScript point core_nonempty rep rep_idem rep_zero rep_loopless forest anchor))

              The rank-one input. The removed-chip residual of a checked closed-orthant record is effective at every vertex of the contracted subdivision.

              theorem Utilities.Certificate.ExplicitPotential.CertificateData.reaches_degenerateCoreVertex {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) {degree : ℤ} (hValid : certificate.ValidClosed degree) (hCone : FormsHold certificate.cone point) (anchor : Fin n) (hInv : (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).RepInvariant (certificate.evaluatedPotential anchor point)) :
              StrongSeparator.Reaches (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).graph (certificate.degenerateDivisor (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest)) ((certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).coreVertex anchor)

              Every core class is reached by the divisor assembled from a checked closed-orthant record.

              The embedded core classes #

              The embedded core classes of a contracted subdivision. coreVertex is not injective, so this image can be strictly smaller than n.

              Equations
              Instances For

                End-to-end local soundness on the closed orthant #

                theorem Utilities.Certificate.ExplicitPotential.CertificateData.bnExists_of_validClosed_of_strongSeparator {m n p : ℕ} (certificate : CertificateData m n p) (point : Fin m → ℤ) (core_nonempty : 0 < n) (rep : Fin n → Fin n) (rep_idem : ∀ (v : Fin n), rep (rep v) = rep v) (rep_zero : ∀ (edge : Fin p), certificate.segmentNat point edge = 0 → rep (certificate.core.tail edge) = rep (certificate.core.head edge)) (rep_loopless : ∀ (edge : Fin p), 0 < certificate.segmentNat point edge → rep (certificate.core.tail edge) ≠ rep (certificate.core.head edge)) (forest : (Finset.image rep Finset.univ).card + {edge : Fin p | certificate.segmentNat point edge = 0}.card = n) (degree : ℤ) (hValid : certificate.ValidClosed degree) (hCone : FormsHold certificate.cone point) (hInv : ∀ (anchor : Fin n), (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).RepInvariant (certificate.evaluatedPotential anchor point)) (hConnected : graphConnected (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).graph) (hSeparator : StrongSeparator.StrongSeparatorCertificate (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).graph (degenerateCoreVertices (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest))) :
                BNExists (certificate.degenerateSpec point core_nonempty rep rep_idem rep_zero rep_loopless forest).graph 1 degree

                The closed-orthant counterpart of bnExists_of_valid_of_strongSeparator.

                An accepted closed-orthant record, at one integral length point together with a contraction datum naming a face, proves BNExists for the contracted subdivision — which, by DegSpec.Contraction.laplacianEquiv, is the strictly positive subdivision of the contracted core. On the interior (rep = id, hInv free by repInvariant_evaluatedPotential_of_pos) this is the existing statement.