The star operation, bundled as a star-linear equiv #
We define starLinearEquiv, which is the star operation bundled as a star-linear map.
It is defined on a star algebra A over the base ring R.
This file also provides some lemmas that need Algebra.Module.Basic imported to prove.
TODO #
- Define
starLinearEquivfor noncommutativeR. We only the commutative case for now since, in the noncommutative case, the ring hom needs to reverse the order of multiplication. This requires a ring hom of typeR →+* Rᵐᵒᵖ, which is very undesirable in the commutative case. One way out would be to define a new typeclassIsOp R Sand have an instanceIsOp R Rfor commutativeR. - Also note that such a definition involving
Rᵐᵒᵖoris_op R Swould require adding the appropriateRingHomInvPairinstances to be able to define the semilinear equivalence.
Alias of star_natCast_smul.
Alias of star_intCast_smul.
Alias of star_inv_natCast_smul.
Alias of star_inv_intCast_smul.
Alias of star_ratCast_smul.
If A is a module over a commutative R with compatible actions,
then star is a semilinear equivalence.
Equations
- starLinearEquiv R = let __src := starAddEquiv; { toFun := star, map_add' := ⋯, map_smul' := ⋯, invFun := __src.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
The self-adjoint elements of a star module, as a submodule.
Equations
- selfAdjoint.submodule R A = let __src := selfAdjoint A; { toAddSubmonoid := __src.toAddSubmonoid, smul_mem' := ⋯ }
Instances For
The skew-adjoint elements of a star module, as a submodule.
Equations
- skewAdjoint.submodule R A = let __src := skewAdjoint A; { toAddSubmonoid := __src.toAddSubmonoid, smul_mem' := ⋯ }
Instances For
The self-adjoint part of an element of a star module, as a linear map.
Equations
Instances For
The skew-adjoint part of an element of a star module, as a linear map.
Equations
Instances For
The decomposition of elements of a star module into their self- and skew-adjoint parts, as a linear equivalence.
Equations
- StarModule.decomposeProdAdjoint R A = LinearEquiv.ofLinear ((selfAdjointPart R).prod (skewAdjointPart R)) ((selfAdjoint.submodule R A).subtype.coprod (skewAdjoint.submodule R A).subtype) ⋯ ⋯