mathlib4 icon indicating copy to clipboard operation
mathlib4 copied to clipboard

feat(Algebra): finite projective dimension of regular

Open Thmoas-Guan opened this issue 4 months ago • 7 comments

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

Open in Gitpod

Thmoas-Guan avatar Sep 11 '25 13:09 Thmoas-Guan

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 relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

github-actions[bot] avatar Sep 11 '25 13:09 github-actions[bot]

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.