feat(Algebra): finite projective dimension of regular
In this PR, we proved every finitely generated module over regular local ring has finite projective dimension. With this and Auslander Buchsbaum theorem, we can obtain the global dimension of regular local ring is equal to its krull dimension.
- [ ] depends on: #29533
- [ ] depends on: #26215
PR summary 86622378a5
Import changes exceeding 2%
| % | File |
|---|---|
| +42.10% | Mathlib.RingTheory.Regular.Category |
| +26.90% | Mathlib.RingTheory.Regular.Depth |
Import changes for modified files
Dependency changes
| File | Base Count | Head Count | Change |
|---|---|---|---|
| Mathlib.RingTheory.Regular.Category | 1209 | 1718 | +509 (+42.10%) |
| Mathlib.RingTheory.Regular.Depth | 1569 | 1991 | +422 (+26.90%) |
Import changes for all files
| Files | Import difference |
|---|---|
Mathlib.RingTheory.Regular.Depth |
422 |
Mathlib.RingTheory.Regular.Category |
509 |
Mathlib.RingTheory.RegularLocalRing.Defs (new file) |
1585 |
Mathlib.Algebra.Category.ModuleCat.Ext.DimensionShifting (new file) |
1717 |
Mathlib.Algebra.Category.ModuleCat.Ext.Finite (new file) |
1718 |
Mathlib.RingTheory.RegularLocalRing.Basic (new file) |
1904 |
Mathlib.RingTheory.Regular.AuslanderBuchsbaum (new file) |
2092 |
Mathlib.RingTheory.Regular.Ischebeck (new file) |
2116 |
Mathlib.RingTheory.CohenMacaulay.Basic (new file) |
2147 |
Mathlib.RingTheory.CohenMacaulay.Maximal (new file) |
2151 |
Mathlib.RingTheory.RegularLocalRing.GlobalDimension (new file) |
2162 |
Declarations diff
+ AuslanderBuchsbaum
+ AuslanderBuchsbaum_one
+ CategoryTheory.InjectivePresentation.shortComplex
+ CategoryTheory.InjectivePresentation.shortComplex_shortExact
+ Ideal.depth
+ Ideal.depth_eq_of_iso
+ Ideal.depth_quotSMulTop_succ_eq_moduleDepth
+ Ideal.quotient_smul_top_lt_of_le_smul_top
+ IsCohenMacaulayLocalRing
+ IsCohenMacaulayLocalRing.of_isLocalRing_of_isCohenMacaulayRing
+ IsCohenMacaulayRing
+ IsCohenMacaulayRing.of_isCohenMacaulayLocalRing
+ IsLocalRing.ResidueField.map_bijective_of_surjective
+ IsLocalRing.ResidueField.map_injective
+ IsLocalRing.depth
+ IsLocalRing.depth_eq_of_algebraMap_surjective
+ IsLocalRing.depth_eq_of_iso
+ IsLocalRing.depth_eq_of_ringEquiv
+ IsLocalRing.depth_eq_sSup_length_regular
+ IsLocalRing.depth_quotSMulTop_succ_eq_moduleDepth
+ IsLocalRing.depth_quotient_regular_sequence_add_length_eq_depth
+ IsLocalRing.depth_quotient_regular_succ_eq_depth
+ IsLocalRing.depth_quotient_span_regular_succ_eq_depth
+ IsLocalRing.ideal_depth_eq_sSup_length_regular
+ IsLocalRing.ideal_depth_le_depth
+ IsLocalRing.spanFinrank_maximalIdeal_eq_finrank_cotangentSpace
+ IsRegularLocalRing
+ IsRegularLocalRing.iff_finrank_cotangentSpace
+ LinearMap.shortComplexKer
+ LinearMap.shortExact_shortComplexKer
+ LinearMapOfSemiLinearMapAlgebraMap
+ Module.exists_finite_presentation
+ Module.finite_shrink
+ Module.free_shrink
+ ModuleCat.IsCohenMacaulay
+ ModuleCat.IsCohenMacaulay_of_iso
+ ModuleCat.IsMaximalCohenMacaulay
+ ModuleCat.depth_eq_supportDim_of_cohenMacaulay
+ ModuleCat.depth_eq_supportDim_unbot_of_cohenMacaulay
+ ModuleCat.finite_ext
+ ModuleCat.free_of_projective_of_isLocalRing
+ ModuleCat.isCohenMacaulay_iff
+ ModuleCat.projective_shortComplex
+ ModuleCat.projective_shortComplex_shortExact
+ SemiLinearMapAlgebraMapOfLinearMap
+ Submodule.comap_lt_top_of_lt_range
+ Submodule.smul_top_eq_comap_smul_top_of_surjective
+ WithBot.add_le_add_natCast_left_iff
+ WithBot.add_le_add_natCast_right_iff
+ WithBot.add_le_add_one_left_iff
+ WithBot.add_le_add_one_right_iff
+ WithBot.add_natCast_cancel
+ WithBot.add_one_cancel
+ WithBot.natCast_add_cancel
+ WithBot.one_add_cancel
+ WithTop.add_cast_cancel
+ WithTop.add_le_add_cast_iff_left
+ WithTop.add_le_add_cast_iff_right
+ WithTop.cast_add_cancel
+ associatedPrimes_self_eq_minimalPrimes
+ associated_prime_eq_minimalPrimes_isCohenMacaulay
+ associated_prime_minimal_of_isCohenMacaulay
+ basis_lift
+ basis_lift_ker_le
+ coprodIsoDirectSum
+ coproductCocone
+ coproductCoconeIsColimit
+ depth_eq_dim_quotient_associated_prime_of_isCohenMacaulay
+ depth_le_ringKrullDim
+ depth_le_ringKrullDim_associatedPrime
+ depth_le_supportDim
+ depth_ne_top
+ depth_quotient_regular_sequence_add_length_eq_depth
+ exist_nat_eq
+ exists_isRegular_of_exists_subsingleton_ext
+ exists_isRegular_tfae
+ extClass_postcomp_surjective_of_projective_X₂
+ extClass_precomp_surjective_of_projective_X₂
+ ext_hom_zero_of_mem_ideal_smul
+ ext_subsingleton_of_exists_isRegular
+ ext_subsingleton_of_lt_moduleDepth
+ finite_projectiveDimension_of_isRegularLocalRing
+ finite_projectiveDimension_of_isRegularLocalRing_aux
+ finte_free_ext_vanish_iff
+ free_depth_eq_ring_depth
+ free_of_isMaximalCohenMacaulay_of_isRegularLocalRing
+ free_of_quotSMulTop_free
+ ideal_depth_quotient_regular_sequence_add_length_eq_ideal_depth
+ instance (I : Ideal R) (M : Type*) [AddCommGroup M] [Module R M]
+ instance [IsCohenMacaulayLocalRing R] : (ModuleCat.of R R).IsCohenMacaulay
+ instance [IsNoetherianRing R] [IsLocalRing R] [Small.{v} R]
+ instance [Small.{v} R] (M : ModuleCat.{v} R) : Module.Free R M.projective_shortComplex.X₂
+ instance {M : ModuleCat.{v} R} (ip : InjectivePresentation M) : Injective ip.shortComplex.X₂ := ip.2
+ isCohenMacaulayLocalRing_def
+ isCohenMacaulayLocalRing_iff
+ isCohenMacaulayLocalRing_localization_atPrime
+ isCohenMacaulayLocalRing_of_isRegularLocalRing
+ isCohenMacaulayLocalRing_of_ringEquiv
+ isCohenMacaulayLocalRing_of_ringKrullDim_le_depth
+ isCohenMacaulayRing_def
+ isCohenMacaulayRing_def'
+ isCohenMacaulayRing_iff
+ isCohenMacaulayRing_of_ringEquiv
+ isCohenMacaulay_of_isMaximalCohenMacaulay
+ isDomain_of_isRegularLocalRing
+ isField_of_isRegularLocalRing_of_dimension_zero
+ isLocalization_at_prime_prime_depth_le_depth
+ isLocalize_at_prime_depth_eq_of_isCohenMacaulay
+ isLocalize_at_prime_dim_eq_prime_depth_of_isCohenMacaulay
+ isLocalize_at_prime_isCohenMacaulay_of_isCohenMacaulay
+ isLocalizedModule_quotSMulTop_isLocalizedModule_map
+ isMaximalCohenMacaulay_def
+ isRegularLocalRing_def
+ isRegular_of_span_eq_maximalIdeal
+ localize_at_prime_depth_eq_of_isCohenMacaulay
+ localize_at_prime_isCohenMacaulay_of_isCohenMacaulay
+ mem_smul_top_of_range_le_smul_top
+ moduleDepth
+ moduleDepth_eq_depth_of_supp_eq
+ moduleDepth_eq_find
+ moduleDepth_eq_iff
+ moduleDepth_eq_moduleDepth_shrink
+ moduleDepth_eq_of_iso_fst
+ moduleDepth_eq_of_iso_snd
+ moduleDepth_eq_sSup_length_regular
+ moduleDepth_eq_sup_nat
+ moduleDepth_eq_top_iff
+ moduleDepth_eq_zero_of_hom_nontrivial
+ moduleDepth_ge_depth_sub_dim
+ moduleDepth_ge_min_of_shortExact_fst_fst
+ moduleDepth_ge_min_of_shortExact_fst_snd
+ moduleDepth_ge_min_of_shortExact_snd_fst
+ moduleDepth_ge_min_of_shortExact_snd_snd
+ moduleDepth_ge_min_of_shortExact_trd_fst
+ moduleDepth_ge_min_of_shortExact_trd_snd
+ moduleDepth_lt_top_iff
+ moduleDepth_quotSMulTop_succ_eq_moduleDepth
+ moduleDepth_quotient_regular_sequence_add_length_eq_moduleDepth
+ mono_postcomp_mk₀_of_mono
+ mono_precomp_mk₀_of_epi
+ nontrivial_ring_of_nontrivial_module
+ of_ringEquiv
+ of_span_eq
+ postcomp_mk₀_injective_of_mono
+ pow_mono_of_mono
+ precomp_mk₀_injective_of_epi
+ quotSMulTop_isCohenMacaulay_iff_isCohenMacaulay
+ quotSMulTop_isLocalizedModule_map
+ quotSMulTop_nontrivial
+ quotient_isRegularLocalRing_tfae
+ quotient_prime_ringKrullDim_ne_bot
+ quotient_regular_isCohenMacaulay_iff_isCohenMacaulay
+ quotient_regular_sequence_isCohenMacaulay_iff_isCohenMacaulay
+ quotient_regular_smul_top_isCohenMacaulay_iff_isCohenMacaulay
+ quotient_span_regular_isCohenMacaulay_iff_isCohenMacaulay
+ quotient_span_singleton
+ ringKrullDim_le_spanFinrank_maximalIdeal
+ ring_depth_invariant
+ ring_depth_uLift
+ smul_id_postcomp_eq_zero_of_mem_ann
+ smul_prod_of_smul
+ subsingleton_of_injective
+ subsingleton_of_pi
+ subsingleton_of_projective
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
- The
relativevalue is the weighted sum of the differences with weight given by the inverse of the current value of the statistic. - The
absolutevalue is therelativevalue divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).
This PR/issue depends on:
- leanprover-community/mathlib4#29533
- leanprover-community/mathlib4#26215 By Dependent Issues (🤖). Happy coding!
This pull request has conflicts, please merge master and resolve them.
This pull request has conflicts, please merge master and resolve them.
This pull request has conflicts, please merge master and resolve them.
This pull request has conflicts, please merge master and resolve them.
This pull request has conflicts, please merge master and resolve them.