Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.Hash

Unrestricted depth-three lower bound: hash #

Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a. Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/Hash.lean

Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.

@[reducible, inline]

Input vectors over the two-element field.

Equations
Instances For
    @[reducible, inline]

    Seed vectors for the binary linear hash family.

    Equations
    Instances For
      @[reducible, inline]

      Output vectors of the binary linear hash family.

      Equations
      Instances For

        Index a hash-seed coordinate by the sum of input and output positions.

        Equations
        Instances For
          @[simp]
          theorem Complexity.DepthThreeLowerBound.BinaryHash.sumIndex_val {d r : ℕ} (i : Fin r) (s : Fin d) :
          ↑(sumIndex i s) = ↑i + ↑s

          The seeded linear hash over the two-element field.

          Equations
          Instances For
            @[simp]
            theorem Complexity.DepthThreeLowerBound.BinaryHash.hashF2_apply {d r : ℕ} (u : Seed d r) (x : Data d) (i : Fin r) :
            hashF2 u x i = ∑ s : Fin d, u (sumIndex i s) * x s
            def Complexity.DepthThreeLowerBound.BinaryHash.hashBool {d r : ℕ} (u : Fin (d + r - 1) → Bool) (x : Fin d → Bool) :
            Fin r → Bool

            The same seeded hash expressed on Boolean bit vectors.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem Complexity.DepthThreeLowerBound.BinaryHash.bitValue_hashBool {d r : ℕ} (u : Fin (d + r - 1) → Bool) (x : Fin d → Bool) (i : Fin r) :
              BinaryAlgebra.bitValue (hashBool u x i) = hashF2 (fun (j : Fin (d + r - 1)) => BinaryAlgebra.bitValue (u j)) (fun (s : Fin d) => BinaryAlgebra.bitValue (x s)) i