The star operation, bundled as a star-linear equiv #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We define star_linear_equiv
, 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
star_linear_equiv
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 typeclassis_op R S
and have an instanceis_op R R
for commutativeR
. - Also note that such a definition involving
Rᵐᵒᵖ
oris_op R S
would require adding the appropriatering_hom_inv_pair
instances to be able to define the semilinear equivalence.
If A
is a module over a commutative R
with compatible actions,
then star
is a semilinear equivalence.
Equations
- star_linear_equiv R = {to_fun := has_star.star has_involutive_star.to_has_star, map_add' := _, map_smul' := _, inv_fun := star_add_equiv.inv_fun, left_inv := _, right_inv := _}
The self-adjoint elements of a star module, as a submodule.
Equations
- self_adjoint.submodule R A = {carrier := (self_adjoint A).carrier, add_mem' := _, zero_mem' := _, smul_mem' := _}
The skew-adjoint elements of a star module, as a submodule.
Equations
- skew_adjoint.submodule R A = {carrier := (skew_adjoint A).carrier, add_mem' := _, zero_mem' := _, smul_mem' := _}
The self-adjoint part of an element of a star module, as a linear map.
The skew-adjoint part of an element of a star module, as a linear map.
The decomposition of elements of a star module into their self- and skew-adjoint parts, as a linear equivalence.
Equations
- star_module.decompose_prod_adjoint R A = linear_equiv.of_linear ((self_adjoint_part R).prod (skew_adjoint_part R)) ((self_adjoint.submodule R A).subtype.coprod (skew_adjoint.submodule R A).subtype) _ _