FormalConjecturesForMathlib/RingTheory/IntersectionMultiplicity.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1
4 declarations, 0 contain sorry, 0 declared as axioms
Serre's intersection multiplicity
For a commutative ring R and R-modules M, N, this file defines Serre's intersection
multiplicity
$$\chi(M, N) = \sum_{i \ge 0} (-1)^i \ell_R(\operatorname{Tor}_i^R(M, N)),$$
using CategoryTheory.Tor on ModuleCat R.
The definition is meaningful when R is a regular local ring, M and N are finitely generated
and M ⊗[R] N has finite length: then Tor_i vanishes for i > dim R, so the sum is finite, and
every Tor_i has finite length, so ENat.toNat truncates nothing.
Main declarations
Module.intersectionMultiplicity R M N: the alternating sum above.Module.intersectionMultiplicity_of_projective: ifNis projective,χ(M, N) = ℓ(M ⊗ N).Module.intersectionMultiplicity_eq_zero_of_subsingleton: ifM = 0, thenχ(M, N) = 0.Module.intersectionMultiplicity_self_self: over a fieldk,χ(k, k) = 1.
Imports (6)
Imported by 1 file
- def
Module.intersectionMultiplicityThe intersection multiplicity of two modulesMandNover a commutative ringRline 62 sourceSource documentation
The intersection multiplicity of two modules
MandNover a commutative ringR, $$\chi(M, N) = \sum_{i \ge 0} (-1)^i \ell_R(\operatorname{Tor}_i^R(M, N)).$$ HereTorisCategoryTheory.ToronModuleCat R, the sum is afinsumoverℕ, and the length of each Tor module is converted to a natural number byENat.toNat.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,IntProof uses:
finsum,Nat,HMul.hMul,HPow.hPow,Neg.neg,OfNat.ofNat,ENat.toNat,Module.length,CategoryTheory.Functor.obj,ModuleCat,CategoryTheory.Functor,CategoryTheory.Tor,ModuleCat.of27 instances, coercions and auxiliary constants left out.
noncomputable def intersectionMultiplicity : ℤ := …
- theorem
Module.intersectionMultiplicity_of_projectiveIfNis projective, onlyTor₀(M, N) = M ⊗ Ncontributes toχ(M, N)line 70 sourceSource documentation
If
Nis projective, onlyTor₀(M, N) = M ⊗ Ncontributes toχ(M, N).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Module.Projective,Eq,Int, Module.intersectionMultiplicity,ENat.toNat,Module.length,TensorProductProof uses:
id,Eq.mpr,finsum,Nat,HMul.hMul,HPow.hPow,Neg.neg,OfNat.ofNat,CategoryTheory.Functor.obj,ModuleCat,CategoryTheory.Functor,CategoryTheory.Tor,ModuleCat.of,congrArg,finsum_eq_single,Ne,Nat.succ,Exists,Nat.exists_eq_succ_of_ne_zero,Subsingletonand 26 more71 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
theorem intersectionMultiplicity_of_projective [Module.Projective R N] : intersectionMultiplicity R M N = (Module.length R (M ⊗[R] N)).toNat := by …Mentions: Module.intersectionMultiplicity
- theorem
Module.intersectionMultiplicity_eq_zero_of_subsingletonIfMis the zero module, thenχ(M, N) = 0: the functorM ⊗ -is zero, so all its left derived functors vanish line 89 sourceSource documentation
If
Mis the zero module, thenχ(M, N) = 0: the functorM ⊗ -is zero, so all its left derived functors vanish.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Subsingleton,Eq,Int, Module.intersectionMultiplicity,OfNat.ofNatProof uses:
CategoryTheory.Limits.IsZero,ModuleCat,ModuleCat.of,ModuleCat.isZero_of_subsingleton,Nat,CategoryTheory.Functor.obj,CategoryTheory.Functor,CategoryTheory.Tor,CategoryTheory.Limits.IsZero.of_iso,HomologicalComplex,ComplexShape.down,HomologicalComplex.homologyFunctor,CategoryTheory.Functor.mapHomologicalComplex,CategoryTheory.MonoidalCategory.tensoringLeft,CategoryTheory.ProjectiveResolution.complex,CategoryTheory.projectiveResolution,CategoryTheory.ShortComplex.isZero_homology_of_isZero_X₂,HomologicalComplex.sc,CategoryTheory.Functor.map_isZero,CategoryTheory.MonoidalCategory.tensoringRightand 22 more68 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
theorem intersectionMultiplicity_eq_zero_of_subsingleton [Subsingleton M] : intersectionMultiplicity R M N = 0 := by …Mentions: Module.intersectionMultiplicity
- theorem
Module.intersectionMultiplicity_self_selfNormalisation: over a fieldk,χ(k, k) = 1line 103 sourceSource documentation
Normalisation: over a field
k,χ(k, k) = 1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,Eq,Int, Module.intersectionMultiplicity,OfNat.ofNatProof uses:
Eq.mpr,ENat.toNat,Module.length,TensorProduct,id,congrArg, Module.intersectionMultiplicity_of_projective,ENat,LinearEquiv.length_eq,TensorProduct.lid,Module.length_eq_one,Eq.refl33 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem intersectionMultiplicity_self_self (k : Type u) [Field k] : intersectionMultiplicity k k k = 1 := by …Mentions: Module.intersectionMultiplicity