Koszul flattenings: proof internals #
Proofs behind Complexitylib.Algebraic.LinearAlgebra.Tensor.Koszul.
u ∧ u ∧ X = 0:wedgeMatrix (p + 1) u * wedgeMatrix p u = 0. The two ways of inserting a pair{i, i'}into ap-setKcarry opposite signs.- If
u i₀ ≠ 0, the rowsK ∪ {i₀}and columnsKwithi₀ ∉ KofwedgeMatrix p uform an invertible diagonal submatrix, so its rank is at least(n - 1).choose p, wheren = card α. - Hence, by
rank A + rank B ≤ card mforA * B = 0and Pascal's rule, the rank ofwedgeMatrix (p + 1) uis at mostn.choose (p + 1) - (n - 1).choose p = (n - 1).choose (p + 1). - The Koszul flattening of
u ⊗ v ⊗ wfactors throughwedgeMatrix p u, so its rank is at most(n - 1).choose p; subadditivity and closedness of bounded-rank matrices transfer the bound to rank and border rank.
theorem
Algebraic.Tensor3.Internal.wedgeCoeff_pair_antisymm
{α : Type u_1}
[LinearOrder α]
(J K : Finset α)
(i i' : α)
:
wedgeCoeff J (insert i' K) i * wedgeCoeff (insert i' K) K i' = -(wedgeCoeff J (insert i K) i' * wedgeCoeff (insert i K) K i)
The contributions of (i, i') and (i', i) to u ∧ u ∧ e_K cancel.
theorem
Algebraic.Tensor3.Internal.sum_wedgeCoeff_mul
{α : Type u_1}
[LinearOrder α]
[Fintype α]
{p : ℕ}
(J : Finset α)
{K : Finset α}
(hK : K.card = p)
(i i' : α)
:
∑ I : { I : Finset α // I.card = p + 1 }, wedgeCoeff J (↑I) i * wedgeCoeff (↑I) K i' = wedgeCoeff J (insert i' K) i * wedgeCoeff (insert i' K) K i'
theorem
Algebraic.Tensor3.Internal.wedgeCoeff_insert_ne
{α : Type u_1}
[LinearOrder α]
{i₀ i : α}
{I : Finset α}
(hne : i ≠ i₀)
:
theorem
Algebraic.Tensor3.Internal.wedgeCoeff_insert_of_ne
{α : Type u_1}
[LinearOrder α]
{i₀ i : α}
{I I' : Finset α}
(hi₀ : i₀ ∉ I)
(hi₀' : i₀ ∉ I')
(hne : I ≠ I')
:
theorem
Algebraic.Tensor3.Internal.wedgeMatrix_mul_wedgeMatrix
{α : Type u_1}
[LinearOrder α]
[Fintype α]
(p : ℕ)
(u : α → ℂ)
:
u ∧ u ∧ X = 0.
theorem
Algebraic.Tensor3.Internal.le_rank_wedgeMatrix
{α : Type u_1}
[LinearOrder α]
[Fintype α]
(p : ℕ)
{u : α → ℂ}
{i₀ : α}
(h : u i₀ ≠ 0)
:
If u i₀ ≠ 0, then u ∧ · has rank at least (n - 1).choose p on Λ^p.
theorem
Algebraic.Tensor3.Internal.rank_wedgeMatrix_le
{α : Type u_1}
[LinearOrder α]
[Fintype α]
(p : ℕ)
(u : α → ℂ)
:
u ∧ · has rank at most (n - 1).choose p on Λ^p.
theorem
Algebraic.Tensor3.Internal.koszulFlattening_add
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LinearOrder α]
[Fintype α]
(p : ℕ)
(S T : Tensor3 α β γ)
:
theorem
Algebraic.Tensor3.Internal.koszulFlattening_zero
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LinearOrder α]
[Fintype α]
(p : ℕ)
:
theorem
Algebraic.Tensor3.Internal.koszulFlattening_smul
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LinearOrder α]
[Fintype α]
(p : ℕ)
(c : ℂ)
(T : Tensor3 α β γ)
:
theorem
Algebraic.Tensor3.Internal.koszulFlattening_finset_sum
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LinearOrder α]
[Fintype α]
(p : ℕ)
{ι : Type u_4}
(s : Finset ι)
(T : ι → Tensor3 α β γ)
:
theorem
Algebraic.Tensor3.Internal.continuous_koszulFlattening
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LinearOrder α]
[Fintype α]
(p : ℕ)
:
theorem
Algebraic.Tensor3.Internal.koszulFlattening_outer
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LinearOrder α]
[Fintype α]
(p : ℕ)
(u : α → ℂ)
(v : β → ℂ)
(w : γ → ℂ)
:
koszulFlattening p (outer u v w) = (Matrix.of fun (Jk : { J : Finset α // J.card = p + 1 } × γ) (J : { J : Finset α // J.card = p + 1 }) =>
if Jk.1 = J then w Jk.2 else 0) * wedgeMatrix p u * Matrix.of fun (I : { I : Finset α // I.card = p }) (Ij : { I : Finset α // I.card = p } × β) =>
if I = Ij.1 then v Ij.2 else 0
The Koszul flattening of u ⊗ v ⊗ w is (u ∧ ·) ⊗ w vᵀ, factored through
wedgeMatrix p u.
theorem
Algebraic.Tensor3.Internal.rank_koszulFlattening_le_of_borderRankLE
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
[LinearOrder α]
[Fintype α]
[Fintype β]
[Fintype γ]
(p : ℕ)
{T : Tensor3 α β γ}
{r : ℕ}
(h : T.BorderRankLE r)
: