Bruhat profile of an idempotent with invertible corner
ProvedIntMul.OpenAI.idempotent_corner_profileLet be a field, with , and split the coordinates into , , . Let be an idempotent of rank whose corner is invertible. Then for every northeast block (rows , columns ),
where the rows of are indexed by and its columns by (so column of is column of ).
Combined with IntMul.OpenAI.bruhat_rank_profile and IntMul.OpenAI.partial_perm_eq_of_corner_counts, this says the Bruhat pivots of are the pivots of on together with the diagonal of . With IntMul.OpenAI.partial_swap_corner_ranks this gives the partial-swap batching lemma of Jain's notes. An edge frame with compiles into corner transpositions plus one aligned run , , of width , which is a single batched interchange call.
Formalization Note Rows and columns use subtypes of Fin m with natural-number bounds; is a submatrix of .
import Mathlib
namespace IntMul.OpenAI
theorem idempotent_corner_profile {m k : ℕ} {K : Type*} [Field K] (hk : 2 * k ≤ m)
(p : Matrix (Fin m) (Fin m) K) (hp : p * p = p) (hrank : p.rank = m - k)
(hC : (p.submatrix (fun l : Fin k => (⟨l.val, by omega⟩ : Fin m))
(fun r : Fin k => (⟨m - k + r.val, by omega⟩ : Fin m))).det ≠ 0)
(X Y : ℕ) :
(p.submatrix (fun r : {r : Fin m // r.val < X} => r.1) (fun c : {c : Fin m // Y ≤ c.val} => c.1)).rank =
((p.submatrix (fun l : Fin k => (⟨l.val, by omega⟩ : Fin m))
(fun r : Fin k => (⟨m - k + r.val, by omega⟩ : Fin m))).submatrix
(fun l : {l : Fin k // l.val < X} => l.1) (fun r : {r : Fin k // Y ≤ m - k + r.val} => r.1)).rank +
(Finset.univ.filter fun i : Fin m => k ≤ i.val ∧ i.val < m - k ∧ Y ≤ i.val ∧ i.val < X).card := by sorry
end IntMul.OpenAI