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]
The two-element field.
Equations
Instances For
@[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
theorem
Complexity.DepthThreeLowerBound.BinaryHash.sumIndex_left_injective
{d r : ℕ}
(s : Fin d)
:
Function.Injective fun (i : Fin r) => sumIndex i s
def
Complexity.DepthThreeLowerBound.BinaryHash.hashF2
{d r : ℕ}
(u : Seed d r)
(x : Data d)
:
Output r
The seeded linear hash over the two-element field.
Equations
- Complexity.DepthThreeLowerBound.BinaryHash.hashF2 u x i = ∑ s : Fin d, u (Complexity.DepthThreeLowerBound.BinaryHash.sumIndex i s) * x s
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
theorem
Complexity.DepthThreeLowerBound.BinaryHash.bitsEquivF2_hashBool
{d r : ℕ}
(u : Fin (d + r - 1) → Bool)
(x : Fin d → Bool)
:
(BinaryAlgebra.bitsEquivF2 (Fin r)) (hashBool u x) = hashF2 ((BinaryAlgebra.bitsEquivF2 (Fin (d + r - 1))) u) ((BinaryAlgebra.bitsEquivF2 (Fin d)) x)