FormalConjecturesForMathlib/RingTheory/IntersectionMultiplicity.lean

GitHub source file

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

Imports (6)
Imported by 1 file
  1. def Module.intersectionMultiplicity The intersection multiplicity of two modules M and N over a commutative ring R line 62 source

    Source documentation

    The intersection multiplicity of two modules M and N over a commutative ring R, $$\chi(M, N) = \sum_{i \ge 0} (-1)^i \ell_R(\operatorname{Tor}_i^R(M, N)).$$ Here Tor is CategoryTheory.Tor on ModuleCat R, the sum is a finsum over ℕ, and the length of each Tor module is converted to a natural number by ENat.toNat.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: CommRing, AddCommGroup, Module, Int

    Proof uses: finsum, Nat, HMul.hMul, HPow.hPow, Neg.neg, OfNat.ofNat, ENat.toNat, Module.length, CategoryTheory.Functor.obj, ModuleCat, CategoryTheory.Functor, CategoryTheory.Tor, ModuleCat.of

    27 instances, coercions and auxiliary constants left out.

    noncomputable def intersectionMultiplicity : ℤ :=
    …
  2. theorem Module.intersectionMultiplicity_of_projective If N is projective, only Tor₀(M, N) = M ⊗ N contributes to χ(M, N) line 70 source

    Source documentation

    If N is projective, only Tor₀(M, N) = M ⊗ N contributes 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, TensorProduct

    Proof 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, Subsingleton and 26 more

    71 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

  3. theorem Module.intersectionMultiplicity_eq_zero_of_subsingleton If M is the zero module, then χ(M, N) = 0: the functor M ⊗ - is zero, so all its left derived functors vanish line 89 source

    Source documentation

    If M is the zero module, then χ(M, N) = 0: the functor M ⊗ - 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.ofNat

    Proof 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.tensoringRight and 22 more

    68 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

  4. theorem Module.intersectionMultiplicity_self_self Normalisation: over a field k, χ(k, k) = 1 line 103 source

    Source 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.ofNat

    Proof 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.refl

    33 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