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