InformationTheory

InformationTheory.Shannon.HypercubeEdge.Boundary

source

Boolean hypercube edge-boundary bound #

The edge boundary of a subset of the Boolean cube Fin n → Bool, defined combinatorially via directed coordinate-flip pairs, together with an edge-isoperimetric lower bound obtained from Loomis–Whitney and AM-GM.

Main definitions #

Main statements #

Implementation notes #

The definitions avoid SimpleGraph and Sym2, working with naive combinatorial pairs to sidestep the SimpleGraph.edgeBoundary API. Counting identities are stated additively to avoid natural-number subtraction.

Coordinate flip and edge counts #

def

InformationTheory.Shannon.flipCoord

source
{n : } (i : Fin n) (x : Fin nBool) :
Fin nBool

Flip the i-th coordinate of x : Fin n → Bool.

Equations
Instances For
    Used by
      theorem

      InformationTheory.Shannon.flipCoord_apply_same

      source
      @[simp]
      {n : } (i : Fin n) (x : Fin nBool) :
      flipCoord i x i = !x i
      Used by
        theorem

        InformationTheory.Shannon.flipCoord_apply_other

        source
        {n : } (i : Fin n) (x : Fin nBool) {j : Fin n} (h : j i) :
        flipCoord i x j = x j
        Used by
          theorem

          InformationTheory.Shannon.flipCoord_flipCoord

          source
          @[simp]
          {n : } (i : Fin n) (x : Fin nBool) :
          Used by
            def

            InformationTheory.Shannon.edgeBoundaryCount

            source
            {n : } (A : Finset (Fin nBool)) :

            The number of pairs (x, i) with x ∈ A and flipCoord i x ∉ A, in bijection with the cube edges having exactly one endpoint in A.

            Equations
            Instances For
              Used by
                def

                InformationTheory.Shannon.internalEdgePairCount

                source
                {n : } (A : Finset (Fin nBool)) :

                The number of pairs (x, i) with x ∈ A and flipCoord i x ∈ A, counting each internal edge twice.

                Equations
                Instances For
                  Used by

                    Counting identities #

                    theorem

                    InformationTheory.Shannon.edge_total_count

                    source

                    The pairs (x, i) with x ∈ A number n * A.card, split disjointly by whether flipCoord i x ∈ A: edgeBoundaryCount A + internalEdgePairCount A = n * A.card.

                    Used by

                      Projection identity #

                      For each direction i, every fibre of projectionExcept i A is covered once or twice in A; double-counting these coverages relates ∑ i, (projectionExcept i A).card to A.card and the edge boundary count, stated additively to avoid natural-number subtraction.

                      theorem

                      InformationTheory.Shannon.flipCoord_mem_iff

                      source
                      {n : } (A : Finset (Fin nBool)) (x : Fin nBool) (i : Fin n) :

                      flipCoord i x ∈ A ↔ Function.update x i (!x i) ∈ A, the definitional unfolding of flipCoord.

                      Used by
                        def

                        InformationTheory.Shannon.projMap

                        source
                        {n : } (i : Fin n) (x : Fin nBool) :
                        { j : Fin n // j i }Bool

                        The projection (Fin n → Bool) → ({j // j ≠ i} → Bool) dropping coordinate i.

                        Equations
                        Instances For
                          Used by
                            def

                            InformationTheory.Shannon.extension

                            source
                            {n : } (i : Fin n) (b : Bool) (y : { j : Fin n // j i }Bool) :
                            Fin nBool

                            Extend a projection by the bit b at coordinate i.

                            Equations
                            Instances For
                              Used by
                                theorem

                                InformationTheory.Shannon.extension_apply_eq

                                source
                                @[simp]
                                {n : } (i : Fin n) (b : Bool) (y : { j : Fin n // j i }Bool) :
                                extension i b y i = b
                                Used by
                                  theorem

                                  InformationTheory.Shannon.extension_apply_ne

                                  source
                                  {n : } (i : Fin n) (b : Bool) (y : { j : Fin n // j i }Bool) {j : Fin n} (h : j i) :
                                  extension i b y j = y j, h
                                  Used by
                                    theorem

                                    InformationTheory.Shannon.projMap_extension

                                    source
                                    @[simp]
                                    {n : } (i : Fin n) (b : Bool) (y : { j : Fin n // j i }Bool) :
                                    projMap i (extension i b y) = y
                                    Used by
                                      theorem

                                      InformationTheory.Shannon.projectionExcept_eq_image

                                      source
                                      {n : } (i : Fin n) (A : Finset (Fin nBool)) :
                                      Used by
                                        theorem

                                        InformationTheory.Shannon.extension_projMap_flip

                                        source
                                        {n : } (i : Fin n) (x : Fin nBool) :
                                        extension i (!x i) (projMap i x) = flipCoord i x

                                        flipCoord i x equals the extension of projMap i x by the flipped bit !x i.

                                        Used by
                                          theorem

                                          InformationTheory.Shannon.projMap_eq_iff

                                          source
                                          {n : } (i : Fin n) (x : Fin nBool) (y : { j : Fin n // j i }Bool) :
                                          projMap i x = y x = extension i (x i) y

                                          projMap i x = y ↔ x = extension i (x i) y.

                                          Used by
                                            def

                                            InformationTheory.Shannon.boundaryDirSet

                                            source
                                            {n : } (A : Finset (Fin nBool)) (i : Fin n) :
                                            Finset (Fin nBool)

                                            The boundary contribution in direction i: elements x ∈ A with flipCoord i x ∉ A.

                                            Equations
                                            Instances For
                                              Used by
                                                theorem

                                                InformationTheory.Shannon.fiber_projMap_eq_union

                                                source
                                                {n : } (A : Finset (Fin nBool)) (i : Fin n) (y : { j : Fin n // j i }Bool) :
                                                {xA | projMap i x = y} = {x{extension i false y} | x A} {x{extension i true y} | x A}
                                                Used by
                                                  theorem

                                                  InformationTheory.Shannon.boundaryDirSet_fiber_projMap_eq_union

                                                  source
                                                  {n : } (A : Finset (Fin nBool)) (i : Fin n) (y : { j : Fin n // j i }Bool) :
                                                  {xboundaryDirSet A i | projMap i x = y} = {x{extension i false y} | x A extension i true yA} {x{extension i true y} | x A extension i false yA}
                                                  Used by
                                                    theorem

                                                    InformationTheory.Shannon.extension_false_ne_extension_true

                                                    source
                                                    {n : } (i : Fin n) (y : { j : Fin n // j i }Bool) :
                                                    Used by
                                                      theorem

                                                      InformationTheory.Shannon.extension_mem_of_mem_projectionExcept

                                                      source
                                                      {n : } (A : Finset (Fin nBool)) (i : Fin n) (y : { j : Fin n // j i }Bool) (hy : y projectionExcept i A) :
                                                      Used by
                                                        theorem

                                                        InformationTheory.Shannon.two_eq_fiber_card_add_boundaryDirSet_fiber_card

                                                        source
                                                        {n : } (A : Finset (Fin nBool)) (i : Fin n) (y : { j : Fin n // j i }Bool) (hy : y projectionExcept i A) :
                                                        2 = {xA | projMap i x = y}.card + {xboundaryDirSet A i | projMap i x = y}.card
                                                        Used by
                                                          theorem

                                                          InformationTheory.Shannon.boundaryPairCount_eq_boundaryDirSet_card

                                                          source
                                                          {n : } (A : Finset (Fin nBool)) (i : Fin n) :
                                                          {p : (Fin nBool) × Fin n | p.1 A flipCoord p.2 p.1A p.2 = i}.card = (boundaryDirSet A i).card
                                                          Used by
                                                            theorem

                                                            InformationTheory.Shannon.two_mul_projectionExcept_card_eq

                                                            source
                                                            {n : } (A : Finset (Fin nBool)) (i : Fin n) :
                                                            2 * (projectionExcept i A).card = A.card + {p : (Fin nBool) × Fin n | p.1 A flipCoord p.2 p.1A p.2 = i}.card
                                                            Used by
                                                              theorem

                                                              InformationTheory.Shannon.two_sum_projection_eq

                                                              source
                                                              {n : } (A : Finset (Fin nBool)) :
                                                              2 * i : Fin n, (projectionExcept i A).card = n * A.card + edgeBoundaryCount A

                                                              2 * ∑ i, (projectionExcept i A).card = n * A.card + edgeBoundaryCount A, obtained by classifying each projection fibre as singly or doubly covered in A.

                                                              Used by
                                                                theorem

                                                                InformationTheory.Shannon.internal_pair_count_eq_projection_sum

                                                                source
                                                                {n : } (A : Finset (Fin nBool)) :
                                                                internalEdgePairCount A + 2 * i : Fin n, (projectionExcept i A).card = 2 * (n * A.card)

                                                                The internal edge pair count in projection-sum form: internalEdgePairCount A + 2 * ∑ i, (projectionExcept i A).card = 2 * (n * A.card).

                                                                Used by
                                                                  theorem

                                                                  InformationTheory.Shannon.edgeBoundary_count_eq

                                                                  source
                                                                  {n : } (A : Finset (Fin nBool)) :
                                                                  edgeBoundaryCount A + n * A.card = 2 * i : Fin n, (projectionExcept i A).card

                                                                  The edge boundary in projection-sum form: edgeBoundaryCount A + n * A.card = 2 * ∑ i, (projectionExcept i A).card.

                                                                  Used by

                                                                    Loomis–Whitney and AM-GM corollary #

                                                                    theorem

                                                                    InformationTheory.Shannon.sum_projection_card_ge_amgm

                                                                    source
                                                                    {n : } {α : Type u_1} [Fintype α] [DecidableEq α] [Nonempty α] [MeasurableSpace α] [MeasurableSingletonClass α] {A : Finset (Fin nα)} (hA : A.Nonempty) :
                                                                    n * (A.card ^ (n - 1)) ^ (↑n)⁻¹ i : Fin n, (projectionExcept i A).card

                                                                    (n : ℝ) * (A.card)^((n-1)/n) ≤ ∑ i, ((projectionExcept i A).card : ℝ), combining the Loomis–Whitney bound ∏ i, (projectionExcept i A).card ≥ A.card^(n-1) with AM-GM.

                                                                    Used by
                                                                      theorem

                                                                      InformationTheory.Shannon.edgeBoundary_ge_AMGM

                                                                      source
                                                                      {n : } {A : Finset (Fin nBool)} (hA : A.Nonempty) :
                                                                      2 * n * (A.card ^ (n - 1)) ^ (↑n)⁻¹ (edgeBoundaryCount A) + n * A.card

                                                                      The edge-isoperimetric lower bound: for nonempty A ⊆ Fin n → Bool, 2 * n * (A.card)^((n-1)/n) ≤ edgeBoundaryCount A + n * A.card, the additive form of |∂_e A| ≥ 2n · |A|^{(n-1)/n} − n · |A|.

                                                                      Used by