Morphisms of star algebras #
This file defines morphisms between R
-algebras (unital or non-unital) A
and B
where both
A
and B
are equipped with a star
operation. These morphisms, namely StarAlgHom
and
NonUnitalStarAlgHom
are direct extensions of their non-star
red counterparts with a field
map_star
which guarantees they preserve the star operation. We keep the type classes as generic
as possible, in keeping with the definition of NonUnitalAlgHom
in the non-unital case. In this
file, we only assume Star
unless we want to talk about the zero map as a
NonUnitalStarAlgHom
, in which case we need StarAddMonoid
. Note that the scalar ring R
is not required to have a star operation, nor do we need StarRing
or StarModule
structures on
A
and B
.
As with NonUnitalAlgHom
, in the non-unital case the multiplications are not assumed to be
associative or unital, or even to be compatible with the scalar actions. In a typical application,
the operations will satisfy compatibility conditions making them into algebras (albeit possibly
non-associative and/or non-unital) but such conditions are not required here for the definitions.
The primary impetus for defining these types is that they constitute the morphisms in the categories
of unital C⋆-algebras (with StarAlgHom
s) and of C⋆-algebras (with NonUnitalStarAlgHom
s).
Main definitions #
Tags #
non-unital, algebra, morphism, star
Non-unital star algebra homomorphisms #
A non-unital ⋆-algebra homomorphism is a non-unital algebra homomorphism between
non-unital R
-algebras A
and B
equipped with a star
operation, and this homomorphism is
also star
-preserving.
- toFun : A → B
- map_smul' : ∀ (m : R) (x : A), self.toFun (m • x) = (MonoidHom.id R) m • self.toFun x
By definition, a non-unital ⋆-algebra homomorphism preserves the
star
operation.
Instances For
A non-unital ⋆-algebra homomorphism is a non-unital algebra homomorphism between
non-unital R
-algebras A
and B
equipped with a star
operation, and this homomorphism is
also star
-preserving.
Equations
- «term_→⋆ₙₐ_» = Lean.ParserDescr.trailingNode `«term_→⋆ₙₐ_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " →⋆ₙₐ ") (Lean.ParserDescr.cat `term 25))
Instances For
A non-unital ⋆-algebra homomorphism is a non-unital algebra homomorphism between
non-unital R
-algebras A
and B
equipped with a star
operation, and this homomorphism is
also star
-preserving.
Equations
- One or more equations did not get rendered due to their size.
Instances For
NonUnitalStarAlgHomClass F R A B
asserts F
is a type of bundled non-unital ⋆-algebra
homomorphisms from A
to B
.
Instances
Turn an element of a type F
satisfying NonUnitalAlgHomClass F R A B
and StarHomClass F A B
into an actual NonUnitalStarAlgHom
. This is declared as the default coercion from F
to
A →⋆ₙₐ[R] B
.
Equations
- ↑f = { toNonUnitalAlgHom := NonUnitalAlgHomClass.toNonUnitalAlgHom f, map_star' := ⋯ }
Instances For
Equations
- NonUnitalStarAlgHomClass.instCoeTCNonUnitalStarAlgHomOfStarHomClass = { coe := NonUnitalStarAlgHomClass.toNonUnitalStarAlgHom }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
See Note [custom simps projection]
Equations
Instances For
Copy of a NonUnitalStarAlgHom
with a new toFun
equal to the old one. Useful
to fix definitional equalities.
Equations
- f.copy f' h = { toFun := f', map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯, map_mul' := ⋯, map_star' := ⋯ }
Instances For
The identity as a non-unital ⋆-algebra homomorphism.
Equations
- NonUnitalStarAlgHom.id R A = { toNonUnitalAlgHom := 1, map_star' := ⋯ }
Instances For
The composition of non-unital ⋆-algebra homomorphisms, as a non-unital ⋆-algebra homomorphism.
Equations
- f.comp g = { toNonUnitalAlgHom := f.comp g.toNonUnitalAlgHom, map_star' := ⋯ }
Instances For
Equations
- NonUnitalStarAlgHom.instZero = { zero := let __src := 0; { toNonUnitalAlgHom := __src, map_star' := ⋯ } }
Equations
- NonUnitalStarAlgHom.instInhabited = { default := 0 }
Equations
- NonUnitalStarAlgHom.instMonoidWithZero = MonoidWithZero.mk ⋯ ⋯
If a monoid R
acts on another monoid S
, then a non-unital star algebra homomorphism
over S
can be viewed as a non-unital star algebra homomorphism over R
.
Equations
- NonUnitalStarAlgHom.restrictScalars R f = { toNonUnitalAlgHom := NonUnitalAlgHom.restrictScalars R (NonUnitalAlgHomClass.toNonUnitalAlgHom f), map_star' := ⋯ }
Instances For
Unital star algebra homomorphisms #
A ⋆-algebra homomorphism is an algebra homomorphism between R
-algebras A
and B
equipped with a star
operation, and this homomorphism is also star
-preserving.
- toFun : A → B
- commutes' : ∀ (r : R), (↑↑self.toRingHom).toFun ((algebraMap R A) r) = (algebraMap R B) r
By definition, a ⋆-algebra homomorphism preserves the
star
operation.
Instances For
A ⋆-algebra homomorphism is an algebra homomorphism between R
-algebras A
and B
equipped with a star
operation, and this homomorphism is also star
-preserving.
Equations
- «term_→⋆ₐ_» = Lean.ParserDescr.trailingNode `«term_→⋆ₐ_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " →⋆ₐ ") (Lean.ParserDescr.cat `term 25))
Instances For
A ⋆-algebra homomorphism is an algebra homomorphism between R
-algebras A
and B
equipped with a star
operation, and this homomorphism is also star
-preserving.
Equations
- One or more equations did not get rendered due to their size.
Instances For
StarAlgHomClass F R A B
states that F
is a type of ⋆-algebra homomorphisms.
You should also extend this typeclass when you extend StarAlgHom
.
Instances
Turn an element of a type F
satisfying AlgHomClass F R A B
and StarHomClass F A B
into an
actual StarAlgHom
. This is declared as the default coercion from F
to A →⋆ₐ[R] B
.
Equations
- ↑f = { toAlgHom := ↑f, map_star' := ⋯ }
Instances For
Equations
- StarAlgHomClass.instCoeTCStarAlgHom = { coe := StarAlgHomClass.toStarAlgHom }
Copy of a StarAlgHom
with a new toFun
equal to the old one. Useful
to fix definitional equalities.
Equations
- f.copy f' h = { toFun := f', map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯, map_star' := ⋯ }
Instances For
The identity as a StarAlgHom
.
Equations
- StarAlgHom.id R A = { toAlgHom := AlgHom.id R A, map_star' := ⋯ }
Instances For
algebraMap R A
as a StarAlgHom
when A
is a star algebra over R
.
Equations
- StarAlgHom.ofId R A = { toFun := ⇑(algebraMap R A), map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯, map_star' := ⋯ }
Instances For
Equations
- StarAlgHom.instInhabited = { default := StarAlgHom.id R A }
The composition of ⋆-algebra homomorphisms, as a ⋆-algebra homomorphism.
Equations
- f.comp g = { toAlgHom := f.comp g.toAlgHom, map_star' := ⋯ }
Instances For
A unital morphism of ⋆-algebras is a NonUnitalStarAlgHom
.
Equations
- f.toNonUnitalStarAlgHom = { toFun := (↑↑f.toRingHom).toFun, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯, map_mul' := ⋯, map_star' := ⋯ }
Instances For
Operations on the product type #
Note that this is copied from Algebra.Hom.NonUnitalAlg
.
The first projection of a product is a non-unital ⋆-algebra homomorphism.
Equations
- NonUnitalStarAlgHom.fst R A B = { toNonUnitalAlgHom := NonUnitalAlgHom.fst R A B, map_star' := ⋯ }
Instances For
The second projection of a product is a non-unital ⋆-algebra homomorphism.
Equations
- NonUnitalStarAlgHom.snd R A B = { toNonUnitalAlgHom := NonUnitalAlgHom.snd R A B, map_star' := ⋯ }
Instances For
The Pi.prod
of two morphisms is a morphism.
Equations
- f.prod g = { toNonUnitalAlgHom := f.prod g.toNonUnitalAlgHom, map_star' := ⋯ }
Instances For
Taking the product of two maps with the same domain is equivalent to taking the product of their codomains.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The left injection into a product is a non-unital algebra homomorphism.
Equations
- NonUnitalStarAlgHom.inl R A B = NonUnitalStarAlgHom.prod 1 0
Instances For
The right injection into a product is a non-unital algebra homomorphism.
Equations
- NonUnitalStarAlgHom.inr R A B = NonUnitalStarAlgHom.prod 0 1
Instances For
The first projection of a product is a ⋆-algebra homomorphism.
Equations
- StarAlgHom.fst R A B = { toAlgHom := AlgHom.fst R A B, map_star' := ⋯ }
Instances For
The second projection of a product is a ⋆-algebra homomorphism.
Equations
- StarAlgHom.snd R A B = { toAlgHom := AlgHom.snd R A B, map_star' := ⋯ }
Instances For
The Pi.prod
of two morphisms is a morphism.
Equations
- f.prod g = { toAlgHom := f.prod g.toAlgHom, map_star' := ⋯ }
Instances For
Taking the product of two maps with the same domain is equivalent to taking the product of their codomains.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Star algebra equivalences #
A ⋆-algebra equivalence is an equivalence preserving addition, multiplication, scalar
multiplication and the star operation, which allows for considering both unital and non-unital
equivalences with a single structure. Currently, AlgEquiv
requires unital algebras, which is
why this structure does not extend it.
- toFun : A → B
- invFun : B → A
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
By definition, a ⋆-algebra equivalence preserves the
star
operation.By definition, a ⋆-algebra equivalence commutes with the action of scalars.
Instances For
A ⋆-algebra equivalence is an equivalence preserving addition, multiplication, scalar
multiplication and the star operation, which allows for considering both unital and non-unital
equivalences with a single structure. Currently, AlgEquiv
requires unital algebras, which is
why this structure does not extend it.
Equations
- «term_≃⋆ₐ_» = Lean.ParserDescr.trailingNode `«term_≃⋆ₐ_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≃⋆ₐ ") (Lean.ParserDescr.cat `term 25))
Instances For
A ⋆-algebra equivalence is an equivalence preserving addition, multiplication, scalar
multiplication and the star operation, which allows for considering both unital and non-unital
equivalences with a single structure. Currently, AlgEquiv
requires unital algebras, which is
why this structure does not extend it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The class that directly extends RingEquivClass
and SMulHomClass
.
Mostly an implementation detail for StarAlgEquivClass
.
- map_smulₛₗ : ∀ (f : F) (c : R) (x : A), f (c • x) = id c • f x
Instances
StarAlgEquivClass F R A B
asserts F
is a type of bundled ⋆-algebra equivalences between
A
and B
.
You should also extend this typeclass when you extend StarAlgEquiv
.
By definition, a ⋆-algebra equivalence preserves the
star
operation.
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Turn an element of a type F
satisfying AlgEquivClass F R A B
and StarHomClass F A B
into
an actual StarAlgEquiv
. This is declared as the default coercion from F
to A ≃⋆ₐ[R] B
.
Equations
- ↑f = { toRingEquiv := ↑f, map_star' := ⋯, map_smul' := ⋯ }
Instances For
Any type satisfying AlgEquivClass
and StarHomClass
can be cast into StarAlgEquiv
via
StarAlgEquivClass.toStarAlgEquiv
.
Equations
- StarAlgEquivClass.instCoeHead = { coe := StarAlgEquivClass.toStarAlgEquiv }
The inverse of a star algebra isomorphism is a star algebra isomorphism.
Equations
- e.symm = { toRingEquiv := e.symm, map_star' := ⋯, map_smul' := ⋯ }
Instances For
Auxiliary definition to avoid looping in dsimp
with StarAlgEquiv.symm_mk
.
Equations
- StarAlgEquiv.symm_mk.aux f f' h₁ h₂ h₃ h₄ h₅ h₆ = { toFun := f, invFun := f', left_inv := h₁, right_inv := h₂, map_mul' := h₃, map_add' := h₄, map_star' := h₅, map_smul' := h₆ }.symm
Instances For
Transitivity of StarAlgEquiv
.
Equations
- e₁.trans e₂ = { toRingEquiv := e₁.trans e₂.toRingEquiv, map_star' := ⋯, map_smul' := ⋯ }
Instances For
If a (unital or non-unital) star algebra morphism has an inverse, it is an isomorphism of star algebras.
Equations
- StarAlgEquiv.ofStarAlgHom f g h₁ h₂ = { toFun := ⇑f, invFun := ⇑g, left_inv := h₁, right_inv := h₂, map_mul' := ⋯, map_add' := ⋯, map_star' := ⋯, map_smul' := ⋯ }
Instances For
Promote a bijective star algebra homomorphism to a star algebra equivalence.
Equations
- StarAlgEquiv.ofBijective f hf = { toFun := ⇑f, invFun := (RingEquiv.ofBijective f hf).invFun, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯, map_star' := ⋯, map_smul' := ⋯ }