Zulip Chat Archive
Stream: Is there code for X?
Topic: Integral adjoin is finite-dimensional
Michał Staromiejski (Jan 22 2025 at 16:32):
Do we have this result in Mathlib?
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.LinearAlgebra.FiniteDimensional.Defs
import Mathlib.RingTheory.IntegralClosure.IsIntegral.Defs
example {F A : Type*} [Field F] [CommRing A] [Algebra F A] {a : A} (hai : IsIntegral F a) :
FiniteDimensional F (Algebra.adjoin F {a}) := sorry
Seems basic but I can't find it.
Riccardo Brasca (Jan 22 2025 at 16:37):
We surely have it in some form, let me have a look
Michał Staromiejski (Jan 22 2025 at 16:37):
Another question: why can't I make it an instance? This does not work:
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.LinearAlgebra.FiniteDimensional.Defs
import Mathlib.RingTheory.IntegralClosure.IsIntegral.Defs
instance {F A : Type*} [Field F] [CommRing A] [Algebra F A] {a : A} (hai : IsIntegral F a) :
FiniteDimensional F (Algebra.adjoin F {a}) := sorry
example {F A : Type*} [Field F] [CommRing A] [Algebra F A] {a : A} (hai : IsIntegral F a) : ... :=
haveI : FiniteDimensional F (Algebra.adjoin F {a}) := inferInstance
sorry
Michał Staromiejski (Jan 22 2025 at 16:39):
Riccardo Brasca said:
We surely have it in some form, let me have a look
We have FiniteDimensional.of_fintype_basis
and Algebra.adjoin.powerBasisAux
so the proof is easy, but could not find anything else.
Riccardo Brasca (Jan 22 2025 at 16:42):
import Mathlib
example {F A : Type*} [Field F] [CommRing A] [Algebra F A] {a : A} (hai : IsIntegral F a) :
FiniteDimensional F (Algebra.adjoin F {a}) :=
PowerBasis.finite (Algebra.adjoin.powerBasis hai)
Riccardo Brasca (Jan 22 2025 at 16:43):
Yes, that is what I mean, is "almost" there
Riccardo Brasca (Jan 22 2025 at 16:45):
Michał Staromiejski said:
Another question: why can't I make it an instance? This does not work:
import Mathlib.Algebra.Algebra.Subalgebra.Basic import Mathlib.LinearAlgebra.FiniteDimensional.Defs import Mathlib.RingTheory.IntegralClosure.IsIntegral.Defs instance {F A : Type*} [Field F] [CommRing A] [Algebra F A] {a : A} (hai : IsIntegral F a) : FiniteDimensional F (Algebra.adjoin F {a}) := sorry example {F A : Type*} [Field F] [CommRing A] [Algebra F A] {a : A} (hai : IsIntegral F a) : ... := haveI : FiniteDimensional F (Algebra.adjoin F {a}) := inferInstance sorry
Because of the assumption hai
, that is not a typeclass assumption.
Riccardo Brasca (Jan 22 2025 at 16:46):
If you write
import Mathlib
instance {F A : Type*} [Field F] [CommRing A] [Algebra F A] {a : A} (hai : IsIntegral F a) :
FiniteDimensional F (Algebra.adjoin F {a}) :=
PowerBasis.finite (Algebra.adjoin.powerBasis hai)
#lint
you see the error
/- The `impossibleInstance` linter reports:
SOME INSTANCES HAVE ARGUMENTS THAT ARE IMPOSSIBLE TO INFER
These are arguments that are not instance-implicit and do not appear in
another instance-implicit argument or the return type. -/
Michał Staromiejski (Jan 22 2025 at 16:47):
Thanks! Do we want this theorem in direct form? I think it might be useful?
Riccardo Brasca (Jan 22 2025 at 16:49):
It looks fine to me, but be sure to provide also the more general case with a finite set
Andrew Yang (Jan 22 2025 at 16:51):
There’s also docs#Algebra.IsIntegral.finite
Michał Staromiejski (Jan 22 2025 at 16:59):
This, combined with docs#Algebra.IsIntegral.adjoin would do the trick :tada:
Riccardo Brasca (Jan 22 2025 at 17:06):
You still have to prove that Algebra.FiniteType F (Algebra.adjoin F {a})
, that I am bit surprised is not there (not difficult, but is should be automatic).
Riccardo Brasca (Jan 22 2025 at 17:07):
Also, note that if you use Module.Finite
instead of FiniteDimensional
you can state and prove a more general version, with F
a CommRing
.
Michał Staromiejski (Jan 22 2025 at 17:16):
Yup, thanks. Will try to prove general version.
Michał Staromiejski (Jan 22 2025 at 19:31):
Is there a reason why docs#Algebra.IsIntegral.finite is in Mathlib.RingTheory.IntegralClosure.IsIntegralClosure.Basic
and not for example in Mathlib.RingTheory.IntegralClosure.Algebra.Basic
?
Michał Staromiejski (Jan 22 2025 at 19:36):
It seems that actually a lot of results in Mathlib.RingTheory.IntegralClosure.IsIntegralClosure.Basic
are results just about Algebra.IsIntegral
so it seems that they should rather belong to Mathlib.RingTheory.IntegralClosure.Algebra.Basic
but maybe I'm missing something?
Michał Staromiejski (Jan 22 2025 at 19:38):
Ok, docs#Algebra.IsIntegral.adjoin uses integralClosure
so maybe it's ok. Then I'd add the results there.
Michał Staromiejski (Jan 22 2025 at 21:34):
So, Algebra.FiniteType F (Algebra.adjoin F {a})
is there (almost): docs#IsIntegral.fg_adjoin_singleton
and for finite set S
there is docs#Subalgebra.fg_adjoin_finset.
Quite far form each other, but still there :)
Michał Staromiejski (Jan 22 2025 at 22:00):
PR #20970 created.
Junyan Xu (Jan 22 2025 at 22:06):
Did you notice that docs#fg_adjoin_of_finite and docs#IsIntegral.fg_adjoin_singleton are about finite generation of the submodule, not the subalgebra? So all you need is to use docs#Module.Finite.iff_fg.
Michał Staromiejski (Jan 23 2025 at 08:19):
Good point! Now they're just one-liners and I moved them to Mathlib.RingTheory.IntegralClosure.IsIntegral.Basic
. But maybe ...Algebra.Basic
is a better place?
Last updated: May 02 2025 at 03:31 UTC