OAI/LinearAlgebra/MatrixMultiplication/AuxiliarySeparation/Separation/Basic.lean
27 declarations, 0 contain sorry, 0 declared as axioms
The tensor map with exactly 5M copies
The branches have a common first coordinate space and common sizes on the other
two legs. Their second and third coordinates carry a matching sector label.
The three maps below are independent linear substitutions on the three legs of
5M complete copies of the source tensor.
- def
OAI.MatrixMultiplication.AuxiliarySeparation.sectorNumberline 31Source documentation
The paper numbers sectors from one, while
Fin Mnumbers them from zero.def sectorNumber (i : Fin M) : ℤ := (i.val : ℤ) + 1
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.sectorNumber_boundsline 33 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.sectorNumber_injectiveline 39 - def
OAI.MatrixMultiplication.AuxiliarySeparation.sharedFirstTensorline 46Source documentation
Branches sharing X, with matching and disjoint Y and Z sectors.
def sharedFirstTensor (B : Fin M → Tensor ℂ X Y Z) : Tensor ℂ X (Fin M × Y) (Fin M × Z) := … - def
OAI.MatrixMultiplication.AuxiliarySeparation.firstProjectionMapline 51Source documentation
The first local Fourier substitution guesses the missing sector.
def firstProjectionMap (ζ : ℂ) : (X × Fin M) → (Fin (5 * M) × X) → ℂ := by … - def
OAI.MatrixMultiplication.AuxiliarySeparation.secondProjectionMapline 58Source documentation
The second local map knows the sector through its original coordinate.
def secondProjectionMap (ζ : ℂ) : ((Fin M × Y) × Fin M) → (Fin (5 * M) × (Fin M × Y)) → ℂ := by … - def
OAI.MatrixMultiplication.AuxiliarySeparation.thirdProjectionMapline 65Source documentation
The third local map carries the single Fourier normalization factor.
def thirdProjectionMap (ζ : ℂ) : ((Fin M × Z) × Fin M) → (Fin (5 * M) × (Fin M × Z)) → ℂ := by … - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.restrict_constantCopiesline 72 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.restrict_constantCopies_deltaline 83 - def
OAI.MatrixMultiplication.AuxiliarySeparation.projectedTensorline 100Source documentation
The exact coefficient tensor after Fourier projection, before weighting.
def projectedTensor (ζ : ℂ) (B : Fin M → Tensor ℂ X Y Z) : Tensor ℂ (X × Fin M) ((Fin M × Y) × Fin M) ((Fin M × Z) × Fin M) := … - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.finiteProjection_restrictline 110Source documentation
The paper's
5Mcopies and its three explicit local Fourier maps realize the projected tensor by an ordinary restriction.theorem finiteProjection_restrict [Fintype X] [Fintype Y] [Fintype Z] (ζ : ℂ) (hζ : ζ ≠ 0) (B : Fin M → Tensor ℂ X Y Z) : Tensor.restrict (firstProjectionMap ζ) (secondProjectionMap ζ) (thirdProjectionMap ζ) (Tensor.directSum (fun _ : Fin (5 * M) => sharedFirstTensor B)) = projectedTensor ζ B := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.firstProjectionMap, OAI.MatrixMultiplication.AuxiliarySeparation.secondProjectionMap, OAI.MatrixMultiplication.AuxiliarySeparation.thirdProjectionMap, OAI.MatrixMultiplication.AuxiliarySeparation.sharedFirstTensor, OAI.MatrixMultiplication.AuxiliarySeparation.projectedTensor
- def
OAI.MatrixMultiplication.AuxiliarySeparation.separationPolynomialline 159Source documentation
The polynomial after the Fourier projection and square weighting.
def separationPolynomial (ζ : ℂ) (B : Fin M → Tensor ℂ X Y Z) : Tensor (Polynomial ℂ) (X × Fin M) ((Fin M × Y) × Fin M) ((Fin M × Z) × Fin M) := … - def
OAI.MatrixMultiplication.AuxiliarySeparation.separationTargetline 169Source documentation
The surviving tensor: sector labels match on all three legs, while the additional second/third coordinates form a dot product.
def separationTarget (B : Fin M → Tensor ℂ X Y Z) : Tensor ℂ (X × Fin M) ((Fin M × Y) × Fin M) ((Fin M × Z) × Fin M) := … - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.separationPolynomial_coeff_zeroline 175Source documentation
The square-weighted polynomial has exactly the advertised constant tensor.
theorem separationPolynomial_coeff_zero {ζ : ℂ} (hM : 0 < M) (hζ : IsPrimitiveRoot ζ (5 * M)) (B : Fin M → Tensor ℂ X Y Z) : (fun x y z => (separationPolynomial ζ B x y z).coeff 0) = separationTarget B := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.separationPolynomial, OAI.MatrixMultiplication.AuxiliarySeparation.separationTarget
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.separationPolynomial_degreeline 190Source documentation
Its degree is bounded for each fixed finite separation construction.
theorem separationPolynomial_degree {ζ : ℂ} (hM : 0 < M) (hζ : IsPrimitiveRoot ζ (5 * M)) (B : Fin M → Tensor ℂ X Y Z) (x : X × Fin M) (y : (Fin M × Y) × Fin M) (z : (Fin M × Z) × Fin M) : (separationPolynomial ζ B x y z).degree ≤ ((M - 1) ^ 2 : ℕ) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.separationPolynomial
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.restrict_target_scalarsline 204 - def
OAI.MatrixMultiplication.AuxiliarySeparation.firstSeparationMapline 222Source documentation
The first local Fourier map followed by its integer weight.
def firstSeparationMap (ζ t : ℂ) (x : X × Fin M) (r : Fin (5 * M) × X) : ℂ := …
- def
OAI.MatrixMultiplication.AuxiliarySeparation.secondSeparationMapline 226Source documentation
The second local Fourier map followed by its possibly negative weight.
def secondSeparationMap (ζ t : ℂ) (y : (Fin M × Y) × Fin M) (r : Fin (5 * M) × (Fin M × Y)) : ℂ := … - def
OAI.MatrixMultiplication.AuxiliarySeparation.thirdSeparationMapline 231Source documentation
The third local Fourier map followed by its possibly negative weight.
def thirdSeparationMap (ζ t : ℂ) (z : (Fin M × Z) × Fin M) (r : Fin (5 * M) × (Fin M × Z)) : ℂ := … - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.weightedProjection_restrictline 235 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.separationPolynomial_evalline 250Source documentation
At every nonzero parameter the polynomial tensor is an ordinary restriction of exactly
5Mcomplete source copies.theorem separationPolynomial_eval [Fintype X] [Fintype Y] [Fintype Z] {ζ : ℂ} (hM : 0 < M) (hζ : IsPrimitiveRoot ζ (5 * M)) (B : Fin M → Tensor ℂ X Y Z) (t : ℂ) (ht : t ≠ 0) : (fun x y z => (separationPolynomial ζ B x y z).eval t) = Tensor.restrict (firstSeparationMap ζ t) (secondSeparationMap ζ t) (thirdSeparationMap ζ t) (Tensor.directSum (fun _ : Fin (5 * M) => sharedFirstTensor B)) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.separationPolynomial, OAI.MatrixMultiplication.AuxiliarySeparation.firstSeparationMap, OAI.MatrixMultiplication.AuxiliarySeparation.secondSeparationMap, OAI.MatrixMultiplication.AuxiliarySeparation.thirdSeparationMap, OAI.MatrixMultiplication.AuxiliarySeparation.sharedFirstTensor
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.polynomial_degeneration_of_nonzero_restrictionsline 278 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.finiteSeparation_degeneratesToline 306Source documentation
Exact finite separation:
5Msource copies degenerate to all M branches, each retaining an M-dimensional dot-product factor.theorem finiteSeparation_degeneratesTo [Fintype X] [Fintype Y] [Fintype Z] (hM : 0 < M) (B : Fin M → Tensor ℂ X Y Z) : Tensor.DegeneratesTo (Tensor.directSum (fun _ : Fin (5 * M) => sharedFirstTensor B)) (separationTarget B) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.sharedFirstTensor, OAI.MatrixMultiplication.AuxiliarySeparation.separationTarget
- def
OAI.MatrixMultiplication.AuxiliarySeparation.separationFirstEquivline 321Source documentation
The first-leg relabeling adds the trivial first coordinate of the dot product.
def separationFirstEquiv : (X × Fin M) ≃ (Fin M × (X × Unit)) where …
- def
OAI.MatrixMultiplication.AuxiliarySeparation.separationSideEquivline 328Source documentation
The other two relabelings merely reassociate their coordinates.
def separationSideEquiv (A : Type*) : ((Fin M × A) × Fin M) ≃ (Fin M × (A × Fin M)) := Equiv.prodAssoc _ _ _ - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.separationTarget_eq_directSumline 332Source documentation
The separated target, expressed as a genuine full direct sum of products.
theorem separationTarget_eq_directSum (B : Fin M → Tensor ℂ X Y Z) : separationTarget B = Tensor.pullback separationFirstEquiv (separationSideEquiv Y) (separationSideEquiv Z) (Tensor.directSum (fun h => Tensor.product (B h) (Tensor.cyclic (Tensor.cyclic (Tensor.dotPairing (K := ℂ) (Fin M)))))) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.separationTarget, OAI.MatrixMultiplication.AuxiliarySeparation.separationFirstEquiv, OAI.MatrixMultiplication.AuxiliarySeparation.separationSideEquiv
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.finiteSeparation_directSum_degeneratesToline 351Source documentation
The finite separation theorem with the output written literally as a full direct sum of the M branch/dot-product tensors.
theorem finiteSeparation_directSum_degeneratesTo [Fintype X] [Fintype Y] [Fintype Z] (hM : 0 < M) (B : Fin M → Tensor ℂ X Y Z) : Tensor.DegeneratesTo (Tensor.directSum (fun _ : Fin (5 * M) => sharedFirstTensor B)) (Tensor.directSum (fun h => Tensor.product (B h) (Tensor.cyclic (Tensor.cyclic (Tensor.dotPairing (K := ℂ) (Fin M)))))) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.sharedFirstTensor