Unrestricted depth-three lower bound: algebra polynomial #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/AlgebraPolynomial.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
noncomputable def
Complexity.DepthThreeLowerBound.BinaryAlgebra.pack
{r : ℕ}
(v : Fin r → ZMod 2)
:
Polynomial (ZMod 2)
Pack a finite vector of field elements as polynomial coefficients.
Equations
- Complexity.DepthThreeLowerBound.BinaryAlgebra.pack v = ∑ i : Fin r, (Polynomial.monomial ↑i) (v i)
Instances For
noncomputable def
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomial
{r : ℕ}
(v : Fin r → ZMod 2)
:
Polynomial (ZMod 2)
The monic polynomial obtained from its lower coefficients.
Equations
Instances For
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomial_monic
{r : ℕ}
(v : Fin r → ZMod 2)
:
(inputPolynomial v).Monic
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomial_degree
{r : ℕ}
(v : Fin r → ZMod 2)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomial_natDegree
{r : ℕ}
(v : Fin r → ZMod 2)
:
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomial_ne_zero
{r : ℕ}
(v : Fin r → ZMod 2)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomial_coeff_lt
{r : ℕ}
(v : Fin r → ZMod 2)
(i : Fin r)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomial_coeff_leading
{r : ℕ}
(v : Fin r → ZMod 2)
:
noncomputable def
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomialBits
{r : ℕ}
(p : Fin r → Bool)
:
Polynomial (ZMod 2)
The monic input polynomial specified by Boolean coefficient bits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomialBits_monic
{r : ℕ}
(p : Fin r → Bool)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomialBits_degree
{r : ℕ}
(p : Fin r → Bool)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomialBits_natDegree
{r : ℕ}
(p : Fin r → Bool)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomialBits_coeff_lt
{r : ℕ}
(p : Fin r → Bool)
(i : Fin r)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.BinaryAlgebra.inputPolynomialBits_coeff_leading
{r : ℕ}
(p : Fin r → Bool)
: