OAI/LinearAlgebra/MatrixMultiplication/AuxiliarySeparation/Convolution/Basic.lean
19 declarations, 0 contain sorry, 0 declared as axioms
The polynomial multiplication tensor
The coefficient tensor convolution a b represents multiplication of binary forms
of degrees a - 1 and b - 1, or equivalently ordinary coefficient convolution.
The output leg has a + b - 1 coordinates. The definitions also make sense when
an input dimension is zero, while the nonzero and full-output-support statements
use the positive dimensions assumed in Section 5 of the paper.
- def
OAI.MatrixMultiplication.AuxiliarySeparation.convolutionline 24Source documentation
The tensor
C(a,b)of Section 5, in monomial coefficient coordinates.def convolution (a b : ℕ) : Tensor ℂ (Fin a) (Fin b) (Fin (a + b - 1)) := …
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_applyline 27 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_ne_zero_iffline 31 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_eq_one_iffline 37 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_eq_zero_iffline 43 - def
OAI.MatrixMultiplication.AuxiliarySeparation.convolutionOutputline 50Source documentation
Every pair of input monomials has a valid output coordinate.
def convolutionOutput {a b : ℕ} (i : Fin a) (j : Fin b) : Fin (a + b - 1) := … - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_at_outputline 53 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_output_supportedline 58Source documentation
Every output monomial of the expected degree occurs in the product.
theorem convolution_output_supported {a b : ℕ} (ha : 0 < a) (hb : 0 < b) (k : Fin (a + b - 1)) : ∃ (i : Fin a) (j : Fin b), convolution a b i j k = 1 := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.convolution
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_nonzeroline 69 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_nonzero_iffline 79 - theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_commline 100Source documentation
Commuting the two inputs only casts the equal output dimensions.
theorem convolution_comm (a b : ℕ) (i : Fin a) (j : Fin b) (k : Fin (a + b - 1)) : convolution a b i j k = convolution b a j i (Fin.cast (by omega) k) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.convolution, OAI.MatrixMultiplication.AuxiliarySeparation.omega
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_one_leftline 107Source documentation
The boundary tensor
C(1,b)has the coefficient matrix of a dot product.theorem convolution_one_left (b : ℕ) (i : Fin 1) (j : Fin b) (k : Fin (1 + b - 1)) : convolution 1 b i j k = if j.val = k.val then 1 else 0 := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.convolution
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_one_rightline 113Source documentation
The other boundary tensor has the same coordinate identity.
theorem convolution_one_right (a : ℕ) (i : Fin a) (j : Fin 1) (k : Fin (a + 1 - 1)) : convolution a 1 i j k = if i.val = k.val then 1 else 0 := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.convolution
- def
OAI.MatrixMultiplication.AuxiliarySeparation.convolutionOneOutputEquivline 119Source documentation
Relabel the output of
C(1,b)by its actual dimensionb.def convolutionOneOutputEquiv (b : ℕ) : Fin b ≃ Fin (1 + b - 1) := …
- def
OAI.MatrixMultiplication.AuxiliarySeparation.convolutionOneInputEquivline 123Source documentation
Relabel the single input coordinate of
C(1,b)byUnit.def convolutionOneInputEquiv : Unit ≃ Fin 1 where …
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_one_left_dotPairingline 130Source documentation
C(1,b)is the dot-product tensor with the singleton on the first leg.theorem convolution_one_left_dotPairing (b : ℕ) : Tensor.pullback convolutionOneInputEquiv (Equiv.refl (Fin b)) (convolutionOneOutputEquiv b) (convolution 1 b) = Tensor.cyclic (Tensor.cyclic (Tensor.dotPairing (K := ℂ) (Fin b))) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.convolutionOneInputEquiv, OAI.MatrixMultiplication.AuxiliarySeparation.convolutionOneOutputEquiv, OAI.MatrixMultiplication.AuxiliarySeparation.convolution
- def
OAI.MatrixMultiplication.AuxiliarySeparation.convolutionRightOneOutputEquivline 139Source documentation
Relabel the output of
C(a,1)by its actual dimensiona.def convolutionRightOneOutputEquiv (a : ℕ) : Fin a ≃ Fin (a + 1 - 1) := …
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.convolution_one_right_dotPairingline 143Source documentation
C(a,1)is the dot-product tensor with the singleton on the second leg.theorem convolution_one_right_dotPairing (a : ℕ) : Tensor.pullback (Equiv.refl (Fin a)) convolutionOneInputEquiv (convolutionRightOneOutputEquiv a) (convolution a 1) = Tensor.cyclic (Tensor.dotPairing (K := ℂ) (Fin a)) := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.convolutionOneInputEquiv, OAI.MatrixMultiplication.AuxiliarySeparation.convolutionRightOneOutputEquiv, OAI.MatrixMultiplication.AuxiliarySeparation.convolution
- theorem
OAI.MatrixMultiplication.AuxiliarySeparation.contract_convolutionline 152Source documentation
Contracting the coefficient tensor computes ordinary finite convolution.
theorem contract_convolution {a b : ℕ} (x : Fin a → ℂ) (y : Fin b → ℂ) (k : Fin (a + b - 1)) : Tensor.contract (convolution a b) x y k = ∑ i : Fin a, ∑ j : Fin b, if i.val + j.val = k.val then x i * y j else 0 := by …Mentions: OAI.MatrixMultiplication.AuxiliarySeparation.convolution