Type synonym for types with a CStarModule structure #
It is often the case that we want to construct a CStarModule instance on a type that is already
endowed with a norm, but this norm is not the one associated to its CStarModule structure. For
this reason, we create a type synonym WithCStarModule which is endowed with the requisite
CStarModule instance. We also introduce the scoped notation C⋆ᵐᵒᵈ for this type synonym.
The common use cases are, when A is a C⋆-algebra:
E × FwhereEandFareCStarModules overAΠ i, E iwhereE iis aCStarModuleoverAandi : ιwithιaFintype
In this way, the set up is very similar to the WithLp type synonym, although there is no way to
reuse WithLp because the norms do not coincide in general.
The WithCStarModule synonym is of vital importance, especially because the CStarModule class
marks A as an outParam. Indeed, we want to infer A from the type of E, but, as with modules,
a type E can be a CStarModule over different C⋆-algebras. For example, note that if A is a
C⋆-algebra, then so is A × A, and therefore we may consider both A and A × A as CStarModules
over themselves, respectively. However, we may also consider A × A as a CStarModule over A.
However, by utilizing the type synonym, these actually correspond to different types, namely:
Aas aCStarModuleoverAcorresponds toAA × Aas aCStarModuleoverA × Acorresponds toA × AA × Aas aCStarModuleoverAcorresponds toC⋆ᵐᵒᵈ (A × A)
Main definitions #
WithCStarModule A E: a copy ofEto be equipped with aCStarModule Astructure.WithCStarModule.equiv A E: the canonical equivalence betweenWithCStarModule A EandE.WithCStarModule.linearEquiv ℂ A E: the canonicalℂ-module isomorphism betweenWithCStarModule A EandE.
Implementation notes #
The pattern here is the same one as is used by Lex for order structures; it avoids having a
separate synonym for each type, and allows all the structure-copying code to be shared.
A type synonym for endowing a given type with a CStarModule structure. This has the scoped
notation C⋆ᵐᵒᵈ.
Equations
- WithCStarModule A E = E
Instances For
A type synonym for endowing a given type with a CStarModule structure. This has the scoped
notation C⋆ᵐᵒᵈ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical equivalence between C⋆ᵐᵒᵈ(A, E) and E. This should always be used to
convert back and forth between the representations.
Equations
- WithCStarModule.equiv A E = Equiv.refl (WithCStarModule A E)
Instances For
Equations
- WithCStarModule.instInhabited A E = inst✝
Equations
- WithCStarModule.instUnique A E = inst✝
C⋆ᵐᵒᵈ(A, E) inherits various module-adjacent structures from E. #
Equations
- WithCStarModule.instZero A E = inst✝
Equations
- WithCStarModule.instAdd A E = inst✝
Equations
- WithCStarModule.instSub A E = inst✝
Equations
- WithCStarModule.instNeg A E = inst✝
Equations
- WithCStarModule.instAddMonoid A E = inst✝
Equations
- WithCStarModule.instSubNegMonoid A E = inst✝
Equations
- WithCStarModule.instSubNegZeroMonoid A E = inst✝
Equations
- WithCStarModule.instAddCommGroup A E = inst✝
Equations
- WithCStarModule.instSMul A E = inst✝
Equations
- WithCStarModule.instModule A E = inst✝
WithCStarModule.equiv preserves the module structure.
WithCStarModule.equiv as an additive equivalence.
Equations
- WithCStarModule.addEquiv A E = { toFun := ⇑(WithCStarModule.equiv A E), invFun := ⇑(WithCStarModule.equiv A E).symm, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }
Instances For
WithCStarModule.equiv as a linear equivalence.
Equations
- WithCStarModule.linearEquiv R A E = { toFun := ⇑(WithCStarModule.equiv A E), map_add' := ⋯, map_smul' := ⋯, invFun := ⇑(WithCStarModule.equiv A E).symm, left_inv := ⋯, right_inv := ⋯ }
Instances For
C⋆ᵐᵒᵈ(A, E) inherits the uniformity and bornology from E. #
Equations
Equations
WithCStarModule.equiv as a uniform equivalence between C⋆ᵐᵒᵈ(A, E) and E.
Equations
Instances For
WithCStarModule.equiv as a continuous linear equivalence between C⋆ᵐᵒᵈ E and E.
Equations
- WithCStarModule.equivL R = { toLinearEquiv := WithCStarModule.linearEquiv R A E, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
Prod #
Register simplification lemmas for the applications of WithCStarModule (E × F) elements, as
the usual lemmas for Prod will not trigger.
Note that the unapplied versions of these lemmas are deliberately omitted, as they break the use of the type synonym.
Pi #
Register simplification lemmas for the applications of WithCStarModule (Π i, E i) elements, as
the usual lemmas for Pi will not trigger.
We also provide a CoeFun instance for WithCStarModule (Π i, E i).
Equations
- WithCStarModule.instCoeFunForall E = { coe := ⇑(WithCStarModule.equiv A ((i : ι) → E i)) }
Note that the unapplied versions of these lemmas are deliberately omitted, as they break the use of the type synonym.