Documentation

Complexity.Computability.QueryComplexity.OneSided

One-sided query complexity measures and negation #

For a value b, the one-sided measures s_b(f), bs_b(f) and C_b(f) are the largest sensitivity, block sensitivity and certificate complexity of f at an input of value b (BitString.sensitivityFor, QueryComplexity.blockSensitivityFor, QueryComplexity.certificateComplexityFor) [BdW02].

Negation keeps sensitive coordinates, sensitive blocks and certificates, so it preserves s, bs and C and exchanges the two values of the one-sided measures (BitString.sensitivityFor_not, QueryComplexity.blockSensitivityFor_not, QueryComplexity.certificateComplexityFor_not).

Main definitions #

Main results #

References #

s_b(f): the largest sensitivity of f at an input where it has value b.

Instances For

    The sensitivity at an input of value b is at most s_b(f).

    @[simp]
    theorem Cslib.BitString.isSensitiveCoord_not {n : ℕ} {f : BooleanFunction n} {x : BitString n} {i : Fin n} :
    IsSensitiveCoord (fun (y : BitString n) => !f y) x i ↔ IsSensitiveCoord f x i

    Negating a function keeps its sensitive coordinates.

    theorem Cslib.BitString.sensitivityAt_not {n : ℕ} (f : BooleanFunction n) (x : BitString n) :
    sensitivityAt (fun (y : BitString n) => !f y) x = sensitivityAt f x

    Negation preserves the sensitivity at an input.

    Negation preserves sensitivity.

    Negation exchanges s₀ and s₁.

    bs_b(f): the largest block sensitivity of f at an input where it has value b.

    Instances For

      The block sensitivity at an input of value b is at most bs_b(f).

      C_b(f): the largest certificate complexity of f at an input where it has value b.

      Instances For

        The certificate complexity at an input of value b is at most C_b(f).

        @[simp]

        Negating a function keeps its sensitive blocks.

        @[simp]
        theorem Cslib.QueryComplexity.isCertificate_not {n : ℕ} {f : BooleanFunction n} {x : BitString n} {S : Finset (Fin n)} :
        IsCertificate (fun (y : BitString n) => !f y) x S ↔ IsCertificate f x S

        Negating a function keeps its certificates.

        Negation preserves the block sensitivity at an input.

        Negation preserves the certificate complexity at an input.

        Negation preserves block sensitivity.

        Negation preserves certificate complexity.

        Negation exchanges bs₀ and bs₁.

        Negation exchanges C₀ and C₁.