[Merged by Bors] - feat(RingTheory/AlgebraicIndependent): add AlgebraicIndependent.aevalEquivField and other results#18648
[Merged by Bors] - feat(RingTheory/AlgebraicIndependent): add AlgebraicIndependent.aevalEquivField and other results#18648
AlgebraicIndependent.aevalEquivField and other results#18648Conversation
PR summary dc56cb32a9Import changes exceeding 2%
|
| File | Base Count | Head Count | Change |
|---|---|---|---|
| Mathlib.RingTheory.AlgebraicIndependent | 1350 | 1380 | +30 (+2.22%) |
| Mathlib.RingTheory.Algebraic | 1347 | 1346 | -1 (-0.07%) |
Import changes for all files
| Files | Import difference |
|---|---|
44 filesMathlib.LinearAlgebra.FreeModule.Norm Mathlib.LinearAlgebra.Charpoly.Basic Mathlib.Analysis.InnerProductSpace.Spectrum Mathlib.RingTheory.PowerBasis Mathlib.LinearAlgebra.Matrix.PosDef Mathlib.Data.Real.GoldenRatio Mathlib.RingTheory.Adjoin.PowerBasis Mathlib.LinearAlgebra.Charpoly.ToMatrix Mathlib.FieldTheory.IntermediateField.Algebraic Mathlib.LinearAlgebra.Matrix.Charpoly.Minpoly Mathlib.Data.Real.Pi.Irrational Mathlib.NumberTheory.Rayleigh Mathlib.RingTheory.Unramified.Pi Mathlib.RingTheory.RingHom.FinitePresentation Mathlib.RingTheory.Algebraic Mathlib.Algebra.AlgebraicCard Mathlib.Data.Real.Irrational Mathlib.RingTheory.Smooth.Basic Mathlib.NumberTheory.Pell Mathlib.RingTheory.Smooth.Kaehler Mathlib.RingTheory.Unramified.Basic Mathlib.LinearAlgebra.AnnihilatingPolynomial Mathlib.LinearAlgebra.Matrix.LDL Mathlib.RingTheory.AdjoinRoot Mathlib.RingTheory.Smooth.Pi Mathlib.LinearAlgebra.Matrix.SchurComplement Mathlib.Topology.Instances.Irrational Mathlib.FieldTheory.Minpoly.Field Mathlib.Algebra.Module.LinearMap.Polynomial Mathlib.RingTheory.Etale.Basic Mathlib.Combinatorics.SimpleGraph.LapMatrix Mathlib.Algebra.Polynomial.Module.FiniteDimensional Mathlib.LinearAlgebra.Matrix.Spectrum Mathlib.Algebra.Lie.Rank Mathlib.Algebra.Polynomial.Bivariate Mathlib.LinearAlgebra.Eigenspace.Zero Mathlib.LinearAlgebra.Eigenspace.Minpoly Mathlib.FieldTheory.AxGrothendieck Mathlib.LinearAlgebra.Charpoly.BaseChange Mathlib.RingTheory.Unramified.Finite Mathlib.Algebra.Lie.CartanExists Mathlib.RingTheory.Localization.Away.AdjoinRoot Mathlib.NumberTheory.DiophantineApproximation Mathlib.Topology.Instances.RatLemmas |
-1 |
Mathlib.FieldTheory.IsAlgClosed.Classification Mathlib.ModelTheory.Algebra.Field.IsAlgClosed |
1 |
Mathlib.RingTheory.AlgebraicIndependent |
30 |
Declarations diff
+ Algebra.Transcendental.of_ringHom_of_comp_eq
+ Algebra.Transcendental.ringHom_of_comp_eq
+ Algebra.isAlgebraic_ringHom_iff_of_comp_eq
+ Algebra.transcendental_ringHom_iff_of_comp_eq
+ AlgebraicIndependent.of_ringHom_of_comp_eq
+ AlgebraicIndependent.polynomial_aeval_of_transcendental
+ AlgebraicIndependent.ringHom_of_comp_eq
+ IsTranscendenceBasis.isAlgebraic_field
+ IsTranscendenceBasis.isEmpty_iff_isAlgebraic
+ IsTranscendenceBasis.nonempty_iff_transcendental
+ MvPolynomial.algebraicIndependent_X
+ Transcendental.of_ringHom_of_comp_eq
+ Transcendental.ringHom_of_comp_eq
+ aevalEquiv
+ aevalEquivField
+ aevalEquivField_algebraMap_apply_coe
+ aevalEquivField_apply_coe
+ aeval_comp_repr
+ aeval_of_algebraicIndependent
+ aeval_repr
+ algebraMap_aevalEquiv
+ algebra_isAlgebraic_bot_left_iff
+ algebra_isAlgebraic_bot_right
+ algebra_isAlgebraic_of_algebra_isAlgebraic_bot_left
+ algebraicIndependent_ringHom_iff_of_comp_eq
+ isAlgebraic_bot_iff
+ isAlgebraic_iff_isAlgebraic_val
+ isAlgebraic_of_isAlgebraic_bot
+ isEmpty_of_isAlgebraic
+ liftAlgHom_comp_reprField
+ lift_reprField
+ of_aeval
+ repr
+ reprField
+ repr_ker
+ transcendental_ringHom_iff_of_comp_eq
- AlgebraicIndependent.aevalEquiv
- AlgebraicIndependent.aeval_comp_repr
- AlgebraicIndependent.aeval_repr
- AlgebraicIndependent.algebraMap_aevalEquiv
- AlgebraicIndependent.repr
- AlgebraicIndependent.repr_ker
- algebra_isAlgebraic_ringHom_iff_of_comp_eq
- algebraicIndependent_X
You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>
## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>The doc-module for script/declarations_diff.sh contains some details about this script.
No changes to technical debt.
You can run this locally as
./scripts/technical-debt-metrics.sh pr_summary
AlgebraicIndependentAlgebraicIndependent.aevalEquivField and other results
alreadydone
left a comment
There was a problem hiding this comment.
LGTM modulo #18984. The import increase is mainly due to AlgebraicIndependent importing FieldRange importing FieldTheory.Adjoin, but I think we're gonna import FieldTheory.Adjoin into AlgebraicIndependent sooner or later. Notice that AlgebraicIndependent is currently almost a leaf file, being transitively imported by only 2 other files.
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
I think so, as most part of algebraic independent theory is about fields. Maybe later we need to split AlgebraicIndependent into several files: subalgebra part, field part, and transcendence basis & transcendence degree part.
Yeah, but once transcendence degree is defined, it should be used extensively in algebraic geometry. We also need separable transcendence basis & separably generated, etc. etc. |
alreadydone
left a comment
There was a problem hiding this comment.
Thanks 🎉
maintainer merge
|
🚀 Pull request has been placed on the maintainer queue by alreadydone. |
|
Thanks! bors merge |
…lEquivField` and other results (#18648) This PR mainly adds - `AlgebraicIndependent.aevalEquivField`: canonical isomorphism between rational function field and the intermediate field generated by algebraically independent elements. - `AlgebraicIndependent.reprField`: canonical map from the intermediate field generated by an algebraic independent family into the rational function field. Other results: - `AlgebraicIndependent.aeval_of_algebraicIndependent`: if `x = {x_i : A | i : ι}` and `f = {f_i : MvPolynomial ι R | i : ι}` are algebraically independent over `R`, then `{f_i(x) | i : ι}` is also algebraically independent over `R`. - `AlgebraicIndependent.of_aeval`: conversely, if `{f_i(x) | i : ι}` is algebraically independent over `R`, then `{f_i : MvPolynomial ι R | i : ι}` is also algebraically independent over `R`. - `AlgebraicIndependent.polynomial_aeval_of_transcendental`: if `{x_i : A | i : ι}` is algebraically independent over `R`, and for each `i`, `f_i : R[X]` is transcendental over `R`, then `{f_i(x_i) | i : ι}` is also algebraically independent over `R`. - `AlgebraicIndependent.isEmpty_of_isAlgebraic`: if `A/R` is algebraic, then all algebraically independent families are empty. - `IsTranscendenceBasis.isEmpty_iff_isAlgebraic`: if `x` is a transcendence basis of `A/R`, then it is empty if and only if `A/R` is algebraic. - `IsTranscendenceBasis.nonempty_iff_transcendental`: if `x` is a transcendence basis of `A/R`, then it is not empty if and only if `A/R` is transcendental. - `IsTranscendenceBasis.isAlgebraic_field`: if `x` is a transcendence basis of `E / F`, then the field extension `E / F(x)` is algebraic. Also add `[of_]ringHom_of_comp_eq` for `[Algebra.]Transcendental` and `AlgebraicIndependent`. Also add some results for `Subalgebra` inspired by `IntermediateField.isAlgebraic_iff`. Some of them are not back-ported to `IntermediateField` yet; may be for another PR if they are useful.
|
Pull request successfully merged into master. Build succeeded: |
AlgebraicIndependent.aevalEquivField and other resultsAlgebraicIndependent.aevalEquivField and other results
…lEquivField` and other results (#18648) This PR mainly adds - `AlgebraicIndependent.aevalEquivField`: canonical isomorphism between rational function field and the intermediate field generated by algebraically independent elements. - `AlgebraicIndependent.reprField`: canonical map from the intermediate field generated by an algebraic independent family into the rational function field. Other results: - `AlgebraicIndependent.aeval_of_algebraicIndependent`: if `x = {x_i : A | i : ι}` and `f = {f_i : MvPolynomial ι R | i : ι}` are algebraically independent over `R`, then `{f_i(x) | i : ι}` is also algebraically independent over `R`. - `AlgebraicIndependent.of_aeval`: conversely, if `{f_i(x) | i : ι}` is algebraically independent over `R`, then `{f_i : MvPolynomial ι R | i : ι}` is also algebraically independent over `R`. - `AlgebraicIndependent.polynomial_aeval_of_transcendental`: if `{x_i : A | i : ι}` is algebraically independent over `R`, and for each `i`, `f_i : R[X]` is transcendental over `R`, then `{f_i(x_i) | i : ι}` is also algebraically independent over `R`. - `AlgebraicIndependent.isEmpty_of_isAlgebraic`: if `A/R` is algebraic, then all algebraically independent families are empty. - `IsTranscendenceBasis.isEmpty_iff_isAlgebraic`: if `x` is a transcendence basis of `A/R`, then it is empty if and only if `A/R` is algebraic. - `IsTranscendenceBasis.nonempty_iff_transcendental`: if `x` is a transcendence basis of `A/R`, then it is not empty if and only if `A/R` is transcendental. - `IsTranscendenceBasis.isAlgebraic_field`: if `x` is a transcendence basis of `E / F`, then the field extension `E / F(x)` is algebraic. Also add `[of_]ringHom_of_comp_eq` for `[Algebra.]Transcendental` and `AlgebraicIndependent`. Also add some results for `Subalgebra` inspired by `IntermediateField.isAlgebraic_iff`. Some of them are not back-ported to `IntermediateField` yet; may be for another PR if they are useful.
This PR mainly adds
AlgebraicIndependent.aevalEquivField: canonical isomorphism between rational function field and the intermediate field generated by algebraically independent elements.AlgebraicIndependent.reprField: canonical map from the intermediate field generated by an algebraic independent family into the rational function field.Other results:
AlgebraicIndependent.aeval_of_algebraicIndependent: ifx = {x_i : A | i : ι}andf = {f_i : MvPolynomial ι R | i : ι}are algebraically independent overR, then{f_i(x) | i : ι}is also algebraically independent overR.AlgebraicIndependent.of_aeval: conversely, if{f_i(x) | i : ι}is algebraically independent overR, then{f_i : MvPolynomial ι R | i : ι}is also algebraically independent overR.AlgebraicIndependent.polynomial_aeval_of_transcendental: if{x_i : A | i : ι}is algebraically independent overR, and for eachi,f_i : R[X]is transcendental overR, then{f_i(x_i) | i : ι}is also algebraically independent overR.AlgebraicIndependent.isEmpty_of_isAlgebraic: ifA/Ris algebraic, then all algebraically independent families are empty.IsTranscendenceBasis.isEmpty_iff_isAlgebraic: ifxis a transcendence basis ofA/R, then it is empty if and only ifA/Ris algebraic.IsTranscendenceBasis.nonempty_iff_transcendental: ifxis a transcendence basis ofA/R, then it is not empty if and only ifA/Ris transcendental.IsTranscendenceBasis.isAlgebraic_field: ifxis a transcendence basis ofE / F, then the field extensionE / F(x)is algebraic.Also add
[of_]ringHom_of_comp_eqfor[Algebra.]TranscendentalandAlgebraicIndependent.Also add some results for
Subalgebrainspired byIntermediateField.isAlgebraic_iff. Some of them are not back-ported toIntermediateFieldyet; may be for another PR if they are useful.IsLocalization.algEquivOfAlgEquivand other results #18661IsFractionRingandfieldRange#18984