Documentation

Monlib.LinearAlgebra.InnerAut

Inner automorphisms #

This file defines the inner automorphism of a unitary matrix U as U x Uโปยน and proves that any star-algebraic automorphism on Mโ‚™(โ„‚) is an inner automorphism.

theorem RCLike.pos_ofReal {๐•œ : Type u_1} [RCLike ๐•œ] {x : โ„} :
0 โ‰ค โ†‘x โ†” 0 โ‰ค x

Alias of RCLike.zero_le_real.

theorem RCLike.neg_ofReal {๐•œ : Type u_1} [RCLike ๐•œ] (a : โ„) :
โ†‘a < 0 โ†” a < 0
@[simp]
theorem StarAlgEquiv.trace_preserving {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (f : Matrix n n ๐•œ โ‰ƒโ‹†โ‚[๐•œ] Matrix n n ๐•œ) (x : Matrix n n ๐•œ) :
(f x).trace = x.trace
def unitary.innerAutStarAlg (K : Type u_1) {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (a : โ†ฅ(unitary R)) :
Equations
Instances For
    theorem unitary.innerAutStarAlg_apply {K : Type u_1} {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (U : โ†ฅ(unitary R)) (x : R) :
    (unitary.innerAutStarAlg K U) x = โ†‘U * x * โ†‘(star U)
    @[simp]
    theorem unitary.innerAutStarAlg_apply' {K : Type u_1} {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (U : โ†ฅ(unitary R)) (x : R) :
    (unitary.innerAutStarAlg K U) x = โ†‘U * x * โ†‘Uโปยน
    theorem unitary.innerAutStarAlg_apply'' {K : Type u_1} {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (U : โ†ฅ(unitary R)) (x : R) :
    (unitary.innerAutStarAlg K U) x = โ†‘U * x * star โ†‘U
    theorem unitary.innerAutStarAlg_symm_apply {K : Type u_1} {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (U : โ†ฅ(unitary R)) (x : R) :
    (unitary.innerAutStarAlg K U).symm x = โ†‘(star U) * x * โ†‘U
    @[simp]
    theorem unitary.innerAutStarAlg_symm_apply' {K : Type u_1} {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (U : โ†ฅ(unitary R)) (x : R) :
    (unitary.innerAutStarAlg K U).symm x = โ†‘Uโปยน * x * โ†‘U
    theorem unitary.innerAutStarAlg_symm_apply'' {K : Type u_1} {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (U : โ†ฅ(unitary R)) (x : R) :
    (unitary.innerAutStarAlg K U).symm x = star โ†‘U * x * โ†‘U
    theorem unitary.innerAutStarAlg_symm' {K : Type u_1} {R : Type u_2} [CommSemiring K] [Semiring R] [StarMul R] [Algebra K R] (U : โ†ฅ(unitary R)) :
    instance Pi.coe {k : Type u_1} {s : k โ†’ Type u_2} {r : k โ†’ Type u_3} [(i : k) โ†’ CoeTC (s i) (r i)] :
    CoeTC ((i : k) โ†’ s i) ((i : k) โ†’ r i)
    Equations
    • Pi.coe = { coe := fun (U : (i : k) โ†’ s i) (i : k) => CoeTC.coe (U i) }
    theorem Pi.coe_eq {k : Type u_1} {s : k โ†’ Type u_2} {r : k โ†’ Type u_3} [(i : k) โ†’ CoeTC (s i) (r i)] (U : (i : k) โ†’ s i) :
    (fun (i : k) => CoeTC.coe (U i)) = fun (i : k) => CoeTC.coe (U i)
    instance instCoeTCSubtypeMemSubmonoidUnitary_monlib (R : Type u_1) [Monoid R] [StarMul R] :
    CoeTC (โ†ฅ(unitary R)) R
    Equations
    theorem unitary.pi_mem {k : Type u_1} {s : k โ†’ Type u_2} [(i : k) โ†’ Semiring (s i)] [(i : k) โ†’ StarMul (s i)] (U : (i : k) โ†’ โ†ฅ(unitary (s i))) :
    (fun (i : k) => โ†‘(U i)) โˆˆ unitary ((i : k) โ†’ s i)
    @[reducible, inline]
    abbrev unitary.pi {k : Type u_1} {s : k โ†’ Type u_2} [(i : k) โ†’ Semiring (s i)] [(i : k) โ†’ StarMul (s i)] (U : (i : k) โ†’ โ†ฅ(unitary (s i))) :
    โ†ฅ(unitary ((i : k) โ†’ s i))
    Equations
    • unitary.pi U = โŸจfun (i : k) => โ†‘(U i), โ‹ฏโŸฉ
    Instances For
      theorem unitary.pi_apply {k : Type u_1} {s : k โ†’ Type u_2} [(i : k) โ†’ Semiring (s i)] [(i : k) โ†’ StarMul (s i)] (U : (i : k) โ†’ โ†ฅ(unitary (s i))) {i : k} :
      โ†‘(unitary.pi U) i = โ†‘(U i)
      @[simp]
      theorem Matrix.unitaryGroup.coe_hMul_star_self {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (a : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
      โ†‘(a * star a) = 1
      @[simp]
      theorem Matrix.unitaryGroup.star_coe_eq_coe_star {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
      star โ†‘U = โ†‘(star U)
      @[reducible, inline]
      abbrev Matrix.innerAutStarAlg {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (a : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
      Matrix n n ๐•œ โ‰ƒโ‹†โ‚[๐•œ] Matrix n n ๐•œ

      given a unitary $U$, we have the inner algebraic automorphism, given by $x \mapsto UxU^*$ with its inverse given by $x \mapsto U^* x U$

      Equations
      Instances For
        theorem Matrix.innerAutStarAlg_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
        (Matrix.innerAutStarAlg U) x = โ†‘U * x * โ†‘(star U)
        theorem Matrix.innerAutStarAlg_apply' {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
        (Matrix.innerAutStarAlg U) x = โ†‘U * x * โ†‘Uโปยน
        theorem Matrix.innerAutStarAlg_symm_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
        (Matrix.innerAutStarAlg U).symm x = โ†‘(star U) * x * โ†‘U
        theorem Matrix.innerAutStarAlg_symm_apply' {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
        (Matrix.innerAutStarAlg U).symm x = โ†‘Uโปยน * x * โ†‘U
        @[simp]
        theorem Matrix.innerAutStarAlg_symm {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
        @[reducible, inline]
        abbrev Matrix.innerAut {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
        Matrix n n ๐•œ โ†’โ‚—[๐•œ] Matrix n n ๐•œ

        inner automorphism (matrix.innerAut_star_alg), but as a linear map

        Equations
        Instances For
          @[simp]
          theorem Matrix.innerAut_coe {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          @[simp]
          theorem Matrix.innerAut_inv_coe {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          theorem Matrix.innerAut_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          (Matrix.innerAut U) x = โ†‘U * x * โ†‘Uโปยน
          theorem Matrix.innerAut_apply' {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          (Matrix.innerAut U) x = โ†‘U * x * โ†‘(star U)
          theorem Matrix.innerAut_inv_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          theorem Matrix.innerAut_star_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          (Matrix.innerAut (star U)) x = โ†‘(star U) * x * โ†‘U
          theorem Matrix.innerAut_conjTranspose {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          ((Matrix.innerAut U) x).conjTranspose = (Matrix.innerAut U) x.conjTranspose
          theorem Matrix.innerAut_comp_innerAut {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (Uโ‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (Uโ‚‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          Matrix.innerAut Uโ‚ โˆ˜โ‚— Matrix.innerAut Uโ‚‚ = Matrix.innerAut (Uโ‚ * Uโ‚‚)
          theorem Matrix.innerAut_apply_innerAut {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (Uโ‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (Uโ‚‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          (Matrix.innerAut Uโ‚) ((Matrix.innerAut Uโ‚‚) x) = (Matrix.innerAut (Uโ‚ * Uโ‚‚)) x
          theorem Matrix.innerAut_eq_iff {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) (y : Matrix n n ๐•œ) :
          theorem Matrix.unitaryGroup.toLinearEquiv_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : n โ†’ ๐•œ) :
          (Matrix.UnitaryGroup.toLinearEquiv U) x = (โ†‘U).mulVec x
          theorem Matrix.unitaryGroup.toLinearEquiv_eq {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : n โ†’ ๐•œ) :
          theorem Matrix.unitaryGroup.toLin'_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : n โ†’ ๐•œ) :
          (Matrix.UnitaryGroup.toLin' U) x = (โ†‘U).mulVec x
          theorem Matrix.unitaryGroup.toLin'_eq {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : n โ†’ ๐•œ) :
          (Matrix.UnitaryGroup.toLin' U) x = (Matrix.toLin' โ†‘U) x
          theorem Matrix.toLinAlgEquiv'_apply' {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [DecidableEq n] (x : Matrix n n ๐•œ) :
          Matrix.toLinAlgEquiv' x = Matrix.toLin' x
          theorem Matrix.innerAut.spectrum_eq {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          spectrum ๐•œ (Matrix.toLin' ((Matrix.innerAut U) x)) = spectrum ๐•œ (Matrix.toLin' x)

          the spectrum of $U x U^*$ for any unitary $U$ is equal to the spectrum of $x$

          theorem Matrix.innerAut_one {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] :
          theorem Matrix.innerAut_comp_innerAut_inv {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          theorem Matrix.innerAut_apply_innerAut_inv {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (Uโ‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (Uโ‚‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          (Matrix.innerAut Uโ‚) ((Matrix.innerAut Uโ‚‚โปยน) x) = (Matrix.innerAut (Uโ‚ * Uโ‚‚โปยน)) x
          theorem Matrix.innerAut_apply_innerAut_inv_self {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          theorem Matrix.innerAut_inv_apply_innerAut_self {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          theorem Matrix.innerAut_apply_zero {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          theorem Matrix.innerAut_conj_spectrum_eq {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ โ†’โ‚—[๐•œ] Matrix n n ๐•œ) :
          spectrum ๐•œ (Matrix.innerAut Uโปยน โˆ˜โ‚— x โˆ˜โ‚— Matrix.innerAut U) = spectrum ๐•œ x

          the spectrum of a linear map $x$ equals the spectrum of $f_U^{-1} x f_U$ for some unitary $U$ and $f_U$ is the inner automorphism (matrix.innerAut)

          theorem Matrix.innerAut_apply_one {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :

          the inner automorphism is unital

          theorem Matrix.innerAutStarAlg_apply_eq_innerAut_apply {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          theorem Matrix.innerAut.map_mul {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) (y : Matrix n n ๐•œ) :
          theorem Matrix.innerAut.map_star {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          theorem Matrix.innerAut_inv_eq_star {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] {x : โ†ฅ(Matrix.unitaryGroup n ๐•œ)} :
          theorem Matrix.unitaryGroup.coe_inv {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          โ†‘Uโปยน = (โ†‘U)โปยน
          theorem Matrix.innerAut.map_inv {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          theorem Matrix.innerAut_apply_trace_eq {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          ((Matrix.innerAut U) x).trace = x.trace

          the trace of $f_U(x)$ is equal to the trace of $x$

          theorem Matrix.exists_innerAut_iff_exists_innerAut_inv {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] {P : Matrix n n ๐•œ โ†’ Prop} (x : Matrix n n ๐•œ) :
          (โˆƒ (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)), P ((Matrix.innerAut U) x)) โ†” โˆƒ (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)), P ((Matrix.innerAut Uโปยน) x)
          theorem Matrix.innerAut.is_injective {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          theorem Matrix.innerAut_isHermitian_iff {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [Field ๐•œ] [StarRing ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
          x.IsHermitian โ†” ((Matrix.innerAut U) x).IsHermitian

          $x$ is Hermitian if and only if $f_U(x)$ is Hermitian

          theorem Matrix.innerAut_posSemidef_iff {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) {a : Matrix n n ๐•œ} :
          ((Matrix.innerAut U) a).PosSemidef โ†” a.PosSemidef
          theorem Matrix.PosSemidef.innerAut {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] {a : Matrix n n ๐•œ} (ha : a.PosSemidef) (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          ((Matrix.innerAut U) a).PosSemidef
          theorem Matrix.unitaryGroup_conjTranspose {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          (โ†‘U).conjTranspose = โ†‘Uโปยน
          theorem Matrix.innerAut_posDef_iff {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) {x : Matrix n n ๐•œ} :
          ((Matrix.innerAut U) x).PosDef โ†” x.PosDef

          $f_U(x)$ is positive definite if and only if $x$ is positive definite

          theorem Matrix.PosDef.innerAut {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] {a : Matrix n n ๐•œ} (ha : a.PosDef) (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
          ((Matrix.innerAut U) a).PosDef
          theorem Matrix.IsAlmostHermitian.schur_decomp {n : Type u_2} [Fintype n] [DecidableEq n] {๐•œ : Type u_1} [RCLike ๐•œ] [DecidableEq ๐•œ] {A : Matrix n n ๐•œ} (hA : A.IsAlmostHermitian) :
          โˆƒ (D : n โ†’ ๐•œ) (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)), (Matrix.innerAut U) (Matrix.diagonal D) = A

          Schur decomposition, but only for almost Hermitian matrices: given an almost Hermitian matrix $A$, there exists a diagonal matrix $D$ and a unitary matrix $U$ such that $UDU^*=A$

          theorem toEuclideanLin_one {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] :
          Matrix.toEuclideanLin 1 = 1
          theorem StarAlgEquiv.of_matrix_is_inner {n : Type u_2} {๐•œ : Type u_1} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (f : Matrix n n ๐•œ โ‰ƒโ‹†โ‚[๐•œ] Matrix n n ๐•œ) :
          โˆƒ (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)), Matrix.innerAutStarAlg U = f

          any $^*$-isomorphism on $M_n$ is an inner automorphism

          noncomputable def StarAlgEquiv.of_matrix_unitary {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (f : Matrix n n ๐•œ โ‰ƒโ‹†โ‚[๐•œ] Matrix n n ๐•œ) :
          โ†ฅ(Matrix.unitaryGroup n ๐•œ)
          Equations
          Instances For
            theorem StarAlgEquiv.eq_innerAut {n : Type u_2} {๐•œ : Type u_1} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (f : Matrix n n ๐•œ โ‰ƒโ‹†โ‚[๐•œ] Matrix n n ๐•œ) :
            Matrix.innerAutStarAlg f.of_matrix_unitary = f
            theorem Matrix.IsHermitian.spectral_theorem'' {n : Type u_2} [Fintype n] [DecidableEq n] {๐•œ : Type u_1} [RCLike ๐•œ] {x : Matrix n n ๐•œ} (hx : x.IsHermitian) :
            x = (Matrix.innerAut hx.eigenvectorUnitary) (Matrix.diagonal (RCLike.ofReal โˆ˜ hx.eigenvalues))
            theorem Matrix.coe_diagonal_eq_diagonal_coe {n : Type u_1} {๐•œ : Type u_2} [RCLike ๐•œ] [DecidableEq n] (x : n โ†’ โ„) :
            Matrix.diagonal (RCLike.ofReal โˆ˜ x) = CoeTC.coe โˆ˜ Matrix.diagonal x
            theorem Matrix.diagonal.spectrum {๐•œ : Type u_1} {n : Type u_2} [Field ๐•œ] [Fintype n] [DecidableEq n] (A : n โ†’ ๐•œ) :
            spectrum ๐•œ (Matrix.toLin' (Matrix.diagonal A)) = {x : ๐•œ | โˆƒ (i : n), A i = x}
            theorem Matrix.IsHermitian.spectrum {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] {x : Matrix n n ๐•œ} (hx : x.IsHermitian) :
            spectrum ๐•œ (Matrix.toLin' x) = {x_1 : ๐•œ | โˆƒ (i : n), โ†‘(hx.eigenvalues i) = x_1}
            theorem Matrix.IsHermitian.hasEigenvalue_iff {n : Type u_2} [Fintype n] [DecidableEq n] {๐•œ : Type u_1} [RCLike ๐•œ] [DecidableEq ๐•œ] {x : Matrix n n ๐•œ} (hx : x.IsHermitian) (ฮฑ : ๐•œ) :
            Module.End.HasEigenvalue (Matrix.toLin' x) ฮฑ โ†” โˆƒ (i : n), โ†‘(hx.eigenvalues i) = ฮฑ
            theorem Matrix.innerAut_commutes_with_map_lid_symm {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
            TensorProduct.map 1 (Matrix.innerAut U) โˆ˜โ‚— โ†‘(TensorProduct.lid ๐•œ (Matrix n n ๐•œ)).symm = โ†‘(TensorProduct.lid ๐•œ (Matrix n n ๐•œ)).symm โˆ˜โ‚— Matrix.innerAut U
            theorem Matrix.innerAut_commutes_with_lid_comm {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
            โ†‘(TensorProduct.lid ๐•œ (Matrix n n ๐•œ)) โˆ˜โ‚— โ†‘(TensorProduct.comm ๐•œ (Matrix n n ๐•œ) ๐•œ) โˆ˜โ‚— TensorProduct.map (Matrix.innerAut U) 1 = Matrix.innerAut U โˆ˜โ‚— โ†‘(TensorProduct.lid ๐•œ (Matrix n n ๐•œ)) โˆ˜โ‚— โ†‘(TensorProduct.comm ๐•œ (Matrix n n ๐•œ) ๐•œ)
            theorem Matrix.unitaryGroup.conj_mem {n : Type u_1} {๐•œ : Type u_2} [RCLike ๐•œ] [Fintype n] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
            (โ†‘U).conj โˆˆ Matrix.unitaryGroup n ๐•œ
            def Matrix.unitaryGroup.conj {n : Type u_1} {๐•œ : Type u_2} [RCLike ๐•œ] [Fintype n] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
            โ†ฅ(Matrix.unitaryGroup n ๐•œ)
            Equations
            Instances For
              theorem Matrix.unitaryGroup.conj_coe {n : Type u_1} {๐•œ : Type u_2} [RCLike ๐•œ] [Fintype n] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
              โ†‘(Matrix.unitaryGroup.conj U) = (โ†‘U).conj
              theorem Matrix.innerAut.conj {n : Type u_1} {๐•œ : Type u_2} [RCLike ๐•œ] [Fintype n] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) :
              theorem Matrix.UnitaryGroup.mul_star_self {n : Type u_1} {๐•œ : Type u_2} [RCLike ๐•œ] [Fintype n] [DecidableEq n] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
              โ†‘U * star โ†‘U = 1
              theorem Matrix.kronecker_mem_unitaryGroup {n : Type u_2} {๐•œ : Type u_3} [Fintype n] [RCLike ๐•œ] [DecidableEq n] {p : Type u_1} [Fintype p] [DecidableEq p] (Uโ‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (Uโ‚‚ : โ†ฅ(Matrix.unitaryGroup p ๐•œ)) :
              Matrix.kroneckerMap (fun (x1 x2 : ๐•œ) => x1 * x2) โ†‘Uโ‚ โ†‘Uโ‚‚ โˆˆ Matrix.unitaryGroup (n ร— p) ๐•œ
              def Matrix.unitaryGroup.kronecker {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [RCLike ๐•œ] [DecidableEq n] {p : Type u_3} [Fintype p] [DecidableEq p] (Uโ‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (Uโ‚‚ : โ†ฅ(Matrix.unitaryGroup p ๐•œ)) :
              โ†ฅ(Matrix.unitaryGroup (n ร— p) ๐•œ)
              Equations
              Instances For
                theorem Matrix.unitaryGroup.kronecker_coe {n : Type u_2} {๐•œ : Type u_3} [Fintype n] [RCLike ๐•œ] [DecidableEq n] {p : Type u_1} [Fintype p] [DecidableEq p] (Uโ‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (Uโ‚‚ : โ†ฅ(Matrix.unitaryGroup p ๐•œ)) :
                โ†‘(Matrix.unitaryGroup.kronecker Uโ‚ Uโ‚‚) = Matrix.kroneckerMap (fun (x1 x2 : ๐•œ) => x1 * x2) โ†‘Uโ‚ โ†‘Uโ‚‚
                theorem Matrix.innerAut_kronecker {n : Type u_2} {๐•œ : Type u_3} [Fintype n] [RCLike ๐•œ] [DecidableEq n] {p : Type u_1} [Fintype p] [DecidableEq p] (Uโ‚ : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (Uโ‚‚ : โ†ฅ(Matrix.unitaryGroup p ๐•œ)) (x : Matrix n n ๐•œ) (y : Matrix p p ๐•œ) :
                Matrix.kroneckerMap (fun (x1 x2 : ๐•œ) => x1 * x2) ((Matrix.innerAut Uโ‚) x) ((Matrix.innerAut Uโ‚‚) y) = (Matrix.innerAut (Matrix.unitaryGroup.kronecker Uโ‚ Uโ‚‚)) (Matrix.kroneckerMap (fun (x1 x2 : ๐•œ) => x1 * x2) x y)
                theorem Matrix.PosSemidef.kronecker {๐•œ : Type u_3} [RCLike ๐•œ] {n : Type u_1} {p : Type u_2} [Fintype n] [Fintype p] [DecidableEq n] [DecidableEq p] {x : Matrix n n ๐•œ} {y : Matrix p p ๐•œ} (hx : x.PosSemidef) (hy : y.PosSemidef) :
                (Matrix.kroneckerMap (fun (x1 x2 : ๐•œ) => x1 * x2) x y).PosSemidef
                theorem Matrix.PosDef.kronecker {๐•œ : Type u_1} {n : Type u_2} {p : Type u_3} [RCLike ๐•œ] [DecidableEq ๐•œ] [Fintype n] [Fintype p] [DecidableEq n] [DecidableEq p] {x : Matrix n n ๐•œ} {y : Matrix p p ๐•œ} (hx : x.PosDef) (hy : y.PosDef) :
                (Matrix.kroneckerMap (fun (x1 x2 : ๐•œ) => x1 * x2) x y).PosDef
                theorem Matrix.unitaryGroup.injective_hMul {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [DecidableEq n] [RCLike ๐•œ] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (x : Matrix n n ๐•œ) (y : Matrix n n ๐•œ) :
                x = y โ†” x * โ†‘U = y * โ†‘U
                theorem Matrix.innerAutStarAlg_equiv_toLinearMap {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [DecidableEq n] [RCLike ๐•œ] [DecidableEq ๐•œ] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
                theorem Matrix.innerAutStarAlg_equiv_symm_toLinearMap {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [DecidableEq n] [RCLike ๐•œ] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) :
                theorem Matrix.innerAut.comp_inj {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [DecidableEq n] [RCLike ๐•œ] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (S : Matrix n n ๐•œ โ†’โ‚—[๐•œ] Matrix n n ๐•œ) (T : Matrix n n ๐•œ โ†’โ‚—[๐•œ] Matrix n n ๐•œ) :
                S = T โ†” Matrix.innerAut U โˆ˜โ‚— S = Matrix.innerAut U โˆ˜โ‚— T
                theorem Matrix.innerAut.inj_comp {n : Type u_1} {๐•œ : Type u_2} [Fintype n] [DecidableEq n] [RCLike ๐•œ] (U : โ†ฅ(Matrix.unitaryGroup n ๐•œ)) (S : Matrix n n ๐•œ โ†’โ‚—[๐•œ] Matrix n n ๐•œ) (T : Matrix n n ๐•œ โ†’โ‚—[๐•œ] Matrix n n ๐•œ) :
                S = T โ†” S โˆ˜โ‚— Matrix.innerAut U = T โˆ˜โ‚— Matrix.innerAut U