Bruhat involution of a partial-swap frame
ProvedIntMul.OpenAI.partial_swap_bruhat_runsLet be a field and an idempotent with a lower–lower Bruhat factorization : are lower triangular with nonzero diagonal, and is a matrix with at most one in each row and each column. Order the coordinates as , and consider the partial-swap frame
Then with lower triangular with nonzero diagonal, where is the permutation matrix
In words: the Bruhat involution of swaps exactly for the pivots of , and fixes every other coordinate.
This is the "runs" principle in Jain's flag-basis note. Frames along the edges of the two-stage bit interchange are partial swaps. By Lemma 10 of the OpenAI preprint, an edge then costs one recursive field interchange per transposition, and a run of consecutive pivots is a single interchange of contiguous chunks. So the child widths entering the moment certificates are read off from the pivots of the idempotents. With IntMul.OpenAI.idempotent_corner_profile this gives the partial-swap batching lemma: corner transpositions plus one aligned run of width .
Formalization Note The coordinates are Fin (m + m) via finSumFinEquiv (left summand = ). Matrices are blocks built with Matrix.fromBlocks.
import Mathlib open Matrix
namespace IntMul.OpenAI
theorem partial_swap_bruhat_runs {m : ℕ} {K : Type*} [Field K] [DecidableEq K]
(p F₁ π F₂ : Matrix (Fin m) (Fin m) K) (hp : p * p = p)
(hF₁ : ∀ i j, i < j → F₁ i j = 0) (hd₁ : ∀ i, F₁ i i ≠ 0)
(hF₂ : ∀ i j, i < j → F₂ i j = 0) (hd₂ : ∀ i, F₂ i i ≠ 0)
(h01 : ∀ i j, π i j = 0 ∨ π i j = 1)
(hrow : ∀ i j j', π i j = 1 → π i j' = 1 → j = j')
(hcol : ∀ i i' j, π i j = 1 → π i' j = 1 → i = i')
(hfac : p = F₁ * π * F₂) :
∃ E₁ E₂ : Matrix (Fin (m + m)) (Fin (m + m)) K,
(∀ i j, i < j → E₁ i j = 0) ∧ (∀ i, E₁ i i ≠ 0) ∧
(∀ i j, i < j → E₂ i j = 0) ∧ (∀ i, E₂ i i ≠ 0) ∧
(Matrix.fromBlocks (1 - p) p p (1 - p)).submatrix finSumFinEquiv.symm finSumFinEquiv.symm =
E₁ * (Matrix.fromBlocks
(Matrix.diagonal fun i => if ∃ j, π i j = 1 then (0 : K) else 1) π πᵀ
(Matrix.diagonal fun j => if ∃ i, π i j = 1 then (0 : K) else 1)).submatrix
finSumFinEquiv.symm finSumFinEquiv.symm * E₂ := by sorry
end IntMul.OpenAI