Documentation

LeanPool.BannaiBannaiStanton.BoundOnDistanceSet

The Bannai-Bannai-Stanton bound on distance sets #

Formalizes the Bannai-Bannai-Stanton theorem bounding the size of a distance set S in ℝ^d with s distinct distances by Nat.choose (d + s) s, following the short proof of Petrov and Pohoata via the Croot-Lev-Pach lemma.

The set of distances realized between distinct points of a set S.

Equations
Instances For
    noncomputable def BannaiBannaiStanton.distPoly {R : Type u_1} [CommRing R] (d : ) :
    MvPolynomial (Fin (2 * d)) R

    The squared-distance polynomial used to encode pairwise distances of a distance set.

    Equations
    Instances For
      noncomputable def BannaiBannaiStanton.distPolyFrom {R : Type u_1} [CommRing R] {d : } (y : EuclideanSpace R (Fin d)) :

      The squared-distance polynomial expressed from a fixed reference point.

      Equations
      Instances For
        noncomputable def BannaiBannaiStanton.productDistPoly {R : Type u_1} [CommRing R] (d : ) (D : Finset R) :
        MvPolynomial (Fin (2 * d)) R

        The product over a finite distance set of the shifted squared-distance polynomials.

        Equations
        Instances For
          noncomputable def BannaiBannaiStanton.productDistPolyFrom {R : Type u_1} [CommRing R] {d : } (y : EuclideanSpace R (Fin d)) (D : Finset R) :

          The product form of productDistPoly taken from a fixed reference point.

          Equations
          Instances For
            theorem BannaiBannaiStanton.linearIndependent_of_eval_eq_zero {R : Type u_1} [CommRing R] {d : } [IsDomain R] {ι : Type u_2} (f : ιMvPolynomial (Fin d) R) (p : ιEuclideanSpace R (Fin d)) (h_diag : ∀ (i : ι), (MvPolynomial.eval (p i).ofLp) (f i) 0) (h_off : ∀ (i j : ι), i j(MvPolynomial.eval (p j).ofLp) (f i) = 0) :
            noncomputable def BannaiBannaiStanton.evalMapRestricted {F : Type u_1} [Field F] {d : } (A : Finset (EuclideanSpace F (Fin d))) (s : ) :

            Evaluation of restricted polynomials as a linear map on bounded-degree monomials.

            Equations
            Instances For
              noncomputable def BannaiBannaiStanton.dim {F : Type u_1} [Field F] {d : } (A : Finset (EuclideanSpace F (Fin d))) (s : ) :

              The dimension of the space of polynomials of bounded total degree used in the rank bound.

              Equations
              Instances For
                noncomputable def BannaiBannaiStanton.finsuppToMultisetRestricted {d s : } :
                {f : Fin d →₀ | (f.sum fun (x : Fin d) (n : ) => n) s} { m : Multiset (Fin d) // m.card s }

                Sends a bounded-degree monomial exponent vector to its multiset of variables.

                Equations
                Instances For
                  theorem BannaiBannaiStanton.card_filterMap_eq_countP {α : Type u_2} {β : Type u_3} (f : αOption β) (s : Multiset α) :
                  (Multiset.filterMap f s).card = Multiset.countP (fun (a : α) => (f a).isSome = true) s

                  Encodes a degree-s multiset over Fin d in a symmetric power of Option (Fin d).

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem BannaiBannaiStanton.dim_le_min_card_and_binom {F : Type u_1} [Field F] {d : } (A : Finset (EuclideanSpace F (Fin d))) (s : ) :
                    dim A s (d + s).choose s
                    theorem BannaiBannaiStanton.orthogonal_complement_dimension {F : Type u_1} [Field F] {d : } [DecidableEq (EuclideanSpace F (Fin d))] (A : Finset (EuclideanSpace F (Fin d))) (s : ) :
                    have Ω_F_A_s := (evalMapRestricted A s).range; have B := (Matrix.toBilin (Pi.basisFun F A)) 1; A.card = Module.finrank F (Submodule.comap B Ω_F_A_s.dualAnnihilator) + dim A s
                    theorem BannaiBannaiStanton.eval_split {F : Type u_1} [Field F] {d : } (m : Fin (2 * d) →₀ ) (a b : EuclideanSpace F (Fin d)) :
                    have h_cast := ; have m_left := fun (m : Fin (2 * d) →₀ ) => Finsupp.equivFunOnFinite.symm fun (i : Fin d) => m (Fin.cast (Fin.castAdd d i)); have m_right := fun (m : Fin (2 * d) →₀ ) => Finsupp.equivFunOnFinite.symm fun (i : Fin d) => m (Fin.cast (Fin.natAdd d i)); (MvPolynomial.eval (Fin.append a.ofLp b.ofLp Fin.cast )) ((MvPolynomial.monomial m) 1) = (MvPolynomial.eval a.ofLp) ((MvPolynomial.monomial (m_left m)) 1) * (MvPolynomial.eval b.ofLp) ((MvPolynomial.monomial (m_right m)) 1)
                    theorem BannaiBannaiStanton.bilinear_form_vanishes_on_orthogonal_complement {F : Type u_1} [Field F] {d : } [DecidableEq (EuclideanSpace F (Fin d))] (A : Finset (EuclideanSpace F (Fin d))) (s : ) (p : MvPolynomial (Fin (2 * d)) F) (hp_deg : p.totalDegree 2 * s + 1) :
                    have B := (Matrix.toBilin (Pi.basisFun F A)) 1; have Ω_F_A_s_orth := Submodule.comap B (evalMapRestricted A s).range.dualAnnihilator; have M := fun (a b : A) => (MvPolynomial.eval (Fin.append (↑a).ofLp (↑b).ofLp Fin.cast )) p; have Φ_P_A := (Matrix.toBilin (Pi.basisFun F A)) M; fΩ_F_A_s_orth, gΩ_F_A_s_orth, (Φ_P_A f) g = 0
                    theorem BannaiBannaiStanton.matrix_rank_add_le {F : Type u_1} [Field F] {n : Type u_2} [Fintype n] (A B : Matrix n n F) :
                    (A + B).rank A.rank + B.rank
                    theorem BannaiBannaiStanton.Croot_Lev_Pach_lemma_generalised_1st_part {F : Type u_1} [Field F] {d : } (A : Finset (EuclideanSpace F (Fin d))) (s : ) (p : MvPolynomial (Fin (2 * d)) F) (hp_deg : p.totalDegree 2 * s + 1) :
                    have M := fun (a b : A) => (MvPolynomial.eval (Fin.append (↑a).ofLp (↑b).ofLp Fin.cast )) p; M.rank 2 * dim A s
                    theorem BannaiBannaiStanton.Croot_Lev_Pach_lemma_generalised_2nd_part {F : Type u_1} [Field F] {d : } [LinearOrder F] [IsStrictOrderedRing F] (A : Finset (EuclideanSpace F (Fin d))) {s : } (p : MvPolynomial (Fin (2 * d)) F) (hp_deg : p.totalDegree 2 * s + 1) :
                    have M := fun (a b : A) => (MvPolynomial.eval (Fin.append (↑a).ofLp (↑b).ofLp Fin.cast )) p; have Q := fun (v : AF) => a : A, b : A, v a * M a b * v b; (∀ (V : Submodule F (AF)), (∀ vV, v 0Q v > 0)Module.finrank F V dim A s) ∀ (V : Submodule F (AF)), (∀ vV, v 0Q v < 0)Module.finrank F V dim A s
                    theorem BannaiBannaiStanton.bannai_bannai_stanton_bound {d s : } (S : Set (EuclideanSpace (Fin d))) (hdis : (distanceSet S).Finite) (hs : s = hdis.toFinset.card) :
                    S.encard ((d + s).choose s)