OAI/LinearAlgebra/MatrixMultiplication/AuxiliarySeparation/Determinant/Filtration.lean
34 declarations, 0 contain sorry, 0 declared as axioms
The finite determinant filtration of polynomial multiplication
The first leg is kept fixed throughout. The second and third legs use the
explicit quotient/kernel vectors of DeterminantKernel. The coefficient
identity adaptedTensor_reconstruct verifies the actual multiplication on
every basis input; it does not assume a simultaneous triangularization.
- abbrev
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Indexline 24 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.vectorline 27Source documentation
The ordered quotient/kernel vectors in the actual polynomial pair space.
def vector (e : ℕ) : Index e → DeterminantKernel.FormPair ℂ := …
Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantKernel.FormPair
- def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensorline 32Source documentation
All multiplication coefficients in the explicit adapted bases. Here
a=d+1,b=e+1, and no first-leg change of coordinates occurs.def adaptedTensor (d e : ℕ) : Tensor ℂ (Fin (d + 1)) (Index e) (Index (d + e)) | i, .inl j, .inl k => if i.val + j.val = k.val then 1 else 0 | i, .inl j, .inr k => if j.val = e + 1 ∧ i.val < d ∧ e + i.val = k.val then 1 else 0 | _, .inr _, .inl _ => 0 | i, .inr j, .inr k => if i.val + j.val = k.val then 1 else 0 /-- The associated graded tensor, whose two branches still share the first leg. -/Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index
- def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.gradedTensorline 40Source documentation
The associated graded tensor, whose two branches still share the first leg.
def gradedTensor (d e : ℕ) : Tensor ℂ (Fin (d + 1)) (Index e) (Index (d + e)) | i, .inl j, .inl k => if i.val + j.val = k.val then 1 else 0 | _, .inl _, .inr _ => 0 | _, .inr _, .inl _ => 0 | i, .inr j, .inr k => if i.val + j.val = k.val then 1 else 0
Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sum_coordinateline 46 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensor_reconstructline 60Source documentation
Exact coordinate reconstruction of every first-leg slice, in common bases.
theorem adaptedTensor_reconstruct (d e : ℕ) (i : Fin (d + 1)) (j : Index e) : (∑ k : Index (d + e), adaptedTensor d e i j k • vector (d + e) k) = DeterminantKernel.multiply (X ^ i.val) (vector e j) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensor, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.vector, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantKernel.multiply
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensor_uniqueline 95Source documentation
The reconstruction uniquely determines every tensor coefficient.
theorem adaptedTensor_unique (d e : ℕ) (T : Tensor ℂ (Fin (d + 1)) (Index e) (Index (d + e))) (hT : ∀ i j, (∑ k, T i j k • vector (d + e) k) = DeterminantKernel.multiply (X ^ i.val) (vector e j)) : T = adaptedTensor d e := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.vector, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantKernel.multiply, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensor
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.gradedTensor_quotientline 108Source documentation
The quotient branch is exactly
C(a,b+1).theorem gradedTensor_quotient (d e : ℕ) (i : Fin (d + 1)) (j : Fin (e + 2)) (k : Fin (d + e + 2)) : gradedTensor d e i (.inl j) (.inl k) = convolution (d + 1) (e + 2) i j (Fin.cast (by omega) k) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.gradedTensor, OAI.MatrixMultiplication.AuxiliarySeparation.convolution, OAI.MatrixMultiplication.AuxiliarySeparation.omega
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.gradedTensor_kernelline 115Source documentation
The kernel branch is exactly
C(a,b-1).theorem gradedTensor_kernel (d e : ℕ) (i : Fin (d + 1)) (j : Fin e) (k : Fin (d + e)) : gradedTensor d e i (.inr j) (.inr k) = convolution (d + 1) e i j (Fin.cast (by omega) k) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.gradedTensor, OAI.MatrixMultiplication.AuxiliarySeparation.convolution, OAI.MatrixMultiplication.AuxiliarySeparation.omega
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensor_kernel_to_quotientline 121 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.inputScaleline 127Source documentation
Polynomial diagonal maps; scaling the quotient input by
Xclears the negative input-kernel weight without changing the leading tensor.def inputScale (e : ℕ) : Index e → ℂ[X] | .inl _ => X | .inr _ => 1
Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index
- def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.outputScaleline 131 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.diagonalMapline 135 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.restrict_diagonalline 138 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.degenerationline 148Source documentation
A checked polynomial degeneration to the two matched convolution branches.
def degeneration (d e : ℕ) : Tensor.PolynomialRestrictionDegeneration (adaptedTensor d e) (gradedTensor d e) 1 0 1 1 where …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensor, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.gradedTensor
- abbrev
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.OriginalIndexline 186 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.originalBasisline 189Source documentation
The original monomial bases in the
sandwcomponents.def originalBasis (e : ℕ) : Module.Basis (OriginalIndex e) ℂ (DeterminantBasis.BoundedPair ℂ e) := …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.OriginalIndex, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantBasis.BoundedPair
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.degree_shift_ltline 193 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.boundedShiftline 206Source documentation
Multiplication by a fixed first-input monomial between the bounded spaces.
def boundedShift (d e : ℕ) (i : Fin (d + 1)) : Polynomial.degreeLT ℂ (e + 1) →ₗ[ℂ] Polynomial.degreeLT ℂ (d + e + 1) where … - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.boundedMultiplyline 213Source documentation
The same first monomial multiplies both components.
def boundedMultiply (d e : ℕ) (i : Fin (d + 1)) : DeterminantBasis.BoundedPair ℂ e →ₗ[ℂ] DeterminantBasis.BoundedPair ℂ (d + e) := …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantBasis.BoundedPair
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.forget_boundedMultiplyline 217 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensorline 223Source documentation
Polynomial multiplication in its original monomial coordinates.
def sourceTensor (d e : ℕ) : Tensor ℂ (Fin (d + 1)) (OriginalIndex e) (OriginalIndex (d + e)) := …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.OriginalIndex
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor_inl_inlline 228 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor_inr_inrline 235 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor_inl_inrline 242 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor_inr_inlline 247 - def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.originalCoordinateline 253Source documentation
Record the polynomial coordinate and the choice of
sorwseparately.def originalCoordinate (e : ℕ) : OriginalIndex e → Fin (e + 1) × Bool | .inl j => (j, false) | .inr j => (j, true) /-- The source is exactly polynomial convolution tensored with a two-coordinate dot product whose singleton is on the unchanged first leg. -/
Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.OriginalIndex, OAI.MatrixMultiplication.AuxiliarySeparation.convolution
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor_productline 259Source documentation
The source is exactly polynomial convolution tensored with a two-coordinate dot product whose singleton is on the unchanged first leg.
theorem sourceTensor_product (d e : ℕ) : sourceTensor d e = Tensor.pullback (fun i : Fin (d + 1) => (i, ())) (originalCoordinate e) (fun k => (Fin.cast (by omega) (originalCoordinate (d + e) k).1, (originalCoordinate (d + e) k).2)) (Tensor.product (convolution (d + 1) (e + 1)) (Tensor.cyclic (Tensor.cyclic (Tensor.dotPairing (K := ℂ) Bool)))) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.originalCoordinate, OAI.MatrixMultiplication.AuxiliarySeparation.omega, OAI.MatrixMultiplication.AuxiliarySeparation.convolution
- def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.inputChangeline 272Source documentation
The input matrix has adapted vectors as columns in the original basis.
def inputChange (e : ℕ) (j : Index e) (old : OriginalIndex e) : ℂ := …
Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.OriginalIndex
- def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.outputDualChangeline 276Source documentation
The output-dual matrix uses the inverse basis change, as required for tensors.
def outputDualChange (e : ℕ) (k : Index e) (old : OriginalIndex e) : ℂ := …
Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.Index, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.OriginalIndex
- def
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.fixedFirstline 280Source documentation
The first input is unchanged, including throughout the basis change.
def fixedFirst (d : ℕ) (i j : Fin (d + 1)) : ℂ := if i = j then 1 else 0
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.restrict_fixedFirstline 282 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.boundedMultiply_adapted_coordinatesline 291 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor_coordinate_changeline 309Source documentation
A concrete restriction, with the identity first map, changes the original two-copy convolution into the simultaneously triangular coefficient tensor.
theorem sourceTensor_coordinate_change (d e : ℕ) : Tensor.restrict (fixedFirst d) (inputChange e) (outputDualChange (d + e)) (sourceTensor d e) = adaptedTensor d e := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.fixedFirst, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.inputChange, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.outputDualChange, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.sourceTensor, OAI.MatrixMultiplication.AuxiliarySeparation.DeterminantFiltration.adaptedTensor