Unitization of a non-unital algebra #
Given a non-unital R
-algebra A
(given via the type classes
[NonUnitalRing A] [Module R A] [SMulCommClass R A A] [IsScalarTower R A A]
) we construct
the minimal unital R
-algebra containing A
as an ideal. This object Unitization R A
is
a type synonym for R × A
on which we place a different multiplicative structure, namely,
(r₁, a₁) * (r₂, a₂) = (r₁ * r₂, r₁ • a₂ + r₂ • a₁ + a₁ * a₂)
where the multiplicative identity
is (1, 0)
.
Note, when A
is a unital R
-algebra, then Unitization R A
constructs a new multiplicative
identity different from the old one, and so in general Unitization R A
and A
will not be
isomorphic even in the unital case. This approach actually has nice functorial properties.
There is a natural coercion from A
to Unitization R A
given by fun a ↦ (0, a)
, the image
of which is a proper ideal (TODO), and when R
is a field this ideal is maximal. Moreover,
this ideal is always an essential ideal (it has nontrivial intersection with every other nontrivial
ideal).
Every non-unital algebra homomorphism from A
into a unital R
-algebra B
has a unique
extension to a (unital) algebra homomorphism from Unitization R A
to B
.
Main definitions #
Unitization R A
: the unitization of a non-unitalR
-algebraA
.Unitization.algebra
: the unitization ofA
as a (unital)R
-algebra.Unitization.coeNonUnitalAlgHom
: coercion as a non-unital algebra homomorphism.NonUnitalAlgHom.toAlgHom φ
: the extension of a non-unital algebra homomorphismφ : A → B
into a unitalR
-algebraB
to an algebra homomorphismUnitization R A →ₐ[R] B
.Unitization.lift
: the universal property of the unitization, the extensionNonUnitalAlgHom.toAlgHom
actually implements an equivalence(A →ₙₐ[R] B) ≃ (Unitization R A ≃ₐ[R] B)
Main results #
AlgHom.ext'
: an extensionality lemma for algebra homomorphisms whose domain isUnitization R A
; it suffices that they agree onA
.
TODO #
- prove the unitization operation is a functor between the appropriate categories
- prove the image of the coercion is an essential ideal, maximal if scalars are a field.
The minimal unitization of a non-unital R
-algebra A
. This is just a type synonym for
R × A
.
Equations
- Unitization R A = (R × A)
Instances For
Equations
- Unitization.instCoeTCOfZero = { coe := Unitization.inr }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- Unitization.instInhabited = instInhabitedProd
Equations
- Unitization.instZero = Prod.instZero
Equations
- Unitization.instAdd = Prod.instAdd
Equations
- Unitization.instNeg = Prod.instNeg
Equations
- Unitization.instAddSemigroup = Prod.instAddSemigroup
Equations
- Unitization.instAddZeroClass = Prod.instAddZeroClass
Equations
- Unitization.instAddMonoid = Prod.instAddMonoid
Equations
- Unitization.instAddGroup = Prod.instAddGroup
Equations
- Unitization.instAddCommSemigroup = Prod.instAddCommSemigroup
Equations
- Unitization.instAddCommMonoid = Prod.instAddCommMonoid
Equations
- Unitization.instAddCommGroup = Prod.instAddCommGroup
Equations
- Unitization.instSMul = Prod.smul
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- Unitization.instDistribMulAction = Prod.distribMulAction
Equations
- Unitization.instModule = Prod.instModule
The identity map between Unitization R A
and R × A
as an AddEquiv
.
Equations
- Unitization.addEquiv R A = AddEquiv.refl (Unitization R A)
Instances For
To show a property hold on all Unitization R A
it suffices to show it holds
on terms of the form inl r + a
.
This can be used as induction x
.
This cannot be marked @[ext]
as it ends up being used instead of LinearMap.prod_ext
when
working with R × A
.
The canonical R
-linear inclusion A → Unitization R A
.
Equations
- Unitization.inrHom R A = { toFun := Unitization.inr, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The canonical R
-linear projection Unitization R A → A
.
Equations
- Unitization.sndHom R A = { toFun := Unitization.snd, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Multiplicative structure #
Equations
- Unitization.instOne = { one := (1, 0) }
Equations
- Unitization.instMulOneClass = MulOneClass.mk ⋯ ⋯
Equations
- Unitization.instNonAssocSemiring = NonAssocSemiring.mk ⋯ ⋯ ⋯ ⋯
Equations
- Unitization.instCommMonoid = CommMonoid.mk ⋯
Equations
- Unitization.instSemiring = Semiring.mk ⋯ ⋯ ⋯ ⋯ Monoid.npow ⋯ ⋯
Equations
- Unitization.instCommSemiring = CommSemiring.mk ⋯
Equations
- Unitization.instNonAssocRing = NonAssocRing.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- Unitization.instCommRing = CommRing.mk ⋯
The canonical inclusion of rings R →+* Unitization R A
.
Equations
- Unitization.inlRingHom R A = { toFun := Unitization.inl, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Star structure #
Equations
- Unitization.instStar = { star := fun (ra : Unitization R A) => (star ra.fst, star ra.snd) }
Equations
- Unitization.instStarAddMonoid = StarAddMonoid.mk ⋯
Equations
- ⋯ = ⋯
Equations
- Unitization.instStarRing = StarRing.mk ⋯
Algebra structure #
Equations
- Unitization.instAlgebra S R A = Algebra.mk ((Unitization.inlRingHom R A).comp (algebraMap S R)) ⋯ ⋯
The canonical R
-algebra projection Unitization R A → R
.
Equations
- Unitization.fstHom R A = { toFun := Unitization.fst, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
The coercion from a non-unital R
-algebra A
to its unitization Unitization R A
realized as a non-unital algebra homomorphism.
Equations
- Unitization.inrNonUnitalAlgHom R A = { toFun := Unitization.inr, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯, map_mul' := ⋯ }
Instances For
The coercion from a non-unital R
-algebra A
to its unitization Unitization R A
realized as a non-unital star algebra homomorphism.
Equations
- Unitization.inrNonUnitalStarAlgHom R A = { toNonUnitalAlgHom := Unitization.inrNonUnitalAlgHom R A, map_star' := ⋯ }
Instances For
The star algebra equivalence obtained by restricting Unitization.inrNonUnitalStarAlgHom
to its range.
Equations
Instances For
See note [partially-applied ext lemmas]
A non-unital algebra homomorphism from A
into a unital R
-algebra C
lifts to a unital
algebra homomorphism from the unitization into C
. This is extended to an Equiv
in
Unitization.lift
and that should be used instead. This declaration only exists for performance
reasons.
Equations
- φ.toAlgHom = { toFun := fun (x : Unitization R A) => (algebraMap R C) x.fst + φ x.snd, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Non-unital algebra homomorphisms from A
into a unital R
-algebra C
lift uniquely to
Unitization R A →ₐ[R] C
. This is the universal property of the unitization.
Equations
- Unitization.lift = { toFun := NonUnitalAlgHom.toAlgHom, invFun := fun (φ : Unitization R A →ₐ[R] C) => (↑φ).comp (Unitization.inrNonUnitalAlgHom R A), left_inv := ⋯, right_inv := ⋯ }
Instances For
See note [partially-applied ext lemmas]
Non-unital star algebra homomorphisms from A
into a unital star R
-algebra C
lift uniquely
to Unitization R A →⋆ₐ[R] C
. This is the universal property of the unitization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functorial map on morphisms between the category of non-unital C⋆-algebras with non-unital star homomorphisms and unital C⋆-algebras with unital star homomorphisms.
This sends φ : A →⋆ₙₐ[R] B
to a map Unitization R A →⋆ₐ[R] Unitization R B
given by the formula
(r, a) ↦ (r, φ a)
(or perhaps more precisely,
algebraMap R _ r + ↑a ↦ algebraMap R _ r + ↑(φ a)
).
Equations
- Unitization.starMap φ = Unitization.starLift ((Unitization.inrNonUnitalStarAlgHom R B).comp φ)
Instances For
If φ : A →⋆ₙₐ[R] B
is injective, the lift starMap φ : Unitization R A →⋆ₐ[R] Unitization R B
is also injective.
If φ : A →⋆ₙₐ[R] B
is surjective, the lift
starMap φ : Unitization R A →⋆ₐ[R] Unitization R B
is also surjective.
starMap
is functorial: starMap (ψ.comp φ) = (starMap ψ).comp (starMap φ)
.
starMap
is functorial:
starMap (NonUnitalStarAlgHom.id R B) = StarAlgHom.id R (Unitization R B)
.
Alias of the forward direction of Unitization.isSelfAdjoint_inr
.
Alias of the forward direction of Unitization.isStarNormal_inr
.
Equations
- ⋯ = ⋯