Exact Fourier circuits: diagonal blocks #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/FourierCircuit/DiagonalBlocks.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical arguments are retained.
theorem
Complexity.ExactFourier.MatrixPrice.diagonal_blocks
{α : Type}
[Fintype α]
[DecidableEq α]
(p : MatrixPrice)
(t : ℕ)
(A : Fin t → Matrix α α ℂ)
(hA : ∀ (i : Fin t), IsUnit (A i))
:
@[simp]
theorem
Complexity.ExactFourier.RootEvaluation.fourier_unit
(t : ℕ)
(ht : 0 < t)
(ω : ℂ)
(hω : IsPrimitiveRoot ω t)
:
theorem
Complexity.ExactFourier.RootEvaluation.matrix_unit
(t : ℕ)
(ht : 0 < t)
(ω a : ℂ)
(hω : IsPrimitiveRoot ω t)
(ha : a ≠ 0)
:
theorem
Complexity.ExactFourier.RootEvaluation.eval_remainder
(ℓ f : Polynomial ℂ)
(s : ℂ)
(hs : Polynomial.eval s ℓ = 0)
:
theorem
Complexity.ExactFourier.RootEvaluation.intertwine
{α : Type}
[Fintype α]
[DecidableEq α]
(t : ℕ)
(ht : 0 < t)
(ω a : ℂ)
(ℓ : Polynomial ℂ)
(hℓ : ℓ.Monic)
(hℓt : ℓ.natDegree = t)
(hs : ∀ (i : Fin t), Polynomial.eval (a * ω ^ ↑i) ℓ = 0)
(G : Matrix α α (Polynomial ℂ))
:
Matrix.kroneckerMap (fun (x1 x2 : ℂ) => x1 * x2) (matrix t ω a) 1 * Boundary.modulusMatrix t ℓ G = (diagonalBlocks fun (i : Fin t) => G.map (Polynomial.eval (a * ω ^ ↑i))) * Matrix.kroneckerMap (fun (x1 x2 : ℂ) => x1 * x2) (matrix t ω a) 1
theorem
Complexity.ExactFourier.RootEvaluation.root_modulus
(t : ℕ)
(ht : 0 < t)
(ω a : ℂ)
(hω : IsPrimitiveRoot ω t)
(i : Fin t)
:
theorem
Complexity.ExactFourier.RootEvaluation.modulus_upper
{α : Type}
[Fintype α]
[DecidableEq α]
(p : MatrixPrice)
(j : ℕ)
(ω a : ℂ)
(hω : IsPrimitiveRoot ω (2 ^ j))
(ha : a ≠ 0)
(G : Matrix α α (Polynomial ℂ))
(hG : ∀ (i : Fin (2 ^ j)), IsUnit (G.map (Polynomial.eval (a * ω ^ ↑i))))
:
IsUnit (Boundary.modulusMatrix (2 ^ j) (Polynomial.X ^ 2 ^ j - Polynomial.C (a ^ 2 ^ j)) G) ∧ p.value (Boundary.modulusMatrix (2 ^ j) (Polynomial.X ^ 2 ^ j - Polynomial.C (a ^ 2 ^ j)) G) ≤ ∑ i : Fin (2 ^ j), p.value (G.map (Polynomial.eval (a * ω ^ ↑i))) + 2 * ↑(Fintype.card α) * (26 / Real.log 2) * 2 ^ j * Real.log (2 * 2 ^ j)
theorem
Complexity.ExactFourier.MatrixPrice.specialize_polynomial_zero
{α : Type}
[Fintype α]
[DecidableEq α]
(p : MatrixPrice)
(G : Matrix α α (Polynomial ℂ))
(hG0 : IsUnit (G.map (Polynomial.eval 0)))
(E : Finset ℂ)
(C0 : ℝ)
(hG : ∀ s ∉ E, IsUnit (G.map (Polynomial.eval s)) ∧ p.value (G.map (Polynomial.eval s)) ≤ C0)
: