Maximal self-adjoint subrings #
This file introduces the IsMaximalSelfAdjoint R α typeclass, which records that the
TrivialStar ring R carries the self-adjoint part of a star ring α. It bundles an
additive, R-linear map selfadjMap : α →+ R that inverts algebraMap R α on self-adjoint
elements. The guiding example is R = ℝ, α = ℂ: it lets a quantity such as the trace of a
Hermitian matrix be valued in ℝ instead of ℂ, reflecting that physical observables are
self-adjoint and take real expectation values.
IsMaximalSelfAdjoint R α witnesses that R is the maximal TrivialStar subring of the
star ring α, via an additive map selfadjMap : α →+ R collecting the self-adjoint part of
each element. This lets HermitianMat.trace return 𝕜 when 𝕜 already has a trivial star,
and the "clean" underlying type otherwise, e.g. ℝ when the input field is ℂ.
The additive map sending an element of
αto its self-adjoint part inR.selfadjMappulls scalar multiplication byRout of its argument.- selfadj_algebra {a : α} : IsSelfAdjoint a → (algebraMap R α) (selfadjMap a) = a
On self-adjoint elements,
selfadjMapis a section ofalgebraMap R α.
Instances
Every TrivialStar CommSemiring is its own maximal self adjoints.
Equations
- instTrivialStar_IsMaximalSelfAdjoint = { selfadjMap := AddMonoidHom.id R, selfadj_smul := ⋯, selfadj_algebra := ⋯ }
ℝ is the maximal self adjoint elements over RCLike
Equations
- instRCLike_IsMaximalSelfAdjoint = { selfadjMap := RCLike.re, selfadj_smul := ⋯, selfadj_algebra := ⋯ }