Zulip Chat Archive
Stream: Is there code for X?
Topic: Isomorphism of algebras obtained by adjoining elements
Dion Leijnse (Oct 29 2025 at 10:05):
Suppose I have a commutative ring R and two R-algebras S and T, together with an R-isomorphism f : S ≃ₐ[R] T. I also have a set X : Set S. We can form the R-algebra Algebra.adjoin R X, which is the subalgebra of S formed by adjoining the set X. The map f induces an isomorphism Algebra.adjoin R X ≃ₐ[R] Algebra.adjoin R (f '' X). Is this defined somewhere in Mathlib? I could not find it so far. Here is the mwe:
import Mathlib
def adjoin_equiv (R S T : Type) [CommRing R] [CommRing S] [CommRing T] [Algebra R S] [Algebra R T]
(f : S ≃ₐ[R] T) (X : Set S) : Algebra.adjoin R X ≃ₐ[R] Algebra.adjoin R (f '' X) := sorry
Kenny Lau (Oct 29 2025 at 10:07):
@Dion Leijnse docs#AlgHom.map_adjoin , Subalgebra.equivOfEq
Aaron Liu (Oct 29 2025 at 10:14):
docs#AlgEquiv.subalgebraMap, docs#AlgHom.map_adjoin, docs#Subalgebra.equivOfEq
Dion Leijnse (Oct 29 2025 at 10:20):
Thanks!
Dion Leijnse (Oct 29 2025 at 10:40):
Thanks for the help, I got it to work:
import Mathlib
def adjoin_equiv (R S T : Type) [CommRing R] [CommRing S] [CommRing T] [Algebra R S] [Algebra R T]
(f : S ≃ₐ[R] T) (X : Set S) : Algebra.adjoin R X ≃ₐ[R] Algebra.adjoin R (f '' X) :=
(AlgHom.map_adjoin f.toAlgHom X) ▸ (AlgEquiv.subalgebraMap f (Algebra.adjoin R X))
Kenny Lau (Oct 29 2025 at 11:22):
@Dion Leijnse please don't cast in definitions, there's a reason we both included equivOfEq
Kevin Buzzard (Oct 29 2025 at 18:23):
The OP might not have a clue what you're talking about.
The issue with this definition is that the ▸ is probably making a horrible term which you might find it very difficult to prove anything about.
Dion Leijnse (Oct 30 2025 at 13:03):
Thanks for the clarification! So the idea is to cast the equality to an equivalence, and then take the composition of the two? Something like this?
import Mathlib
def adjoin_equiv (R S T : Type) [CommRing R] [CommRing S] [CommRing T] [Algebra R S] [Algebra R T]
(f : S ≃ₐ[R] T) (X : Set S) : Algebra.adjoin R X ≃ₐ[R] Algebra.adjoin R (f '' X) :=
(AlgEquiv.subalgebraMap f (Algebra.adjoin R X)).trans
(Subalgebra.equivOfEq _ _ (AlgHom.map_adjoin f.toAlgHom X))
Kenny Lau (Oct 30 2025 at 13:10):
@Dion Leijnse bingo!
Last updated: Dec 20 2025 at 21:32 UTC