-
Notifications
You must be signed in to change notification settings - Fork 677
feat: define geometrically reduced algebras #27400
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
feat: define geometrically reduced algebras #27400
Conversation
introduced geometrically reduced algebras.
PR summary 3d51c1a073Import changes for modified filesNo significant changes to the import graph Import changes for all files
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Congratulations on your first PR! Please don't be deterred by how many comments there are, this is perfectly normal.
Please check in each theorem and def that the implicit and explicit variables are correct. In general, if a variable can be inferred (i.e. appears) in any later variables, then the original variable can be made implicit.
And please sure you state things in the correct generality, where "correct" means "maximal".
I'll give this a second-round to make sure the names fit mathlib's covnention.
def subAlgebraBaseChange (C : Subalgebra k A) : Subalgebra B (TensorProduct k B A) := | ||
AlgHom.range (baseChange k C A C.val B) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please move this to Mathlib/RingTheory/TensorProduct/Basic.lean
and make only B
and C
explicit.
lemma FGsubalgebra_baseChange_of_element (x : TensorProduct k A B) : | ||
∃ C : Subalgebra k B , C.FG ∧ x ∈ subAlgebraBaseChange k B A C := by | ||
obtain ⟨S, hS⟩ := TensorProduct.exists_finset x | ||
let S1 := Set.image (fun j ↦ j.2) S.toSet | ||
let C := Algebra.adjoin k S1 | ||
use C | ||
constructor | ||
· rw [Subalgebra.fg_def] | ||
use S1 | ||
refine ⟨?_, rfl⟩ | ||
exact Set.Finite.image (fun j ↦ j.2) (Finset.finite_toSet S) | ||
· rw [hS] | ||
refine Subalgebra.sum_mem _ ?_ | ||
intro s hs | ||
have hCS : ∀ i ∈ S, i.2 ∈ C := by | ||
intro i hi | ||
apply SetLike.mem_of_subset | ||
· apply Algebra.subset_adjoin | ||
· use i | ||
exact ⟨hi, rfl⟩ | ||
use s.1 ⊗ₜ[k] ⟨s.2, hCS s hs⟩ | ||
rfl |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lemma FGsubalgebra_baseChange_of_element (x : TensorProduct k A B) : | |
∃ C : Subalgebra k B , C.FG ∧ x ∈ subAlgebraBaseChange k B A C := by | |
obtain ⟨S, hS⟩ := TensorProduct.exists_finset x | |
let S1 := Set.image (fun j ↦ j.2) S.toSet | |
let C := Algebra.adjoin k S1 | |
use C | |
constructor | |
· rw [Subalgebra.fg_def] | |
use S1 | |
refine ⟨?_, rfl⟩ | |
exact Set.Finite.image (fun j ↦ j.2) (Finset.finite_toSet S) | |
· rw [hS] | |
refine Subalgebra.sum_mem _ ?_ | |
intro s hs | |
have hCS : ∀ i ∈ S, i.2 ∈ C := by | |
intro i hi | |
apply SetLike.mem_of_subset | |
· apply Algebra.subset_adjoin | |
· use i | |
exact ⟨hi, rfl⟩ | |
use s.1 ⊗ₜ[k] ⟨s.2, hCS s hs⟩ | |
rfl | |
lemma FGsubalgebra_baseChange_of_element (x : A ⊗[k] B) : | |
∃ C : Subalgebra k B, C.FG ∧ x ∈ subAlgebraBaseChange k B A C := by | |
obtain ⟨S, hS⟩ := TensorProduct.exists_finset x | |
classical | |
refine ⟨Algebra.adjoin k (S.image fun j ↦ j.2), ?_, ?_⟩ | |
· exact Subalgebra.fg_adjoin_finset _ | |
· exact hS ▸ Subalgebra.sum_mem _ fun s hs ↦ ⟨s.1 ⊗ₜ[k] ⟨s.2, Algebra.subset_adjoin | |
(Finset.mem_image_of_mem _ hs)⟩, rfl⟩ |
When you're proving it at first, you can use let
and etc. to explore around, but after proving it you can clean those up.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please also move this lemma to the file suggested above, and make sure to prove things with minimal assumptions.
-- reduced. The result is in https://stacks.math.columbia.edu/tag/030T | ||
theorem all_FG_geometricallyReduced_isGeometricallyReduced | ||
(h : ∀ B : Subalgebra k A, B.FG → IsGeometricallyReduced k B) : | ||
IsGeometricallyReduced k A := by |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I haven't looked at this proof yet.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this proof has nothing to do with the algebraic closure, or even that k is a field. You should generalise this theorem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have suggested name changes to follow mathlib convention.
exact isReduced_of_injective fK hfK | ||
|
||
|
||
theorem isGeometricallyReduced_isReduced [IsGeometricallyReduced k A] : IsReduced A := by |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
theorem isGeometricallyReduced_isReduced [IsGeometricallyReduced k A] : IsReduced A := by | |
theorem isReduced_of_isGeometricallyReduced [IsGeometricallyReduced k A] : IsReduced A := by |
Remember that the main statement always goes first, followed by the assumptions separated by of
.
|
||
/-- Given a subalgebra C of a k-algebra A, and a k-algebra B, the basechange of C to a subalgebra | ||
of A ⊗[k] B -/ | ||
def subAlgebraBaseChange (C : Subalgebra k A) : Subalgebra B (TensorProduct k B A) := |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def subAlgebraBaseChange (C : Subalgebra k A) : Subalgebra B (TensorProduct k B A) := | |
def Subalgebra.baseChange (C : Subalgebra k A) : Subalgebra B (TensorProduct k B A) := |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This allows you to use dot notation, i.e. you can use s.baseChange B
to base change a sub-algebra s
to B
.
def subAlgebraBaseChange (C : Subalgebra k A) : Subalgebra B (TensorProduct k B A) := | ||
AlgHom.range (baseChange k C A C.val B) | ||
|
||
lemma FGsubalgebra_baseChange_of_element (x : TensorProduct k A B) : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lemma FGsubalgebra_baseChange_of_element (x : TensorProduct k A B) : | |
lemma exists_fg_and_mem_baseChange (x : TensorProduct k A B) : |
|
||
-- If all finitely generated subalgebras of A are geometrically reduced, then A is geometrically | ||
-- reduced. The result is in https://stacks.math.columbia.edu/tag/030T | ||
theorem all_FG_geometricallyReduced_isGeometricallyReduced |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
theorem all_FG_geometricallyReduced_isGeometricallyReduced | |
theorem IsGeometricallyReduced.of_FG |
Define geometrically reduced algebras, and prove that if all finitely generated subalgebras of an algebra
A
are geometrically reduced, thenA
is geometrically reduced.