Zulip Chat Archive

Stream: mathlib4

Topic: Some lemmas about linear maps


Niels Voss (Jan 27 2026 at 04:37):

I need the following lemmas (along with a few more I haven't proven yet) for #33731. Do these belong in mathlib?

import Mathlib

namespace LinearMap
open InnerProductSpace

variable {๐•œ : Type*} [RCLike ๐•œ]
  {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] [FiniteDimensional ๐•œ E]
  {F : Type*} [NormedAddCommGroup F] [InnerProductSpace ๐•œ F] [FiniteDimensional ๐•œ F]
  (T : E โ†’โ‚—[๐•œ] F)

theorem isSymmetric_self_comp_adjoint :
    (T โˆ˜โ‚— adjoint T).IsSymmetric := T.isPositive_self_comp_adjoint.isSymmetric

-- LinearMap.isSymmetric_adjoint_mul_self but domain and range can be different
theorem isSymmetric_adjoint_comp_self
  : (adjoint T โˆ˜โ‚— T).IsSymmetric := T.isPositive_adjoint_comp_self.isSymmetric

theorem eigenvalues_adjoint_comp_self_nonneg
  {n : โ„•} (hn : Module.finrank ๐•œ E = n) (i : Fin n)
  : 0 โ‰ค (LinearMap.isSymmetric_adjoint_comp_self T).eigenvalues hn i := by
  apply LinearMap.IsPositive.nonneg_eigenvalues
  exact T.isPositive_adjoint_comp_self

/--
7.64(b) in [axler2024].
-/
lemma ker_adjoint_comp_self : ker (adjoint T โˆ˜โ‚— T) = ker T := by
  apply le_antisymm
  ยท intro v hv
    have := calc
      โ€–T vโ€– ^ 2 = โŸชT v, T vโŸซ_๐•œ := (inner_self_eq_norm_sq_to_K (T v)).symm
      _ = โŸช(adjoint T โˆ˜โ‚— T) v, vโŸซ_๐•œ := (adjoint_inner_left T v (T v)).symm
      _ = โŸช0, vโŸซ_๐•œ := by rw [hv]
      _ = 0 := inner_zero_left v
    simp_all
  ยท intro v hv
    simp_all

lemma injective_adjoint_comp_self_iff
  : Function.Injective (adjoint T โˆ˜โ‚— T) โ†” Function.Injective T := by
  repeat rw [โ†LinearMap.ker_eq_bot]
  rw [ker_adjoint_comp_self]

Last updated: Feb 28 2026 at 14:05 UTC