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 × F
whereE
andF
areCStarModule
s overA
Π i, E i
whereE i
is aCStarModule
overA
andi : ι
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 CStarModule
s
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:
A
as aCStarModule
overA
corresponds toA
A × A
as aCStarModule
overA × A
corresponds toA × A
A × A
as aCStarModule
overA
corresponds toC⋆ᵐᵒᵈ (A × A)
Main definitions #
WithCStarModule E
: a copy ofE
to be equipped with aCStarModule A
structure. Note thatA
is anoutParam
in the classCStarModule
, so it can be inferred from the type ofE
.WithCStarModule.equiv E
: the canonical equivalence betweenWithCStarModule E
andE
.WithCStarModule.linearEquiv ℂ A E
: the canonicalℂ
-module isomorphism betweenWithCStarModule E
andE
.
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⋆ᵐᵒᵈ
.
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⋆ᵐᵒᵈ
.
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.instAddCommGroup E = inst✝
Equations
- WithCStarModule.instSMul E = inst✝
Equations
- WithCStarModule.instModule E = inst✝
WithCStarModule.equiv
preserves the module structure.
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
- WithCStarModule.instUniformSpace = UniformSpace.comap (⇑(WithCStarModule.equiv E)) u
Equations
- WithCStarModule.instBornology = Bornology.induced ⇑(WithCStarModule.equiv E)
WithCStarModule.equiv
as a uniform equivalence between C⋆ᵐᵒᵈ E
and E
.
Equations
- WithCStarModule.uniformEquiv = (WithCStarModule.equiv E).toUniformEquivOfIsUniformInducing ⋯
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.