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.instCoeTCUnitization = { 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 using Unitization.ind
.
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 = let __src := LinearMap.inr R R A; { toAddHom := { toFun := Unitization.inr, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
The canonical R
-linear projection Unitization R A → A
.
Equations
- Unitization.sndHom R A = let __src := LinearMap.snd R R A; { toAddHom := { toFun := Unitization.snd, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
Multiplicative structure #
Equations
- Unitization.instOne = { one := (1, 0) }
Equations
- Unitization.instMulOneClass = let __src := Unitization.instOne; let __src_1 := Unitization.instMul; MulOneClass.mk ⋯ ⋯
Equations
- Unitization.instNonAssocSemiring = let __src := Unitization.instMulOneClass; let __src_1 := Unitization.instAddCommMonoid; NonAssocSemiring.mk ⋯ ⋯ ⋯ ⋯
Equations
- Unitization.instCommMonoid = let __src := Unitization.instMonoid; CommMonoid.mk ⋯
Equations
- Unitization.instSemiring = let __src := Unitization.instMonoid; let __src_1 := Unitization.instNonAssocSemiring; Semiring.mk ⋯ ⋯ ⋯ ⋯ Monoid.npow ⋯ ⋯
Equations
- Unitization.instCommSemiring = let __src := Unitization.instCommMonoid; let __src_1 := Unitization.instNonAssocSemiring; CommSemiring.mk ⋯
Equations
- Unitization.instNonAssocRing = let __src := Unitization.instAddCommGroup; let __src_1 := Unitization.instNonAssocSemiring; NonAssocRing.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- Unitization.instCommRing = let __src := Unitization.instAddCommGroup; let __src_1 := Unitization.instCommSemiring; CommRing.mk ⋯
The canonical inclusion of rings R →+* Unitization R A
.
Equations
- Unitization.inlRingHom R A = { toMonoidHom := { toOneHom := { 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 (Unitization.fst ra), star (Unitization.snd ra)) }
Equations
- Unitization.instStarAddMonoid = StarAddMonoid.mk ⋯
Equations
- ⋯ = ⋯
Equations
- Unitization.instStarRing = let __src := Unitization.instStarAddMonoid; StarRing.mk ⋯
Algebra structure #
Equations
- Unitization.instAlgebra S R A = let __src := RingHom.comp (Unitization.inlRingHom R A) (algebraMap S R); Algebra.mk __src ⋯ ⋯
The canonical R
-algebra projection Unitization R A → R
.
Equations
- One or more equations did not get rendered due to their size.
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 = { toDistribMulActionHom := { toMulActionHom := { 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
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
- One or more equations did not get rendered due to their size.
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
- One or more equations did not get rendered due to their size.
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.