Unrestricted depth-three lower bound: hash bool #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/HashBool.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
theorem
Complexity.DepthThreeLowerBound.BinaryHash.hashBool_eq_iff
{d r : ℕ}
(u : Fin (d + r - 1) → Bool)
(x : Fin d → Bool)
(a : Fin r → Bool)
:
hashBool u x = a ↔ hashF2 ((BinaryAlgebra.bitsEquivF2 (Fin (d + r - 1))) u) ((BinaryAlgebra.bitsEquivF2 (Fin d)) x) = (BinaryAlgebra.bitsEquivF2 (Fin r)) a
theorem
Complexity.DepthThreeLowerBound.BinaryHash.hashBool_collision_iff
{d r : ℕ}
(u : Fin (d + r - 1) → Bool)
(x y : Fin d → Bool)
:
hashBool u x = hashBool u y ↔ hashF2 ((BinaryAlgebra.bitsEquivF2 (Fin (d + r - 1))) u) ((BinaryAlgebra.bitsEquivF2 (Fin d)) x) = hashF2 ((BinaryAlgebra.bitsEquivF2 (Fin (d + r - 1))) u) ((BinaryAlgebra.bitsEquivF2 (Fin d)) y)
def
Complexity.DepthThreeLowerBound.BinaryHash.hashBoolCollisionEquiv
{d r : ℕ}
(x y : Fin d → Bool)
:
Transfer hash collisions between Boolean and field-vector presentations.
Equations
Instances For
theorem
Complexity.DepthThreeLowerBound.BinaryHash.mem_boolCoordinateCube_iff
{d : ℕ}
(T : Finset (Fin d))
(rho : { i : Fin d // i ∉ T } → Bool)
(x : Fin d → Bool)
:
x ∈ boolCoordinateCube T rho ↔ (BinaryAlgebra.bitsEquivF2 (Fin d)) x ∈ coordinateCube T fun (i : { i : Fin d // i ∉ T }) => BinaryAlgebra.bitValue (rho i)
theorem
Complexity.DepthThreeLowerBound.BinaryHash.injOn_hashBool_iff
{d r : ℕ}
(u : Fin (d + r - 1) → Bool)
(T : Finset (Fin d))
(rho : { i : Fin d // i ∉ T } → Bool)
:
Set.InjOn (hashBool u) (boolCoordinateCube T rho) ↔ Set.InjOn (hashF2 ((BinaryAlgebra.bitsEquivF2 (Fin (d + r - 1))) u))
(coordinateCube T fun (i : { i : Fin d // i ∉ T }) => BinaryAlgebra.bitValue (rho i))