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 E: a copy ofEto be equipped with aCStarModule Astructure. Note thatAis anoutParamin the classCStarModule, so it can be inferred from the type ofE.WithCStarModule.equiv E: the canonical equivalence betweenWithCStarModule EandE.WithCStarModule.linearEquiv ℂ A E: the canonicalℂ-module isomorphism betweenWithCStarModule 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⋆ᵐᵒᵈ in the WithCStarModule namespace.
Note: because the C⋆-algebra A over which E is a CStarModule is listed as an outParam in
that class, we don't pass it as an unused argument to WithCStarModule, unlike the p parameter
in WithLp, which can vary.
Equations
- WithCStarModule E = E
Instances For
A type synonym for endowing a given type with a CStarModule structure.
This has the scoped notation C⋆ᵐᵒᵈ in the WithCStarModule namespace.
Note: because the C⋆-algebra A over which E is a CStarModule is listed as an outParam in
that class, we don't pass it as an unused argument to WithCStarModule, unlike the p parameter
in WithLp, which can vary.
Equations
- WithCStarModule.«termC⋆ᵐᵒᵈ» = Lean.ParserDescr.node `WithCStarModule.«termC⋆ᵐᵒᵈ» 1024 (Lean.ParserDescr.symbol "C⋆ᵐᵒᵈ")
Instances For
The canonical equivalence between WithCStarModule E and E. This should always be used to
convert back and forth between the representations.
Equations
Instances For
Equations
- WithCStarModule.instInhabited E = inst✝
Equations
- WithCStarModule.instUnique E = inst✝
WithCStarModule E inherits various module-adjacent structures from E. #
Equations
- WithCStarModule.instZero E = inst✝
Equations
- WithCStarModule.instAdd E = inst✝
Equations
- WithCStarModule.instSub E = inst✝
Equations
- WithCStarModule.instNeg E = inst✝
Equations
- WithCStarModule.instAddMonoid E = inst✝
Equations
- WithCStarModule.instSubNegMonoid E = inst✝
Equations
Equations
- WithCStarModule.instAddCommGroup E = inst✝
Equations
- WithCStarModule.instSMul E = inst✝
Equations
- WithCStarModule.instModule E = inst✝
WithCStarModule.equiv preserves the module structure.
WithCStarModule.equiv as an additive equivalence.
Equations
- WithCStarModule.addEquiv E = { toFun := ⇑(WithCStarModule.equiv E), invFun := ⇑(WithCStarModule.equiv E).symm, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }
Instances For
WithCStarModule.equiv as a linear equivalence.
Equations
- WithCStarModule.linearEquiv R E = { toFun := ⇑(WithCStarModule.equiv E), map_add' := ⋯, map_smul' := ⋯, invFun := ⇑(WithCStarModule.equiv E).symm, left_inv := ⋯, right_inv := ⋯ }
Instances For
WithCStarModule E inherits the uniformity and bornology from E. #
Equations
Equations
WithCStarModule.equiv as a continuous linear equivalence between C⋆ᵐᵒᵈ E and E.
Equations
- WithCStarModule.equivL R = { toLinearEquiv := WithCStarModule.linearEquiv R 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 ((i : ι) → E i)) }
Note that the unapplied versions of these lemmas are deliberately omitted, as they break the use of the type synonym.