Zulip Chat Archive
Stream: Is there code for X?
Topic: Universal property of polynomial ring
Artie Khovanov (Nov 26 2025 at 14:34):
We have Polynomial.algHom_ext_iff. But do we have the bijection itself? I can't find it. Here's roughly what I'm looking for:
variable {A B : Type*} [CommSemiring A] [Semiring B] [Algebra A B]
@[simps]
noncomputable def AlgHomEquiv : (A[X] →ₐ[A] B) ≃ B where
toFun f := f X
invFun y := aeval y
left_inv f := by ext; simp
right_inv y := by simp
Riccardo Brasca (Nov 26 2025 at 16:16):
I don't think so, but in practice using aeval works well
Artie Khovanov (Nov 26 2025 at 16:17):
Yeah I agree.
However I really wanted the bijection because I wanted to prove other, more complicated, universal properties easily.
In any case this is not much code so nbd.
Riccardo Brasca (Nov 26 2025 at 16:21):
We have MonoidAlgebra.lift that is basically the general case for monoid algebras
Riccardo Brasca (Nov 26 2025 at 16:21):
but it is surely more painful to use than just aeval
Artie Khovanov (Nov 26 2025 at 16:23):
My application:
variable (R : Type*) {S : Type*} [CommRing R] [Ring S] [Algebra R S] (x : S)
structure IsGenerator : Prop where
adjoin_eq_top : adjoin R {x} = ⊤
variable {R x} (hx : IsGenerator R x)
variable {T : Type*} [Ring T] [Algebra R T]
noncomputable def liftEquiv :
{ y : T // ∀ g : R[X], aeval x g = 0 → aeval y g = 0 } ≃ (S →ₐ[R] T) :=
((AlgHomEquiv R T).subtypeEquiv (by simp [SetLike.le_def])).trans <|
AlgHom.liftOfSurjective _ hx.aeval_surjective
(AlgHom.liftOfSurjective doesn't exist in Mathlib but it's just a striaghtforward generalisation of RingHom.liftOfSurjective)
Last updated: Dec 20 2025 at 21:32 UTC