Documentation

Cslib.Computability.QueryComplexity.Measures

Boolean function complexity measures #

Sensitivity s(f), block sensitivity bs(f) and certificate complexity C(f), together with the chain s(f) ≤ bs(f) ≤ C(f). Notation follows [AB09]; the pointwise measures s(f, x), bs(f, x), C(f, x) are those of Jukna, Section 14.3.

Main definitions #

Main results #

References #

Sensitivity #

Coordinate i is sensitive for f at x when flipping it flips f.

Instances For

    The set of coordinates sensitive for f at x.

    Instances For
      @[simp]

      The bridge between the predicate and the Finset it cuts out.

      The number of sensitive coordinates in input x, usually denoted s(f, x).

      Instances For

        The maximum sensitivity over all inputs, denoted s(f).

        Instances For
          theorem Cslib.BitString.card_le_sensitivityAt {n : ℕ} {f : BooleanFunction n} {x : BitString n} {S : Finset (Fin n)} (h : ∀ i ∈ S, IsSensitiveCoord f x i) :

          Lower-bound rule for s(f, x): exhibit a set of sensitive coordinates.

          The sensitivity at a single input is at most the sensitivity of f: s(f, x) ≤ s(f).

          Lower-bound rule for s(f): sensitive coordinates at any input suffice.

          s(f, x) ≤ n: there are only n coordinates.

          Block sensitivity #

          Block B is sensitive for f at x when flipping all bits of B flips f.

          Instances For

            Every member flips f, and the members are pairwise disjoint.

            Instances For

              All sensitive families.

              Instances For

                The block sensitivity of f at x: the largest number of pairwise disjoint blocks of coordinates such that flipping every coordinate of any one block flips f. Usually denoted bs(f, x).

                Instances For

                  The maximum block sensitivity over all inputs, denoted bs(f).

                  Instances For

                    Lower-bound rule for bs(f, x): exhibit one sensitive family.

                    The block sensitivity at a single input is at most that of f: bs(f, x) ≤ bs(f).

                    Lower-bound rule for bs(f).

                    Sensitive singletons #

                    @[simp]

                    A singleton block is sensitive if and only if its coordinate is.

                    s(f) ≤ bs(f) #

                    One block per sensitive coordinate.

                    Instances For
                      @[simp]

                      Membership in the singleton family: one block per sensitive coordinate.

                      @[simp]

                      The singleton family has one block per sensitive coordinate, so s(f, x) of them.

                      Singletons of distinct sensitive coordinates do form a sensitive family: each flips f, and distinct singletons are disjoint.

                      Every sensitive coordinate is a sensitive block of size one, so s(f) ≤ bs(f).

                      Minimal sensitive blocks #

                      B is sensitive, and no proper subset of B is sensitive.

                      Instances For

                        Dropping any coordinate from a minimal sensitive block breaks sensitivity.

                        Every coordinate of a minimal sensitive block is sensitive at the input which has the minimal sensitive block flipped.

                        |B| ≤ s(f) for a minimal sensitive block B.

                        Certificates #

                        A certificate for x is a set of coordinates whose values at x already determine f x Jukna, Section 14.3. The survey [BdW02] instead works with partial assignments that force a value; Forces keeps that in general form, with the forced value b a parameter, and the two views agree at a fixed input.

                        S is a certificate for f at x: every input agreeing with x on S takes the same value, so f x can be read off from the bits of x in S.

                        Instances For
                          @[instance_reducible]

                          C forces the value b: everything consistent with C has f = b.

                          Instances For
                            @[instance_reducible]

                            S is a certificate for x if and only if x restricted to S forces f x.

                            A partial assignment consistent with x forces f x if and only if its support is a certificate for x.

                            Reading every coordinate of x is a certificate.

                            There is always a certificate, so C(f, x) is a minimum over a non-empty set.

                            The fewest coordinates of x that pin down the value of f, denoted C(f, x).

                            Instances For

                              Upper-bound rule for C(f, x): exhibit one certificate.

                              theorem Cslib.QueryComplexity.le_certificateComplexityAt {n : ℕ} {f : BooleanFunction n} {x : BitString n} {k : ℕ} (h : ∀ (S : Finset (Fin n)), IsCertificate f x S → k ≤ S.card) :

                              Lower-bound rule for C(f, x): a bound that holds for every certificate.

                              Some certificate for x has exactly C(f, x) coordinates.

                              Certificates as partial assignments #

                              At a fixed input a forcing assignment carries no information beyond the coordinates it reads: Agrees C x forces C i = some (x i) on the support and none elsewhere. So C(f, x) over coordinate sets is also the minimum size of a forcing assignment consistent with x.

                              Partial assignments consistent with x that force f x.

                              Instances For

                                There is always a forcing assignment consistent with x.

                                C(f, x) over coordinate sets is the minimum size of a forcing assignment consistent with x, the definition of [BdW02].

                                The maximum over all inputs of the smallest certificate size, denoted C(f).

                                Instances For

                                  The certificate complexity at a single input is at most that of f: C(f, x) ≤ C(f).

                                  C(f, x) ≤ n: reading every coordinate pins down f.

                                  bs(f) ≤ C(f) #

                                  A certificate for x must meet every block of a sensitive family. The blocks are pairwise disjoint, so a family has at most |S| members.

                                  A certificate must contain at least one coordinate of every sensitive block.

                                  A certificate is at least as large as any sensitive family.

                                  Every block of a sensitive family meets every certificate, so bs(f) ≤ C(f).