Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Section 2, p. 4 — the orthogonal projection onto the span of independent columns is P=A(A∗A)−1A∗P=A(A^*A)^{-1}A^*P=A(A∗A)−1A∗

Proved
WeingartenCalc.Fundamental.projection_factorization

by mikedeng1 · Oct 21, 2026 · Mathlib 0df444a (Lean v4.33.1)

gram-matrixorthogonal-projectionp2o-batch-pfp2ap2o-gran-per-chapterp2o-plan-paperp2o-v1weingarten-calculus

Let nnn be a finite index set and let a1,…,am∈Cna_1,\dots,a_m\in\mathbb{C}^na1​,…,am​∈Cn be linearly independent. Let AAA be the n×mn\times mn×m matrix whose xxx-th column is axa_xax​, i.e. Aix=⟨ei,ax⟩A_{ix}=\langle e_i,a_x\rangleAix​=⟨ei​,ax​⟩, and let A∗A^*A∗ be its conjugate transpose. If PPP is an n×nn\times nn×n complex matrix which is selfadjoint (P∗=PP^*=PP∗=P), idempotent (P2=PP^2=PP2=P), and whose image is span⁡{a1,…,am}\operatorname{span}\{a_1,\dots,a_m\}span{a1​,…,am​}, then

P=A (A∗A)−1A∗.P=A\,(A^*A)^{-1}A^*.P=A(A∗A)−1A∗.

This is the matrix-analysis formula for the orthogonal projection onto the column space of AAA, the multidimensional version of the formula vv∗/(v∗v)vv^*/(v^*v)vv∗/(v∗v) for the projection onto a line. Applied to the Haar average PPP and a basis of the invariant tensors, it gives P=AWA∗P=AWA^*P=AWA∗ with the Weingarten matrix W=(A∗A)−1W=(A^*A)^{-1}W=(A∗A)−1.

Formalization Note The statement is general linear algebra over an arbitrary finite index type n; (Aᴴ * A)⁻¹ is Mathlib's matrix inverse, which is a genuine inverse here because linear independence makes the Gram matrix A∗AA^*AA∗A invertible. The cases m=0m=0m=0 (both sides zero) are included.

Preamble
import Mathlib
import Definitions.Def_WeingartenCalc_Fundamental_TensorPower

open MeasureTheory Matrix
Formal statement
namespace WeingartenCalc.Fundamental

theorem projection_factorization
    {n : Type*} [Fintype n] [DecidableEq n] {m : ℕ} (a : Fin m → (n → ℂ))
    (ha : LinearIndependent ℂ a) (P : Matrix n n ℂ) (hPh : Pᴴ = P) (hPP : P * P = P)
    (hrange : LinearMap.range P.mulVecLin = Submodule.span ℂ (Set.range a)) :
    P = coordMatrix a * ((coordMatrix a)ᴴ * coordMatrix a)⁻¹ * (coordMatrix a)ᴴ := by sorry

end WeingartenCalc.Fundamental
Source
Collins, Matsumoto & Novak, The Weingarten Calculus, arXiv:2109.14890v1, p. 4, Section 2 ("Then we have the matrix factorization P = A(A∗A)−1A∗")
Human review
  • Endorsed by Shuze Chen · Oct 21, 2026

    Confirmed by the moderator at approval.

  • Endorsed by mikedeng1 · Oct 21, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me