Samplinglib
Lean gate not recorded for this source state main · 0e31a3cda412
production module

AutoSamplingTheory.TechnicalLemmas.Measure.DisplacementJacobianMatrixLogDet

3 named declarations scanned from AutoSamplingTheory/TechnicalLemmas/Measure/DisplacementJacobianMatrixLogDet.lean.

Imports
Imported by
Placeholder scan
0 declaration(s) flagged
Gate status
Partial

Declarations

theorem AutoSamplingTheory.TechnicalLemmas.Measure.DisplacementJacobianMatrixLogDet.det_affineIdentityMatrix_eq_prod_eigenvalues Partial Not mapped

- The literal determinant of the affine identity segment is the product of the affine transforms of the eigenvalues of an SPD matrix. The proof diagonalizes `A` by the canonical unitary eigenbasis, transports the affine combination through the star-algebra automorphism, removes the unitary change of basis at determinant level, and evaluates the diagonal determinant. It therefore does not depend on any equality between ordered eigenvalue functions of `A` and `(1-t) I + t A`.

theorem det_affineIdentityMatrix_eq_prod_eigenvalues
    {ι : Type*} [Fintype ι] [DecidableEq ι]
    (A : Matrix ι ι ℝ) (hA : A.PosDef) (t : ℝ) :
    Matrix.det ((1 - t) • (1 : Matrix ι ι ℝ) + t • A) =
      ∏ i, ((1 - t) + t * hA.isHermitian.eigenvalues i) := by
  let B : Matrix ι ι ℝ := (1 - t) • (1 : Matrix ι ι ℝ) + t • A
  let U : unitary (Matrix ι ι ℝ) := star hA.isHermitian.eigenvectorUnitary
  let φ : Matrix ι ι ℝ ≃⋆ₐ[ℝ] Matrix ι ι ℝ :=
    Unitary.conjStarAlgAut ℝ (Matrix ι ι ℝ) U
  have hmap :
      φ B = (1 - t) • φ (1 : Matrix ι ι ℝ) + t • φ A := by
    calc
      φ B = φ ((1 - t) • (1 : Matrix ι ι ℝ) + t • A) := rfl
      _ = φ ((1 - t) • (1 : Matrix ι ι ℝ)) + φ (t • A) :=
        φ.map_add _ _
      _ = (1 - t) • φ (1 : Matrix ι ι ℝ) + t • φ A := by
        rw [map_smul φ, map_smul φ]
  have hone : φ (1 : Matrix ι ι ℝ) = 1 := φ.map_one
  have hA_diag : φ A = Matrix.diagonal hA.isHermitian.eigenvalues := by
    dsimp [φ, U]
    exact hA.isHermitian.conjStarAlgAut_star_eigenvectorUnitary
  have hdiag :
      φ B = (1 - t) • (1 : Matrix ι ι ℝ) +
        t • Matrix.diagonal hA.isHermitian.eigenvalues := by
    rw [hmap, hone, hA_diag]
  have hdetφ : Matrix.det (φ B) = Matrix.det B := by
    dsimp [φ]
    exact det_conjStarAlgAut_eq U B
  calc
    Matrix.det B = Matrix.det (φ B) := hdetφ.symm
    _ = Matrix.det
        ((1 - t) • (1 : Matrix ι ι ℝ) +
          t • Matrix.diagonal hA.isHermitian.eigenvalues) := by
      rw [hdiag]
    _ = ∏ i, ((1 - t) + t * hA.isHermitian.eigenvalues i) :=
      det_affineIdentity_diagonal hA.isHermitian.eigenvalues t

/-- The finite-spectrum log-det of the affine eigenvalues is exactly the
literal log determinant of the affine matrix. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.DisplacementJacobianMatrixLogDet.spectrumLogDet_affineIdentity_eigenvalues_eq_log_det Partial Not mapped

- The finite-spectrum log-det of the affine eigenvalues is exactly the literal log determinant of the affine matrix.

theorem spectrumLogDet_affineIdentity_eigenvalues_eq_log_det
    {ι : Type*} [Fintype ι] [DecidableEq ι]
    (A : Matrix ι ι ℝ) (hA : A.PosDef) (t : ℝ)
    (ht0 : 0 ≤ t) (ht1 : t ≤ 1) :
    spectrumLogDet
        (affineIdentitySpectrum t hA.isHermitian.eigenvalues) =
      Real.log (Matrix.det ((1 - t) • (1 : Matrix ι ι ℝ) + t • A)) := by
  unfold spectrumLogDet affineIdentitySpectrum
  rw [det_affineIdentityMatrix_eq_prod_eigenvalues A hA t]
  exact (Real.log_prod (fun i _ =>
    (affineIdentityEigenvalue_pos (hA.eigenvalues_pos i) ht0 ht1).ne')).symm

/-- Literal SPD matrix form of the `-log det` convexity used in the entropy
half of Chewi Theorem 1.4.5. -/
theorem AutoSamplingTheory.TechnicalLemmas.Measure.DisplacementJacobianMatrixLogDet.neg_log_det_affineIdentity_le Partial Not mapped

- Literal SPD matrix form of the `-log det` convexity used in the entropy half of Chewi Theorem 1.4.5.

theorem neg_log_det_affineIdentity_le
    {ι : Type*} [Fintype ι] [DecidableEq ι]
    (A : Matrix ι ι ℝ) (hA : A.PosDef) (t : ℝ)
    (ht0 : 0 ≤ t) (ht1 : t ≤ 1) :
    -Real.log (Matrix.det ((1 - t) • (1 : Matrix ι ι ℝ) + t • A)) ≤
      t * (-Real.log (Matrix.det A)) := by
  have hineq := neg_spectrumLogDet_affineIdentity_le
    hA.isHermitian.eigenvalues t (fun i => hA.eigenvalues_pos i) ht0 ht1
  rw [spectrumLogDet_affineIdentity_eigenvalues_eq_log_det A hA t ht0 ht1,
    spectrumLogDet_eigenvalues_eq_log_det A hA] at hineq
  exact hineq

end

end DisplacementJacobianMatrixLogDet
end Measure
end TechnicalLemmas
end AutoSamplingTheory