Documentation

LeanPool.BooleanIsoperimetry.KruskalKatona

Kruskal-Katona upper-shadow core #

This file proves the set-family upper-shadow minimization theorem used by the Boolean-isoperimetry argument.

The family of all r-element vertices in the N-cube.

Equations
Instances For
    noncomputable def BooleanIsoperimetry.upperShadowVal (N r t : ) :

    Local numeric upper-shadow value (identical to Shadow.upperShadow but defined here so the Kruskal–Katona core is strictly upstream of Shadow.lean): upperShadowVal N r t = H N (binomPrefix N r + t) - binomPrefix N (r+1).

    Equations
    Instances For
      noncomputable def BooleanIsoperimetry.layerInitSeg (N r t : ) :

      The layer-r part of the simplicial initial segment with local size t.

      Equations
      Instances For
        noncomputable def BooleanIsoperimetry.upperLayerShadow (N r : ) (A : Finset (Cube N)) :

        The layer-r + 1 upper shadow of a uniform family in layer r.

        Equations
        Instances For
          theorem BooleanIsoperimetry.layerInitSeg_card {N r t : } (ht : t N.choose r) :
          (layerInitSeg N r t).card = t
          theorem BooleanIsoperimetry.upperLayerShadow_sized {N r : } {A : Finset (Cube N)} {y : Cube N} (hy : y upperLayerShadow N r A) :
          theorem BooleanIsoperimetry.hDist_eq_one_of_card_diff {N r : } {u x : Cube N} (hu : Finset.card u = r) (hx : Finset.card x = r + 1) (hd : hDist u x 1) :
          u x Finset.card (x \ u) = 1
          theorem BooleanIsoperimetry.card_le_of_hDist_le_one {N r : } {u x : Cube N} (hu : Finset.card u = r) (hd : hDist u x 1) :

          Kruskal--Katona upper-shadow minimization in project language #

          The next theorem is the single-layer Macaulay/Kruskal--Katona input needed by the Frankl--Füredi paired-compression layer. It is deliberately stated with the real set-family upper shadow upperLayerShadow, not the numerical upperShadow wrapper.

          theorem BooleanIsoperimetry.card_le_choose_of_uniform {N r : } {A : Finset (Cube N)} (hA : xA, Finset.card x = r) :

          The complement of a simplicial layer initial segment is a colex initial segment. This is the remaining order-orientation bridge needed to feed the project's layer initial segments into mathlib's lower-shadow Kruskal--Katona theorem.

          On a fixed Hamming layer, the project order takes larger binary/colex values first; complementation changes a larger r-set value into a smaller (N-r)-set value. Thus complements of project initial segments are ordinary colex initial segments.

          theorem BooleanIsoperimetry.upperLayerShadow_min {N r : } {A : Finset (Cube N)} (hA : xA, Finset.card x = r) :

          Upper-shadow Kruskal--Katona target. Among all r-uniform families in the N-cube with the same cardinality, the simplicial layer initial segment has minimum upper shadow in layer r+1.

          This is the project-language form of the mathlib KK theorem transported from lower shadows through complementation, with the fixed-card simplicial order identified with the corresponding colex/opposite-colex layer order.

          theorem BooleanIsoperimetry.upperShadowVal_numeric_min {N r t : } (hr : 1 r) (ht : t N.choose r) {A : Finset (Cube N)} (hA : xA, Finset.card x = r) (hcard : A.card = t) :

          Numeric corollary of upperLayerShadow_min: the numerical scaffold upperShadow is bounded by the actual upper shadow of every same-size r-uniform family.