Unrestricted depth-three lower bound: language input block lists #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/LanguageInputBlockLists.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
Kinds of parameter and data blocks in the encoded input.
- data : InputBlockKind
- hash : InputBlockKind
- polynomial : InputBlockKind
- coefficients : InputBlockKind
Instances For
@[instance_reducible]
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
The starting position of the selected input block.
Equations
- One or more equations did not get rendered due to their size.
- Complexity.DepthThreeLowerBound.inputBlockOffset n Complexity.DepthThreeLowerBound.InputBlockKind.data = 0
- Complexity.DepthThreeLowerBound.inputBlockOffset n Complexity.DepthThreeLowerBound.InputBlockKind.hash = Complexity.DepthThreeLowerBound.hashOffset (Complexity.DepthThreeLowerBound.dataDimension n)
Instances For
The length of the selected input block.
Equations
- One or more equations did not get rendered due to their size.
- Complexity.DepthThreeLowerBound.inputBlockLength n Complexity.DepthThreeLowerBound.InputBlockKind.data = Complexity.DepthThreeLowerBound.dataDimension n
Instances For
Extract the selected block from the input word.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Complexity.DepthThreeLowerBound.inputBlock_end_le
{w : List Bool}
(h : InputFits w)
(kind : InputBlockKind)
:
theorem
Complexity.DepthThreeLowerBound.inputBlock_offset_le
{w : List Bool}
(h : InputFits w)
(kind : InputBlockKind)
:
theorem
Complexity.DepthThreeLowerBound.inputBlock_prefix_length
{w : List Bool}
(h : InputFits w)
(kind : InputBlockKind)
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_length
{w : List Bool}
(h : InputFits w)
(kind : InputBlockKind)
:
theorem
Complexity.DepthThreeLowerBound.inputBlock_reconstruct
(w : List Bool)
(kind : InputBlockKind)
:
w = List.take (inputBlockOffset w.length kind) w ++ inputBlockData w kind ++ List.drop (inputBlockOffset w.length kind + inputBlockLength w.length kind) w
theorem
Complexity.DepthThreeLowerBound.inputBlockData_getD
(w : List Bool)
(kind : InputBlockKind)
{i : ℕ}
(hi : i < inputBlockLength w.length kind)
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_data_nat
(w : List Bool)
{i : ℕ}
(hi : i < dataDimension w.length)
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_data
(w : List Bool)
(i : Fin (dataDimension w.length))
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_hash_nat
(w : List Bool)
{i : ℕ}
(hi : i < hashBlockLength (dataDimension w.length))
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_hash
(w : List Bool)
(i : Fin (hashBlockLength (dataDimension w.length)))
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_polynomial_nat
(w : List Bool)
{i : ℕ}
(hi : i < hashDimension (dataDimension w.length))
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_polynomial
(w : List Bool)
(i : Fin (hashDimension (dataDimension w.length)))
:
theorem
Complexity.DepthThreeLowerBound.inputBlock_coefficient_index_lt
{n j i : ℕ}
(hj : j < independenceOrder (dataDimension n))
(hi : i < hashDimension (dataDimension n))
:
theorem
Complexity.DepthThreeLowerBound.inputBlockData_coefficients_nat
(w : List Bool)
{j i : ℕ}
(hj : j < independenceOrder (dataDimension w.length))
(hi : i < hashDimension (dataDimension w.length))
:
(inputBlockData w InputBlockKind.coefficients).getD (j * hashDimension (dataDimension w.length) + i) false = (decodeInput w).coefficients ⟨j, hj⟩ ⟨i, hi⟩
theorem
Complexity.DepthThreeLowerBound.inputBlockData_coefficients
(w : List Bool)
(j : Fin (independenceOrder (dataDimension w.length)))
(i : Fin (hashDimension (dataDimension w.length)))
:
(inputBlockData w InputBlockKind.coefficients).getD (↑j * hashDimension (dataDimension w.length) + ↑i) false = (decodeInput w).coefficients j i