Documentation

Complexity.Foundations.Combinatorics.AffineDisperser.AffineSubspace

Affine dispersers from nonconstancy on affine subspaces #

An affine disperser for dimension d (Cslib.BitString.IsAffineDisperser) is nonconstant on the image of every injective map g : BitString d โ†’ BitString n that preserves sums of three points (Cslib.BitString.IsAffine). Such an image is an affine subspace of dimension d in Mathlib's sense over ๐”ฝโ‚‚ = Bool: g is a Mathlib affine map with linear part x โ†ฆ g x + g 0 (Cslib.BitString.IsAffine.toAffineMap), the image is the affine subspace โŠค.map g, and its direction, the range of the injective linear part, has dimension d (Cslib.BitString.IsAffine.finrank_direction_map_top).

Hence a function nonconstant on every affine subspace of dimension d is an affine disperser for dimension d (Cslib.BitString.isAffineDisperser_of_forall_exists_ne). This turns nonconstancy theorems stated with AffineSubspace, such as Ben-Sasson and Kopparty's, into affine dispersers. The converse, that every affine subspace of dimension d contains such an image, is not formalized here: Mathlib has no Field Bool instance, so a basis of the direction is not available over Bool.

Main definitions #

Main results #

References #

def Cslib.BitString.IsAffine.linearMap {V : Type u_1} {W : Type u_2} [AddCommGroup V] [Module Bool V] [AddCommGroup W] [Module Bool W] {g : V โ†’ W} (hg : IsAffine g) :

The linear part x โ†ฆ g x + g 0 of a map g that is affine over ๐”ฝโ‚‚.

Instances For
    @[simp]
    theorem Cslib.BitString.IsAffine.linearMap_apply {V : Type u_1} {W : Type u_2} [AddCommGroup V] [Module Bool V] [AddCommGroup W] [Module Bool W] {g : V โ†’ W} (hg : IsAffine g) (x : V) :
    hg.linearMap x = g x + g 0

    The linear part of g sends x to g x + g 0.

    theorem Cslib.BitString.IsAffine.linearMap_injective {V : Type u_1} {W : Type u_2} [AddCommGroup V] [Module Bool V] [AddCommGroup W] [Module Bool W] {g : V โ†’ W} (hg : IsAffine g) (hinj : Function.Injective g) :

    The linear part of an injective map that is affine over ๐”ฝโ‚‚ is injective.

    def Cslib.BitString.IsAffine.toAffineMap {V : Type u_1} {W : Type u_2} [AddCommGroup V] [Module Bool V] [AddCommGroup W] [Module Bool W] {g : V โ†’ W} (hg : IsAffine g) :

    A map that is affine over ๐”ฝโ‚‚ (IsAffine) as a Mathlib affine map over Bool, with linear part x โ†ฆ g x + g 0.

    Instances For
      @[simp]
      theorem Cslib.BitString.IsAffine.coe_toAffineMap {V : Type u_1} {W : Type u_2} [AddCommGroup V] [Module Bool V] [AddCommGroup W] [Module Bool W] {g : V โ†’ W} (hg : IsAffine g) :
      โ‡‘hg.toAffineMap = g

      As a function, the Mathlib affine map of g is g itself.

      The image of an injective map from V that is affine over ๐”ฝโ‚‚ is an affine subspace whose direction has the dimension of V.

      theorem Cslib.BitString.isAffineDisperser_of_forall_exists_ne {n d : โ„•} {f : BitString n โ†’ Bool} (h : โˆ€ (A : AffineSubspace Bool (BitString n)), Module.finrank Bool โ†ฅA.direction = d โ†’ โˆƒ x โˆˆ A, โˆƒ y โˆˆ A, f x โ‰  f y) :

      A function nonconstant on every affine subspace of BitString n of dimension d is an affine disperser for dimension d: the image of an injective affine map from BitString d is such a subspace.