Theorem: LDL.lowerInv_eq_gramSchmidtBasis
File: Mathlib/LinearAlgebra/Matrix/LDL.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
⊢ lowerInv hS = ((Pi.basisFun 𝕜 n).toMatrix ⇑(gramSchmidtBasis (Pi.basisFun 𝕜 n)))ᵀ
state_after: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
⊢ lowerInv hS = ((Pi.basisFun 𝕜 n).toMatrix ⇑(gramSchmidtBasis (Pi.basisFun 𝕜 n)))ᵀ
tactic: letI := NormedAddCommGroup.ofMatrix hS.transpose
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
⊢ lowerInv hS = ((Pi.basisFun 𝕜 n).toMatrix ⇑(gramSchmidtBasis (Pi.basisFun 𝕜 n)))ᵀ
state_after: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this✝ : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
this : InnerProductSpace 𝕜 (n → 𝕜) := InnerProductSpace.ofMatrix ⋯
⊢ lowerInv hS = ((Pi.basisFun 𝕜 n).toMatrix ⇑(gramSchmidtBasis (Pi.basisFun 𝕜 n)))ᵀ
tactic: letI := InnerProductSpace.ofMatrix hS.transpose
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this✝ : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
this : InnerProductSpace 𝕜 (n → 𝕜) := InnerProductSpace.ofMatrix ⋯
⊢ lowerInv hS = ((Pi.basisFun 𝕜 n).toMatrix ⇑(gramSchmidtBasis (Pi.basisFun 𝕜 n)))ᵀ
state_after: case a
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this✝ : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
this : InnerProductSpace 𝕜 (n → 𝕜) := InnerProductSpace.ofMatrix ⋯
i j : n
⊢ lowerInv hS i j = ((Pi.basisFun 𝕜 n).toMatrix ⇑(gramSchmidtBasis (Pi.basisFun 𝕜 n)))ᵀ i j
tactic: ext i j
state_before: case a
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this✝ : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
this : InnerProductSpace 𝕜 (n → 𝕜) := InnerProductSpace.ofMatrix ⋯
i j : n
⊢ lowerInv hS i j = ((Pi.basisFun 𝕜 n).toMatrix ⇑(gramSchmidtBasis (Pi.basisFun 𝕜 n)))ᵀ i j
state_after: case a
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this✝ : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
this : InnerProductSpace 𝕜 (n → 𝕜) := InnerProductSpace.ofMatrix ⋯
i j : n
⊢ gramSchmidt 𝕜 (⇑(Pi.basisFun 𝕜 n)) i j = (gramSchmidt 𝕜 ⇑(Pi.basisFun 𝕜 n))ᵀᵀ i j
tactic: rw [LDL.lowerInv, Basis.coePiBasisFun.toMatrix_eq_transpose, coe_gramSchmidtBasis]
state_before: case a
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
n : Type u_2
inst✝³ : LinearOrder n
inst✝² : IsWellOrder n fun x x_1 => x < x_1
inst✝¹ : LocallyFiniteOrderBot n
S : Matrix n n 𝕜
inst✝ : Fintype n
hS : S.PosDef
this✝ : NormedAddCommGroup (n → 𝕜) := NormedAddCommGroup.ofMatrix ⋯
this : InnerProductSpace 𝕜 (n → 𝕜) := InnerProductSpace.ofMatrix ⋯
i j : n
⊢ gramSchmidt 𝕜 (⇑(Pi.basisFun 𝕜 n)) i j = (gramSchmidt 𝕜 ⇑(Pi.basisFun 𝕜 n))ᵀᵀ i j
state_after: no goals
tactic: rfl