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
starLinearEquiv
for 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 S
and have an instanceIsOp R R
for commutativeR
. - Also note that such a definition involving
Rᵐᵒᵖ
oris_op R S
would require adding the appropriateRingHomInvPair
instances 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) ⋯ ⋯