15.64 Products and Tor to 15.80 Characterizing perfect…
Section15.64 Products and Tor#
Section 15.64 of the Stacks Project, Tag 068G. 5 tags here are carried by 5 declarations of the repository (all in StacksFrontier) and 6 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 068G, the section
Tag 068G in the Stacks Project.
RingTheory.TorProducts.derivedTorProduct, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Tor/DerivedObjectProduct.lean, line 107. The attribute's comment: “products on the Tor of derived objects, the last display of the paragraph following Equation 15.64.0.2”.
The products
Torᴿₙ(K, A) ⊗[A] Torᴿₘ(L, A) ⟶ Torᴿₙ₊ₘ(K ⊗ᴸ_R L, A)on the Tor of derived objectsK, L ∈ D(R): the cocycle pairing overAcarried along the base-change identification.
public noncomputable def derivedTorProduct (f : R →+* A)
(D : CochainComplex.DerivedExtensionScalars.TotalDerivedExtensionScalars f)
(K L : DObj R) (n m : ℤ) :
(derivedTor f D n).obj K ⊗ (derivedTor f D m).obj L ⟶
(derivedTor f D (n + m)).obj (((canonicalDerivedTensorProductFunctor R).obj K).obj L)
Declarations registered for the tag:
RingTheory.TorProducts.cohomologyTensorProduct, declared in the repository, registered withadd_to_stacksin StacksFrontier/Homology/Tor/DerivedObjectProduct.lean, line 131 (StacksFrontier): “Equation 15.64.0.1: the pairingHⁱ(K) ⊗ Hʲ(L) ⟶ Hⁱ⁺ʲ(K ⊗ᴸ L)sending the classes of cocyclesk, lto the class ofk ⊗ l.”.CochainComplex.DerivedTensor.derivedExtensionScalarsTensorIso, declared in the repository, registered withadd_to_stacksin StacksFrontier/Homology/Tor/DerivedObjectProduct.lean, line 135 (StacksFrontier): “Equation 15.64.0.2: the canonical identification(K ⊗ᴸ_R A) ⊗ᴸ_A (L ⊗ᴸ_R A) = (K ⊗ᴸ_R L) ⊗ᴸ_R AinD(A).”.RingTheory.TorProducts.torProduct, declared in the repository, registered withadd_to_stacksin StacksFrontier/Homology/Tor/DerivedObjectProduct.lean, line 139 (StacksFrontier): “Equation 15.64.0.3: the productsTorᴿₙ(M, A) ⊗[A] Torᴿₘ(N, A) ⟶ Torᴿₙ₊ₘ(M ⊗_R N, A)forR-modulesMandN.”.GradedTor.existsUnique_algebra, declared in the repository, registered withadd_to_stacksin StacksFrontier/Homology/Tor/DerivedObjectProduct.lean, line 143 (StacksFrontier): “TheA-algebra structure onTorᴿ_⋆(B, A)for anR-algebraB, whose multiplication is the product of Equation 15.64.0.3 followed by the map induced by the multiplicationB ⊗_R B → B.”.GradedTor.canonical_mul_ofNat, declared in the repository, registered withadd_to_stacksin StacksFrontier/Homology/Tor/DerivedObjectProduct.lean, line 147 (StacksFrontier): “The multiplication of theA-algebraTorᴿ_⋆(B, A)is the product of Equation 15.64.0.3 followed by the map induced by multiplication onB.”.GradedTor.torPieceMap_isAlgebraHom, declared in the repository, registered withadd_to_stacksin StacksFrontier/Homology/Tor/DerivedObjectProduct.lean, line 151 (StacksFrontier): “Lemma 15.64.1: for anR-algebra mapB → Cthe induced mapTorᴿ_⋆(B, A) ⟶ Torᴿ_⋆(C, A)is a homomorphism ofA-algebras. The source omits the proof.”.
Tag 068H, an equation
Tag 068H in the Stacks Project.
RingTheory.TorProducts.cohomologyTensorProduct, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Tor/Products.lean, line 289.
Stacks 068H. For any two objects
KandLofD(R), tensoring cocycles gives the canonical mapHⁱ(K) ⊗[R] Hʲ(L) ⟶ Hⁱ⁺ʲ(K ⊗ᴸ[R] L).The representative witness in the result specifies the source's formula
[p] ⊗ [q] ↦ [p ⊗ q].
public noncomputable def cohomologyTensorProduct
(K L : DObj R) (i j : ℤ) : CohomologyTensorProduct K L i j
Tag 068I, an equation
Tag 068I in the Stacks Project.
CochainComplex.DerivedTensor.derivedExtensionScalarsTensorIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Tor/BaseChangeTensorIso.lean, line 829.
The canonical base-change isomorphism
(K ⊗ᴸ[R] A) ⊗ᴸ[A] (L ⊗ᴸ[R] A) ≅ (K ⊗ᴸ[R] L) ⊗ᴸ[R] AinD(A), natural inK, L ∈ D(R)and represented on K-flat complexes by standard tensor base change.
public noncomputable def derivedExtensionScalarsTensorIso (f : R →+* A)
(T_R : DerivedTensorProductGeneral.{uR, max uA v} R)
(T_A : DerivedTensorProductGeneral.{uA, max uR v} A)
(D : CochainComplex.DerivedExtensionScalars.TotalDerivedExtensionScalars.{uR, v, uA} f) :
DerivedExtensionScalarsTensorIso f T_R T_A D
Tag 068J, an equation
Tag 068J in the Stacks Project.
RingTheory.TorProducts.torProduct, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Tor/CrossProduct/Canonical.lean, line 621.
Stacks 068J. The canonical Tor product
Torⁿᴿ(M, A) ⊗[A] Torᵐᴿ(N, A) → Torⁿ⁺ᵐᴿ(M ⊗[R] N, A), simultaneously for allR-modulesMandN. Packaging it as a natural transformation records its naturality in both variables.
public noncomputable def torProduct (n m : ℕ) :
(torBaseChange.{uR, uA, v} R A n).prod (torBaseChange.{uR, uA, v} R A m) ⋙
tensorBifunctor.{uA, max uR v} A ⟶
tensorBifunctor.{uR, max uA v} R ⋙ torBaseChange.{uR, uA, v} R A (n + m)
Tag 068K, a lemma
Tag 068K in the Stacks Project.
GradedTor.torPieceMap_isAlgebraHom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Tor/GradedAlgebra/Functoriality.lean, line 241. References: SGA 6 VII (2.1), “partial”.
The maps on Tor induced by an
R-algebra homomorphism assemble into a homomorphism of the canonical gradedA-algebras on Tor: they preserve the unit and the homogeneous multiplication.
public theorem torPieceMap_isAlgebraHom {B C : AlgCat.{v, uR} R} (g : B ⟶ C) :
torPieceMap.{uR, uA, v} R A g 0 (canonicalAlgebra.{uR, uA, v} R A B).one =
(canonicalAlgebra.{uR, uA, v} R A C).one ∧
∀ (i j : ℤ) (x : torPiece.{uR, uA, v} R A B i)
(y : torPiece.{uR, uA, v} R A B j),
torPieceMap.{uR, uA, v} R A g (i + j)
((canonicalAlgebra.{uR, uA, v} R A B).mul i j (x ⊗ₜ[A] y)) =
(canonicalAlgebra.{uR, uA, v} R A C).mul i j
(torPieceMap.{uR, uA, v} R A g i x ⊗ₜ[A]
torPieceMap.{uR, uA, v} R A g j y)
Sources
Section15.65 Künneth spectral sequence#
Section 15.65 of the Stacks Project, Tag 0H7V. 5 tags here are carried by 5 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0H7W, a lemma
Tag 0H7W in the Stacks Project.
CochainComplex.Kunneth.exists_kunneth_convolution_spectral_sequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/SpectralSequence/Kunneth.lean, line 2171.
For decreasingly filtered complexes
KandLsatisfying the flatness and K-flatness assumptions of the Künneth construction, there is a convolution-filtered tensor productTand an associated spectral sequence with the expected first page. If both filtrations are finite, or their steps are eventually acyclic and eventually quasi-isomorphic to the underlying complexes, then the first page has finite support in each total degree, the induced filtration on cohomology is finite, and the sequence converges with the canonical stable-page comparison.
public theorem exists_kunneth_convolution_spectral_sequence
(R : Type u) [CommRing R]
(K L : FilteredObject (CochainComplex (ModuleCat.{u} R) ℤ) ℤᵒᵖ)
(hflatK :
(∀ n : ℤ, Module.Flat R (K.X.X n)) ∧
(∀ i n : ℤ, Module.Flat R ((K.filtration.obj (op i)).X n)) ∧
(∀ i n : ℤ, Module.Flat R (((FilteredObject.gr i).obj K).X n)))
(hflatL :
(∀ n : ℤ, Module.Flat R (L.X.X n)) ∧
(∀ i n : ℤ, Module.Flat R ((L.filtration.obj (op i)).X n)) ∧
(∀ i n : ℤ, Module.Flat R (((FilteredObject.gr i).obj L).X n)))
(hkflatK : K.X.KFlat ∧ (∀ i : ℤ, (K.filtration.obj (op i)).KFlat) ∧
(∀ i : ℤ, ((FilteredObject.gr i).obj K).KFlat))
(hkflatL : L.X.KFlat ∧ (∀ i : ℤ, (L.filtration.obj (op i)).KFlat) ∧
(∀ i : ℤ, ((FilteredObject.gr i).obj L).KFlat)) :
∃ (T : FilteredObject (CochainComplex (ModuleCat.{u} R) ℤ) ℤᵒᵖ)
(eT : K.X ⊗ L.X ≅ T.X),
(∀ p n : ℤ, ∀ Q : Subobject (T.X.X n),
Subobject.mk ((T.filtration.ι.app (op p)).f n) ≤ Q ↔
∀ ij : {ij : ℤ × ℤ // ij.1 + ij.2 = p},
imageSubobject ((((K.filtration.ι.app (op ij.1.1)) ⊗ₘ
(L.filtration.ι.app (op ij.1.2))) ≫ eT.hom).f n) ≤ Q) ∧
∃ (F : ∀ (_p n : ℤ), Subobject (T.X.X n))
(Z : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(D : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(FH : ∀ (n _p : ℤ), Subobject (T.X.homology n))
(E : CohomologicalSpectralSequence (ModuleCat.{u} R) 0)
(hE : ∀ (r p q n : ℤ) (hr : 0 ≤ r) (_ : n = p + q), (E.page r hr).X (p, q) ≅
cokernel (Subobject.ofLE _ _ (inf_le_right : D r p n ⊓ Z r p n ≤ Z r p n))),
(∀ p n : ℤ, F p n = Subobject.mk ((T.filtration.ι.app (op p)).f n)) ∧
(∀ r p n : ℤ, Z r p n =
F p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj (F (p + r) (n + 1))) ∧
(∀ r p n : ℤ, D r p n = Z (r - 1) (p + 1) n ⊔
(Subobject.«exists» (T.X.d (n - 1) n)).obj (Z (r - 1) (p - r + 1) (n - 1))) ∧
(∀ n p : ℤ, FH n p =
imageSubobject (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n)) ∧
(∀ p q : ℤ, Nonempty ((E.page 1 (by omega)).X (p, q) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = p} ↦
(((FilteredObject.gr ij.1.1).obj K) ⊗
((FilteredObject.gr ij.1.2).obj L)).homology (p + q))) ∧
(((K.filtration.IsFinite ∧ L.filtration.IsFinite) ∨
∃ a b : ℤ, a < b ∧
(∀ i : ℤ, b < i → (K.filtration.obj (op i)).Acyclic) ∧
(∀ i : ℤ, i < a → QuasiIso (K.filtration.ι.app (op i))) ∧
(∀ j : ℤ, b < j → (L.filtration.obj (op j)).Acyclic) ∧
(∀ j : ℤ, j < a → QuasiIso (L.filtration.ι.app (op j)))) →
(∀ n : ℤ, {p : ℤ | ¬ IsZero ((E.page 1 (by omega)).X (p, n - p))}.Finite) ∧
(∀ n : ℤ, ∃ a b : ℤ, a ≤ b ∧ FH n a = ⊤ ∧ FH n b = ⊥) ∧
(∀ p q : ℤ, ∃ b : ℤ, ∀ (r : ℤ) (hr : 0 ≤ r), b ≤ r →
(E.page r hr).d (p, q) (p + r, q - r + 1) = 0) ∧
(∀ p n : ℤ,
IsGLB (Set.range fun r : ℕ =>
F p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj (F (p + r) (n + 1)) ⊔ F (p + 1) n)
(kernelSubobject (T.X.d n (n + 1)) ⊓ F p n ⊔ F (p + 1) n) ∧
IsLUB (Set.range fun r : ℕ =>
F p n ⊓ (Subobject.«exists» (T.X.d (n - 1) n)).obj (F (p - r) (n - 1)) ⊔
F (p + 1) n)
(imageSubobject (T.X.d (n - 1) n) ⊓ F p n ⊔ F (p + 1) n)) ∧
(∀ p n : ℤ,
let A := (Subobject.pullback (T.X.iCycles n)).obj (F p n)
let N := kernelSubobject (T.X.d n (n + 1)) ⊓ F p n ⊔ F (p + 1) n
let B := imageSubobject (T.X.d (n - 1) n) ⊓ F p n ⊔ F (p + 1) n
∃ (a : (A : ModuleCat.{u} R) ⟶ (N : ModuleCat.{u} R))
(b : (A : ModuleCat.{u} R) ⟶
image (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))
(e : cokernel (Subobject.ofLE (B ⊓ N) N inf_le_right) ≅
cokernel (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))),
A.arrow ≫ T.X.iCycles n = a ≫ N.arrow ∧
A.arrow ≫ T.X.homologyπ n =
b ≫ image.ι (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n) ∧
a ≫ cokernel.π (Subobject.ofLE (B ⊓ N) N inf_le_right) ≫ e.hom =
b ≫ cokernel.π (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))))
Tag 0H7X, a lemma
Tag 0H7X in the Stacks Project.
CochainComplex.KFlat.exists_free_kFlat_filtered_resolution, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/KFlat/FilteredResolution.lean, line 1383.
A filtered complex of modules admits a filtered morphism from a complex whose underlying terms, filtration steps, and associated graded pieces are free and K-flat, and this morphism is a quasi-isomorphism on the underlying complex, on every filtration step, and on every associated graded piece.
public theorem exists_free_kFlat_filtered_resolution
(R : Type u) [CommRing R]
(K : FilteredObject (CochainComplex (ModuleCat.{u} R) ℤ) ℤᵒᵖ) :
∃ (P : FilteredObject (CochainComplex (ModuleCat.{u} R) ℤ) ℤᵒᵖ) (f : P ⟶ K),
(∀ n : ℤ, Module.Free R (P.X.X n)) ∧
(∀ i n : ℤ, Module.Free R ((P.filtration.obj (op i)).X n)) ∧
(∀ i n : ℤ,
Module.Free R (((FilteredObject.gr i).obj P).X n)) ∧
P.X.KFlat ∧
(∀ i : ℤ, (P.filtration.obj (op i)).KFlat) ∧
(∀ i : ℤ, ((FilteredObject.gr i).obj P).KFlat) ∧
QuasiIso f.hom ∧
(∀ i : ℤ, QuasiIso (f.natTrans.app (op i))) ∧
(∀ i : ℤ, QuasiIso ((FilteredObject.gr i).map f))
Tag 0H7Y, a proposition
Tag 0H7Y in the Stacks Project.
CochainComplex.Kunneth.exists_kunneth_filtered_complex, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/SpectralSequence/Kunneth.lean, line 2318.
Two filtered complexes of modules have a filtered K-flat tensor representative whose associated spectral sequence has the expected Künneth first page. If the filtration steps of both complexes are eventually acyclic and eventually quasi-isomorphic to the underlying complexes, then the first page is bounded in every total degree, the induced filtration on cohomology is finite, and the spectral sequence converges canonically to the cohomology of the derived tensor product.
public theorem exists_kunneth_filtered_complex
(R : Type u) [CommRing R]
(K L : FilteredObject (CochainComplex (ModuleCat.{u} R) ℤ) ℤᵒᵖ) :
∃ (P Q : FilteredObject (CochainComplex (ModuleCat.{u} R) ℤ) ℤᵒᵖ)
(f : P ⟶ K) (g : Q ⟶ L)
(T : FilteredObject (CochainComplex (ModuleCat.{u} R) ℤ) ℤᵒᵖ)
(eT : P.X ⊗ Q.X ≅ T.X),
((∀ n : ℤ, Module.Flat R (P.X.X n)) ∧
(∀ i n : ℤ, Module.Flat R ((P.filtration.obj (op i)).X n)) ∧
(∀ i n : ℤ, Module.Flat R (((FilteredObject.gr i).obj P).X n)) ∧
P.X.KFlat ∧
(∀ i : ℤ, (P.filtration.obj (op i)).KFlat) ∧
(∀ i : ℤ, ((FilteredObject.gr i).obj P).KFlat) ∧
QuasiIso f.hom ∧
(∀ i : ℤ, QuasiIso (f.natTrans.app (op i))) ∧
(∀ i : ℤ, QuasiIso ((FilteredObject.gr i).map f))) ∧
((∀ n : ℤ, Module.Flat R (Q.X.X n)) ∧
(∀ i n : ℤ, Module.Flat R ((Q.filtration.obj (op i)).X n)) ∧
(∀ i n : ℤ, Module.Flat R (((FilteredObject.gr i).obj Q).X n)) ∧
Q.X.KFlat ∧
(∀ i : ℤ, (Q.filtration.obj (op i)).KFlat) ∧
(∀ i : ℤ, ((FilteredObject.gr i).obj Q).KFlat) ∧
QuasiIso g.hom ∧
(∀ i : ℤ, QuasiIso (g.natTrans.app (op i))) ∧
(∀ i : ℤ, QuasiIso ((FilteredObject.gr i).map g))) ∧
(∀ p n : ℤ, ∀ U : Subobject (T.X.X n),
Subobject.mk ((T.filtration.ι.app (op p)).f n) ≤ U ↔
∀ ij : {ij : ℤ × ℤ // ij.1 + ij.2 = p},
imageSubobject ((((P.filtration.ι.app (op ij.1.1)) ⊗ₘ
(Q.filtration.ι.app (op ij.1.2))) ≫ eT.hom).f n) ≤ U) ∧
∃ (F : ∀ (_p n : ℤ), Subobject (T.X.X n))
(Z : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(D : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(FH : ∀ (n _p : ℤ), Subobject (T.X.homology n))
(E : CohomologicalSpectralSequence (ModuleCat.{u} R) 0)
(hE : ∀ (r p q n : ℤ) (hr : 0 ≤ r) (_ : n = p + q), (E.page r hr).X (p, q) ≅
cokernel (Subobject.ofLE _ _
(inf_le_right : D r p n ⊓ Z r p n ≤ Z r p n))),
(∀ p n : ℤ, F p n = Subobject.mk ((T.filtration.ι.app (op p)).f n)) ∧
(∀ r p n : ℤ, Z r p n =
F p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj (F (p + r) (n + 1))) ∧
(∀ r p n : ℤ, D r p n = Z (r - 1) (p + 1) n ⊔
(Subobject.«exists» (T.X.d (n - 1) n)).obj (Z (r - 1) (p - r + 1) (n - 1))) ∧
(∀ n p : ℤ, FH n p =
imageSubobject (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n)) ∧
(∀ p q : ℤ, Nonempty ((E.page 1 (by omega)).X (p, q) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = p} ↦
(((FilteredObject.gr ij.1.1).obj P) ⊗
((FilteredObject.gr ij.1.2).obj Q)).homology (p + q))) ∧
(((∃ b : ℤ, ∀ i : ℤ, b < i → (K.filtration.obj (op i)).Acyclic) ∧
(∃ a : ℤ, ∀ i : ℤ, i < a → QuasiIso (K.filtration.ι.app (op i))) ∧
(∃ b : ℤ, ∀ j : ℤ, b < j → (L.filtration.obj (op j)).Acyclic) ∧
(∃ a : ℤ, ∀ j : ℤ, j < a → QuasiIso (L.filtration.ι.app (op j)))) →
(∀ n : ℤ, {p : ℤ | ¬ IsZero ((E.page 1 (by omega)).X (p, n - p))}.Finite) ∧
(∀ n : ℤ, ∃ a b : ℤ, a ≤ b ∧ FH n a = ⊤ ∧ FH n b = ⊥) ∧
(∀ p q : ℤ, ∃ b : ℤ, ∀ (r : ℤ) (hr : 0 ≤ r), b ≤ r →
(E.page r hr).d (p, q) (p + r, q - r + 1) = 0) ∧
(∀ p n : ℤ,
IsGLB (Set.range fun r : ℕ ↦
F p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj
(F (p + r) (n + 1)) ⊔ F (p + 1) n)
(kernelSubobject (T.X.d n (n + 1)) ⊓ F p n ⊔ F (p + 1) n) ∧
IsLUB (Set.range fun r : ℕ ↦
F p n ⊓ (Subobject.«exists» (T.X.d (n - 1) n)).obj
(F (p - r) (n - 1)) ⊔ F (p + 1) n)
(imageSubobject (T.X.d (n - 1) n) ⊓ F p n ⊔ F (p + 1) n)) ∧
(∀ p n : ℤ,
let A := (Subobject.pullback (T.X.iCycles n)).obj (F p n)
let N := kernelSubobject (T.X.d n (n + 1)) ⊓ F p n ⊔ F (p + 1) n
let B := imageSubobject (T.X.d (n - 1) n) ⊓ F p n ⊔ F (p + 1) n
∃ (a : (A : ModuleCat.{u} R) ⟶ (N : ModuleCat.{u} R))
(b : (A : ModuleCat.{u} R) ⟶
image (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))
(e : cokernel (Subobject.ofLE (B ⊓ N) N inf_le_right) ≅
cokernel (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))),
A.arrow ≫ T.X.iCycles n = a ≫ N.arrow ∧
A.arrow ≫ T.X.homologyπ n =
b ≫ image.ι (HomologicalComplex.homologyMap
(T.filtration.ι.app (op p)) n) ∧
a ≫ cokernel.π (Subobject.ofLE (B ⊓ N) N inf_le_right) ≫ e.hom =
b ≫ cokernel.π (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap
(T.filtration.ι.app (op p)) n))))
Tag 0H7Z, a lemma
Tag 0H7Z in the Stacks Project.
CochainComplex.Kunneth.exists_kunneth_spectral_sequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/SpectralSequence/KunnethTor.lean, line 989. References: EGA III (6.3.2), “(6.3.2.2)”; EGA III (6.5.4), “(6.5.4.2)”; EGA III (6.8.2), “m=2, modules over a ring”.
Künneth spectral sequence. For bounded complexes
KandLof modules over a commutative ring, there is a bounded cohomological spectral sequence withE₂^(p,q) = ⊕_(i+j=q) Tor_(-p)(H^i(K), H^j(L)), converging to the cohomology in degreep + qof the derived tensor product. The derived tensor product is represented here by the tensor product of K-flat replacements ofKandL.
public theorem exists_kunneth_spectral_sequence
(R : Type u) [CommRing R]
(K : CochainComplex (ModuleCat.{v} R) ℤ)
(L : CochainComplex (ModuleCat.{w} R) ℤ)
(aK bK aL bL : ℤ) [K.IsGE aK] [K.IsLE bK] [L.IsGE aL] [L.IsLE bL] :
let S := ULift.{max v w} R
let U : ModuleCat.{v} R ⥤ ModuleCat.{max u v w} S :=
ModuleCat.uliftFunctor.{max u w} R ⋙ ModuleCat.restrictScalars ULift.ringEquiv.toRingHom
let V : ModuleCat.{w} R ⥤ ModuleCat.{max u v w} S :=
ModuleCat.uliftFunctor.{max u v} R ⋙ ModuleCat.restrictScalars ULift.ringEquiv.toRingHom
let K' := (U.mapHomologicalComplex (ComplexShape.up ℤ)).obj K
let L' := (V.mapHomologicalComplex (ComplexShape.up ℤ)).obj L
∃ (P Q : CochainComplex (ModuleCat S) ℤ) (f : P ⟶ K') (g : Q ⟶ L')
(_ : QuasiIso f) (_ : QuasiIso g) (_ : P.KFlat) (_ : Q.KFlat)
(T : FilteredObject (CochainComplex (ModuleCat S) ℤ) ℤᵒᵖ)
(eT : P ⊗ Q ≅ T.X)
(E : E₂CohomologicalSpectralSequence (ModuleCat S))
(F : ∀ (_p n : ℤ), Subobject (T.X.X n))
(Z : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(D : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(FH : ∀ (_n _p : ℤ), Subobject (T.X.homology _n))
(hE : ∀ (r p q : ℤ) (hr : 2 ≤ r), (E.page r hr).X (p, q) ≅
cokernel (Subobject.ofLE _ _
(inf_le_right : D (r - 1) (-q) (p + q) ⊓ Z (r - 1) (-q) (p + q) ≤
Z (r - 1) (-q) (p + q)))),
(∀ p n : ℤ, F p n = Subobject.mk ((T.filtration.ι.app (op p)).f n)) ∧
(∀ r p n : ℤ, Z r p n =
F p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj (F (p + r) (n + 1))) ∧
(∀ r p n : ℤ, D r p n = Z (r - 1) (p + 1) n ⊔
(Subobject.«exists» (T.X.d (n - 1) n)).obj (Z (r - 1) (p - r + 1) (n - 1))) ∧
(∀ n p : ℤ, FH n p =
imageSubobject (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n)) ∧
(∀ p q : ℤ, p ≤ 0 →
Nonempty ((E.page 2).X (p, q) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = q} ↦
((Tor' (ModuleCat S) (-p).toNat).obj (K'.homology ij.1.1)).obj
(L'.homology ij.1.2))) ∧
(∀ p q : ℤ, 0 < p → IsZero ((E.page 2).X (p, q))) ∧
(∀ n : ℤ, {p : ℤ | ¬ IsZero ((E.page 2).X (p, n - p))}.Finite) ∧
(∀ n : ℤ, ∃ a b : ℤ, a ≤ b ∧ FH n a = ⊤ ∧ FH n b = ⊥) ∧
(∀ p q : ℤ, ∃ (r₀ : ℤ) (hr₀ : 2 ≤ r₀), ∀ (r : ℤ) (hr : r₀ ≤ r),
let n := p + q
let i := -q
let N := kernelSubobject (T.X.d n (n + 1)) ⊓ F i n ⊔ F (i + 1) n
let B := imageSubobject (T.X.d (n - 1) n) ⊓ F i n ⊔ F (i + 1) n
(E.page r (by omega)).d (p, q) (p + r, q - r + 1) = 0 ∧
Z (r - 1) i n ⊔ F (i + 1) n = N ∧
(D (r - 1) i n ⊓ Z (r - 1) i n) ⊔ F (i + 1) n = B ⊓ N) ∧
(∀ p n : ℤ,
let A := (Subobject.pullback (T.X.iCycles n)).obj (F p n)
let N := kernelSubobject (T.X.d n (n + 1)) ⊓ F p n ⊔ F (p + 1) n
let B := imageSubobject (T.X.d (n - 1) n) ⊓ F p n ⊔ F (p + 1) n
∃ (a : (A : ModuleCat S) ⟶ (N : ModuleCat S))
(b : (A : ModuleCat S) ⟶
image (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))
(e : cokernel (Subobject.ofLE (B ⊓ N) N inf_le_right) ≅
cokernel (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))),
A.arrow ≫ T.X.iCycles n = a ≫ N.arrow ∧
A.arrow ≫ T.X.homologyπ n =
b ≫ image.ι (HomologicalComplex.homologyMap
(T.filtration.ι.app (op p)) n) ∧
a ≫ cokernel.π (Subobject.ofLE (B ⊓ N) N inf_le_right) ≫ e.hom =
b ≫ cokernel.π (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap
(T.filtration.ι.app (op p)) n)))
Tag 0H80, an example
Tag 0H80 in the Stacks Project.
CochainComplex.Kunneth.tor_isZero_and_exists_kunneth_shortExact, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/SpectralSequence/KunnethTor.lean, line 1327. References: EGA III (7.6.4), “(i) short exact sequence”.
Künneth short exact sequence over a Dedekind domain. Higher Tor modules vanish over a Dedekind domain. Thus the bounded Künneth spectral sequence degenerates at
E₂, and its edge maps exhibit the cohomology of a derived tensor product as an extension of the direct sum of tensor products in total degreenby the direct sum of first Tor modules in total degreen + 1.
public theorem tor_isZero_and_exists_kunneth_shortExact
(R : Type u) [CommRing R] [IsDedekindDomain R] :
let S := ULift.{max v w} R
let U : ModuleCat.{v} R ⥤ ModuleCat.{max u v w} S :=
ModuleCat.uliftFunctor.{max u w} R ⋙ ModuleCat.restrictScalars ULift.ringEquiv.toRingHom
let V : ModuleCat.{w} R ⥤ ModuleCat.{max u v w} S :=
ModuleCat.uliftFunctor.{max u v} R ⋙ ModuleCat.restrictScalars ULift.ringEquiv.toRingHom
(∀ (M : ModuleCat.{v} R) (N : ModuleCat.{w} R) (i : ℕ), i ≠ 0 → i ≠ 1 →
IsZero (((Tor' (ModuleCat S) i).obj (U.obj M)).obj (V.obj N))) ∧
∀ (K : CochainComplex (ModuleCat.{v} R) ℤ) (L : CochainComplex (ModuleCat.{w} R) ℤ)
(aK bK aL bL : ℤ) [K.IsGE aK] [K.IsLE bK] [L.IsGE aL] [L.IsLE bL],
let K' := (U.mapHomologicalComplex (ComplexShape.up ℤ)).obj K
let L' := (V.mapHomologicalComplex (ComplexShape.up ℤ)).obj L
∃ (P Q : CochainComplex (ModuleCat S) ℤ) (f : P ⟶ K') (g : Q ⟶ L')
(_ : QuasiIso f) (_ : QuasiIso g) (_ : P.KFlat) (_ : Q.KFlat)
(T : FilteredObject (CochainComplex (ModuleCat S) ℤ) ℤᵒᵖ)
(eT : P ⊗ Q ≅ T.X)
(E : E₂CohomologicalSpectralSequence (ModuleCat S))
(F : ∀ (_p n : ℤ), Subobject (T.X.X n))
(Z : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(D : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(FH : ∀ (_n _p : ℤ), Subobject (T.X.homology _n))
(_hE : ∀ (r p q : ℤ) (hr : 2 ≤ r), (E.page r hr).X (p, q) ≅
cokernel (Subobject.ofLE _ _
(inf_le_right : D (r - 1) (-q) (p + q) ⊓ Z (r - 1) (-q) (p + q) ≤
Z (r - 1) (-q) (p + q))))
(e₂ : ∀ (p q : ℤ) (_hp : p ≤ 0), (E.page 2).X (p, q) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = q} ↦
((Tor' (ModuleCat S) (-p).toNat).obj (K'.homology ij.1.1)).obj
(L'.homology ij.1.2)),
(∀ p n : ℤ, F p n = Subobject.mk ((T.filtration.ι.app (op p)).f n)) ∧
(∀ r p n : ℤ, Z r p n =
F p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj (F (p + r) (n + 1))) ∧
(∀ r p n : ℤ, D r p n = Z (r - 1) (p + 1) n ⊔
(Subobject.«exists» (T.X.d (n - 1) n)).obj (Z (r - 1) (p - r + 1) (n - 1))) ∧
(∀ n p : ℤ, FH n p =
imageSubobject (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n)) ∧
(∀ p q : ℤ, 0 < p → IsZero ((E.page 2).X (p, q))) ∧
(∀ n : ℤ, {p : ℤ | ¬ IsZero ((E.page 2).X (p, n - p))}.Finite) ∧
(∀ n : ℤ, ∃ a b : ℤ, a ≤ b ∧ FH n a = ⊤ ∧ FH n b = ⊥) ∧
(∀ p q : ℤ, ∃ (r₀ : ℤ) (hr₀ : 2 ≤ r₀), ∀ (r : ℤ) (hr : r₀ ≤ r),
let n := p + q
let i := -q
let N := kernelSubobject (T.X.d n (n + 1)) ⊓ F i n ⊔ F (i + 1) n
let B := imageSubobject (T.X.d (n - 1) n) ⊓ F i n ⊔ F (i + 1) n
(E.page r (by omega)).d (p, q) (p + r, q - r + 1) = 0 ∧
Z (r - 1) i n ⊔ F (i + 1) n = N ∧
(D (r - 1) i n ⊓ Z (r - 1) i n) ⊔ F (i + 1) n = B ⊓ N) ∧
(∀ p n : ℤ,
let A := (Subobject.pullback (T.X.iCycles n)).obj (F p n)
let N := kernelSubobject (T.X.d n (n + 1)) ⊓ F p n ⊔ F (p + 1) n
let B := imageSubobject (T.X.d (n - 1) n) ⊓ F p n ⊔ F (p + 1) n
∃ (a : (A : ModuleCat S) ⟶ (N : ModuleCat S))
(b : (A : ModuleCat S) ⟶
image (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))
(e : cokernel (Subobject.ofLE (B ⊓ N) N inf_le_right) ≅
cokernel (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))),
(A.arrow ≫ T.X.iCycles n = a ≫ N.arrow ∧
A.arrow ≫ T.X.homologyπ n =
b ≫ image.ι (HomologicalComplex.homologyMap
(T.filtration.ι.app (op p)) n) ∧
a ≫ cokernel.π (Subobject.ofLE (B ⊓ N) N inf_le_right) ≫ e.hom =
b ≫ cokernel.π (image.preComp
(HomologicalComplex.homologyMap (T.filtration.diagram.map
(homOfLE (Int.le_add_one le_rfl) : (p : ℤ) ⟶ p + 1).op) n)
(HomologicalComplex.homologyMap
(T.filtration.ι.app (op p)) n)))) ∧
(∀ (r p q : ℤ) (hr : 2 ≤ r),
(E.page r hr).d (p, q) (p + r, q - r + 1) = 0) ∧
∀ n : ℤ,
FH n (-n - 1) = ⊤ ∧ FH n (-n + 1) = ⊥ ∧
∃ (torZeroTensor :
(∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n} ↦
((Tor' (ModuleCat S) (-0 : ℤ).toNat).obj
(K'.homology ij.1.1)).obj (L'.homology ij.1.2)) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n} ↦
K'.homology ij.1.1 ⊗ L'.homology ij.1.2)
(torOne :
(∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n + 1} ↦
((Tor' (ModuleCat S) (-(-1 : ℤ)).toNat).obj
(K'.homology ij.1.1)).obj (L'.homology ij.1.2)) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n + 1} ↦
((Tor' (ModuleCat S) 1).obj (K'.homology ij.1.1)).obj
(L'.homology ij.1.2))
(eTensor : (E.page 2).X (0, n) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n} ↦
K'.homology ij.1.1 ⊗ L'.homology ij.1.2)
(eTor : (E.page 2).X (-1, n + 1) ≅
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n + 1} ↦
((Tor' (ModuleCat S) 1).obj (K'.homology ij.1.1)).obj
(L'.homology ij.1.2))
(e₀ : (E.page 2).X (0, n) ≅ (FH n (-n) : ModuleCat S))
(e₁ : (E.page 2).X (-1, n + 1) ≅ cokernel (FH n (-n)).arrow)
(ι : (∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n} ↦
K'.homology ij.1.1 ⊗ L'.homology ij.1.2) ⟶ (P ⊗ Q).homology n)
(π : (P ⊗ Q).homology n ⟶
∐ fun ij : {ij : ℤ × ℤ // ij.1 + ij.2 = n + 1} ↦
((Tor' (ModuleCat S) 1).obj (K'.homology ij.1.1)).obj
(L'.homology ij.1.2))
(h : ι ≫ π = 0),
eTensor = (e₂ 0 n (by omega)).trans torZeroTensor ∧
eTor = (e₂ (-1) (n + 1) (by omega)).trans torOne ∧
ι = eTensor.inv ≫ e₀.hom ≫ (FH n (-n)).arrow ≫
HomologicalComplex.homologyMap eT.inv n ∧
π = HomologicalComplex.homologyMap eT.hom n ≫
cokernel.π (FH n (-n)).arrow ≫ e₁.inv ≫ eTor.hom ∧
(ShortComplex.mk ι π h).ShortExact
Sources
Section15.66 Pseudo-coherent modules, I#
Section 15.66 of the Stacks Project, Tag 064N. 19 tags here are carried by 25 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 064P, an equation
Tag 064P in the Stacks Project.
StacksDraft.PseudoCoherence.HasFiniteFreeResolutionUpTo, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Module.lean, line 76.
A module has a finite free resolution through degree
nif there is an exact sequenceR^{a_n} → ⋯ → R^{a_0} → M → 0. Exactness is required atMand at every finite free term except the leftmost one.
def HasFiniteFreeResolutionUpTo
(R : Type u) [Ring R] (M : Type v) [AddCommGroup M] [Module R M] (n : ℕ) : Prop
Tag 064Q, a definition
Tag 064Q in the Stacks Project.
StacksDraft.PseudoCoherence.IsPseudoCoherentFrom, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/PseudoCoherent.lean, line 123. The attribute's comment: “(1)”. References: SGA 6 II (2.3.2).
An object
KofD(R)ism-pseudo-coherent when there is a bounded complexEof finite freeR-modules and a morphismα : Q(E) ⟶ KinD(R), whereQsends a complex to its image in the derived category, such thatHⁱ(α)is an isomorphism for everyi > mandHᵐ(α)is surjective.
def IsPseudoCoherentFrom (K : DerivedCategory (ModuleCat.{v} R)) (m : ℤ) : Prop
StacksDraft.PseudoCoherence.IsPseudoCoherent, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/PseudoCoherent.lean, line 132. The attribute's comment: “(2)”.
An object
KofD(R)is pseudo-coherent when it is represented by a bounded-above complex of finite freeR-modules.
def IsPseudoCoherent (K : DerivedCategory (ModuleCat.{v} R)) : Prop
StacksDraft.PseudoCoherence.IsModulePseudoCoherentFrom, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/PseudoCoherent.lean, line 139. The attribute's comment: “(3)”.
An
R-moduleMism-pseudo-coherent when the object ofD(R)concentrated in degree0with valueMism-pseudo-coherent.
def IsModulePseudoCoherentFrom (M : Type v) [AddCommGroup M] [Module R M] (m : ℤ) : Prop
StacksDraft.PseudoCoherence.IsModulePseudoCoherent, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/PseudoCoherent.lean, line 146. The attribute's comment: “(4)”.
An
R-moduleMis pseudo-coherent when the object ofD(R)concentrated in degree0with valueMis pseudo-coherent.
def IsModulePseudoCoherent (M : Type v) [AddCommGroup M] [Module R M] : Prop
Tag 064R, a lemma
Tag 064R in the Stacks Project.
PseudoCoherence.isPseudoCoherent_of_distinguished_one, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Triangle.lean, line 848. The attribute's comment: “(1)”. References: SGA 6 I (2.6), “special case”; SGA 6 III (1.4), “special case”.
Statement (1). If
Kis(m+1)-pseudo-coherent andLism-pseudo-coherent, and(K, L, M, f, g, h)is a distinguished triangle, thenMism-pseudo-coherent.Assembled from the three sub-lemmas above. The degree bookkeeping: with
α : Q P ⟶ Kiso onH^i(i > m+1)/epi onH^{m+1}andβ : Q E ⟶ Liso onH^i(i > m)/epi onH^m, the coneCcarriesμ = φ.hom₃ : Q C ⟶ M. Fori > m:H^i(α)is epi (iso ifi > m+1, epi ifi = m+1),H^i(β)iso,H^{i+1}(α)iso (sincei+1 > m+1),H^{i+1}(β)mono (iso sincei+1 > m), so Sub-lemma B givesH^i(μ)iso. Fori = m:H^m(β)epi,H^{m+1}(α)epi,H^{m+1}(β)mono (iso sincem+1 > m), so Sub-lemma C givesH^m(μ)epi. Hence(C, μ)witnesses thatMism-pseudo-coherent.
theorem isPseudoCoherent_of_distinguished_one
(m : ℤ) (T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distinguishedTriangles)
(hK : IsPseudoCoherentFrom T.obj₁ (m + 1))
(hL : IsPseudoCoherentFrom T.obj₂ m) :
IsPseudoCoherentFrom T.obj₃ m
PseudoCoherence.isPseudoCoherent_of_distinguished_two, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Triangle.lean, line 905. The attribute's comment: “(2)”. References: SGA 6 I (2.5), “b), modules over a ring”; SGA 6 I (2.6), “special case”; SGA 6 III (1.4), “special case”.
Statement (2). If
KandMare bothm-pseudo-coherent, and(K, L, M, f, g, h)is a distinguished triangle, thenLism-pseudo-coherent.Reduction to (1): apply (1) to the (distinguished) inverse-rotated triangle
(M⟦-1⟧, K, L), using thatM⟦-1⟧is(m+1)-pseudo-coherent (shift of them-pseudo-coherentM) andKism-pseudo-coherent.
theorem isPseudoCoherent_of_distinguished_two
(m : ℤ) (T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distinguishedTriangles)
(hK : IsPseudoCoherentFrom T.obj₁ m)
(hM : IsPseudoCoherentFrom T.obj₃ m) :
IsPseudoCoherentFrom T.obj₂ m
PseudoCoherence.isPseudoCoherent_of_distinguished_three, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Triangle.lean, line 930. The attribute's comment: “(3)”. References: SGA 6 I (2.6), “special case”; SGA 6 III (1.4), “special case”.
Statement (3). If
Lis(m+1)-pseudo-coherent andMism-pseudo-coherent, and(K, L, M, f, g, h)is a distinguished triangle, thenKis(m+1)-pseudo-coherent.Reduction to (1): apply (1) to the (distinguished) rotated triangle
(L, M, K⟦1⟧), concludingK⟦1⟧ism-pseudo-coherent; shifting back by-1and transporting along the isomorphism(K⟦1⟧)⟦-1⟧ ≅ Kyields thatKis(m+1)-pseudo-coherent.
theorem isPseudoCoherent_of_distinguished_three
(m : ℤ) (T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distinguishedTriangles)
(hL : IsPseudoCoherentFrom T.obj₂ (m + 1))
(hM : IsPseudoCoherentFrom T.obj₃ m) :
IsPseudoCoherentFrom T.obj₁ (m + 1)
Tag 064S, a lemma
Tag 064S in the Stacks Project.
PseudoCoherence.finite_homology_of_isPseudoCoherentFrom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Homology.lean, line 364. The attribute's comment: “(1)”.
Statement 1 (Stacks 064S). If
K^•ism-pseudo-coherent andH^i(K^•) = 0for alli > m, thenH^m(K^•)is a finite typeR-module.
theorem finite_homology_of_isPseudoCoherentFrom {R : Type u} [Ring R]
[HasDerivedCategory (ModuleCat.{v} R)] (K : DerivedCategory (ModuleCat.{v} R))
(m : ℤ) (hK : IsPseudoCoherentFrom K m)
(hvanish : ∀ i : ℤ, m < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat R) i).obj K)) :
Module.Finite R ((DerivedCategory.homologyFunctor (ModuleCat R) m).obj K)
PseudoCoherence.finitePresentation_homology_succ_of_isPseudoCoherentFrom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Homology.lean, line 399. The attribute's comment: “(2)”.
Statement 2 (Stacks 064S). If
K^•ism-pseudo-coherent andH^i(K^•) = 0for alli > m + 1, thenH^{m+1}(K^•)is a finitely presentedR-module.
theorem finitePresentation_homology_succ_of_isPseudoCoherentFrom {R : Type u} [Ring R]
[HasDerivedCategory (ModuleCat.{v} R)] (K : DerivedCategory (ModuleCat.{v} R))
(m : ℤ) (hK : IsPseudoCoherentFrom K m)
(hvanish : ∀ i : ℤ, m + 1 < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat R) i).obj K)) :
Module.FinitePresentation R
((DerivedCategory.homologyFunctor (ModuleCat R) (m + 1)).obj K)
Tag 064T, a lemma
Tag 064T in the Stacks Project.
StacksDraft.PseudoCoherence.modulePseudoCoherent_iff_finiteness_and_resolutions, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Module.lean, line 471. References: SGA 6 I (2.9), “special case”.
Finite generation, finite presentation, finite free resolutions of a fixed length, and infinite finite free resolutions characterize the corresponding forms of pseudo-coherence for a module, represented in a universe containing both
RandM.
theorem modulePseudoCoherent_iff_finiteness_and_resolutions
[HasDerivedCategory (ModuleCat.{max v u} R)] (M : Type v) [AddCommGroup M] [Module R M] :
(IsModulePseudoCoherentFrom (R := R) (ULift.{u} M) 0 ↔ Module.Finite R M) ∧
(IsModulePseudoCoherentFrom (R := R) (ULift.{u} M) (-1) ↔ Module.FinitePresentation R M) ∧
(∀ d : ℕ, IsModulePseudoCoherentFrom (R := R) (ULift.{u} M) (-(d : ℤ)) ↔
HasFiniteFreeResolutionOfLength (R := R) (ULift.{u} M) d) ∧
(IsModulePseudoCoherent (R := R) (ULift.{u} M) ↔
Nonempty (FiniteFreeModuleResolution R (ULift.{u} M)))
Tag 064U, a lemma
Tag 064U in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherent_iff_pseudoCoherentFrom_all_iff_finiteProjective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Basic.lean, line 1041.
Stacks 064U. Pseudo-coherence is equivalent both to
m-pseudo-coherence for every integermand to admitting a bounded-above finite projective representative. If cohomology vanishes aboveb, a finite free representative can be chosen to vanish aboveb.
theorem pseudoCoherent_iff_pseudoCoherentFrom_all_iff_finiteProjective
{R : Type u} [Ring R] [HasDerivedCategory (ModuleCat.{max u v} R)]
(K : DerivedCategory (ModuleCat.{max u v} R)) (b : ℤ) :
let allDegrees := ∀ m : ℤ, IsPseudoCoherentFrom K m
let finiteProjectiveRepresentative :=
∃ P : CochainComplex (ModuleCat.{max u v} R) ℤ,
(∃ n : ℤ, P.IsStrictlyLE n) ∧
(∀ i : ℤ, Module.Finite R (P.X i) ∧ Module.Projective R (P.X i)) ∧
Nonempty (DerivedCategory.Q.obj P ≅ K)
(IsPseudoCoherent K ↔ allDegrees) ∧
(IsPseudoCoherent K ↔ finiteProjectiveRepresentative) ∧
(IsPseudoCoherent K →
(∀ i : ℤ, b < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) i).obj K)) →
∃ (F : CochainComplex (ModuleCat.{max u v} R) ℤ)
(α : DerivedCategory.Q.obj F ⟶ K),
(∀ i : ℤ, Module.Finite R (F.X i) ∧ Module.Free R (F.X i)) ∧
F.IsStrictlyLE b ∧ IsIso α)
Tag 064V, a lemma
Tag 064V in the Stacks Project.
StacksDraft.PseudoCoherence.isPseudoCoherent_of_distinguished, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Basic.lean, line 1151. References: SGA 6 I (2.5), “b), pseudo-coherent case”; SGA 6 I (2.6), “partial”.
Stacks 064V. In a distinguished triangle in
D(R), if two of the three objects are pseudo-coherent, then so is the third.
theorem isPseudoCoherent_of_distinguished
{R : Type u} [Ring R] [HasDerivedCategory (ModuleCat.{v} R)]
(T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distinguishedTriangles) :
(IsPseudoCoherent T.obj₁ → IsPseudoCoherent T.obj₂ → IsPseudoCoherent T.obj₃) ∧
(IsPseudoCoherent T.obj₁ → IsPseudoCoherent T.obj₃ → IsPseudoCoherent T.obj₂) ∧
(IsPseudoCoherent T.obj₂ → IsPseudoCoherent T.obj₃ → IsPseudoCoherent T.obj₁)
Tag 064W, a lemma
Tag 064W in the Stacks Project.
StacksDraft.PseudoCoherence.isPseudoCoherentFrom_of_vanishing_and_finite_homology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Module.lean, line 745. References: SGA 6 I (2.11), “b), H^i=0 for i>m+1”.
Vanishing above degree
m, with the appropriate finiteness assumptions on the cohomology in degreesmandm + 1, impliesm-pseudo-coherence.
theorem isPseudoCoherentFrom_of_vanishing_and_finite_homology
{R : Type u} [Ring R] [HasDerivedCategory (ModuleCat.{v} R)] [Small.{v} R]
(K : DerivedCategory (ModuleCat.{v} R)) (m : ℤ) :
((∀ i : ℤ, m ≤ i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) →
IsPseudoCoherentFrom K m) ∧
((∀ i : ℤ, m < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) →
Module.Finite R ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) m).obj K) →
IsPseudoCoherentFrom K m) ∧
((∀ i : ℤ, m + 1 < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) →
Module.FinitePresentation R
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) (m + 1)).obj K) →
Module.Finite R ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) m).obj K) →
IsPseudoCoherentFrom K m)
Tag 064X, a lemma
Tag 064X in the Stacks Project.
PseudoCoherence.isPseudoCoherentFrom_and_pseudoCoherent_of_biproduct, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Characterization.lean, line 103. References: SGA 6 I (2.12), “necessity”.
Stacks 064X. Each summand of an
m-pseudo-coherent binary biproduct ism-pseudo-coherent, and each summand of a pseudo-coherent binary biproduct is pseudo-coherent.
theorem isPseudoCoherentFrom_and_pseudoCoherent_of_biproduct
{R : Type u} [Ring R] (K L : DerivedCategory (ModuleCat.{v} R)) (m : ℤ) :
(IsPseudoCoherentFrom (K ⊞ L) m →
IsPseudoCoherentFrom K m ∧ IsPseudoCoherentFrom L m) ∧
(IsPseudoCoherent (K ⊞ L) → IsPseudoCoherent K ∧ IsPseudoCoherent L)
Tag 064Y, a lemma
Tag 064Y in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherentFrom_and_pseudoCoherent_of_boundedAbove, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Module.lean, line 617. References: SGA 5 VIII (5.1), “'if' direction”; SGA 6 I (2.11), “Part a), special case”.
A bounded-above complex with suitably pseudo-coherent terms is pseudo-coherent in the corresponding degrees. In particular, pseudo-coherence of every term implies pseudo-coherence of the complex.
theorem pseudoCoherentFrom_and_pseudoCoherent_of_boundedAbove
(K : CochainComplex (ModuleCat.{v} R) ℤ) (hK : ∃ b : ℤ, K.IsStrictlyLE b) :
(∀ m : ℤ, (∀ i : ℤ, IsModulePseudoCoherentFrom (R := R) (K.X i) (m - i)) →
IsPseudoCoherentFrom (DerivedCategory.Q.obj K) m) ∧
((∀ i : ℤ, IsModulePseudoCoherent (R := R) (K.X i)) →
IsPseudoCoherent (DerivedCategory.Q.obj K))
Tag 066B, a lemma
Tag 066B in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherentFrom_and_pseudoCoherent_of_boundedAbove_cohomology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Module.lean, line 884.
A cohomologically bounded-above derived object whose cohomology modules are pseudo-coherent in the corresponding degrees is pseudo-coherent.
theorem pseudoCoherentFrom_and_pseudoCoherent_of_boundedAbove_cohomology
(K : DerivedCategory (ModuleCat.{v} R))
(hK : ∃ b : ℤ, ∀ i : ℤ, b < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) :
(∀ m : ℤ,
(∀ i : ℤ, IsModulePseudoCoherentFrom (R := R)
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K) (m - i)) →
IsPseudoCoherentFrom K m) ∧
((∀ i : ℤ, IsModulePseudoCoherent (R := R)
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) →
IsPseudoCoherent K)
Tag 064Z, a lemma
Tag 064Z in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherentFrom_and_pseudoCoherent_iff_restrictScalars, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/ChangeOfRings.lean, line 452. References: SGA 6 III (1.12), “affine case, X = Y”.
Stacks 064Z. If
Bis pseudo-coherent as anA-module, restriction of scalars alongA → Bpreserves and reflects bothm-pseudo-coherence and pseudo-coherence of complexes.
theorem pseudoCoherentFrom_and_pseudoCoherent_iff_restrictScalars
{A : Type u} {B : Type v} [Ring A] [Ring B] (f : A →+* B)
(hB : IsModulePseudoCoherent (R := A)
((ModuleCat.restrictScalars f).obj (ModuleCat.of B B)))
(K : CochainComplex (ModuleCat.{max u v w} B) ℤ) (m : ℤ) :
let Kₐ := ((ModuleCat.restrictScalars.{max u v w} f).mapHomologicalComplex
(ComplexShape.up ℤ)).obj K
(IsPseudoCoherentFrom (DerivedCategory.Q.obj K) m ↔
IsPseudoCoherentFrom (DerivedCategory.Q.obj Kₐ) m) ∧
(IsPseudoCoherent (DerivedCategory.Q.obj K) ↔
IsPseudoCoherent (DerivedCategory.Q.obj Kₐ))
Tag 0650, a lemma
Tag 0650 in the Stacks Project.
StacksDraft.PseudoCoherence.derivedExtensionScalars_preserves_pseudoCoherent, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/BaseChange.lean, line 671. References: SGA 6 I (2.13), “special case”.
Derived extension of scalars along a homomorphism
f : R →+* Aof commutative rings preservesm-pseudo-coherent objects of the derived category for every integerm, and it preserves pseudo-coherent objects. The source ring, the target ring and the module carrier live in three independent universes.
public theorem derivedExtensionScalars_preserves_pseudoCoherent
{R : Type uR} {A : Type uA} [CommRing R] [CommRing A] (f : R →+* A)
(K : DerivedCategory (ModuleCat.{v} R)) :
(∀ m : ℤ, IsPseudoCoherentFrom K m →
IsPseudoCoherentFrom ((derivedExtensionScalars f).obj K) m) ∧
(IsPseudoCoherent K → IsPseudoCoherent ((derivedExtensionScalars f).obj K))
Tag 066C, a lemma
Tag 066C in the Stacks Project.
StacksDraft.PseudoCoherence.extensionScalars_preserves_pseudoCoherent, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/ChangeOfRings.lean, line 83.
Stacks 066C. Extension of scalars along a flat ring homomorphism preserves
m-pseudo-coherent modules for every integermand preserves pseudo-coherent modules.
theorem extensionScalars_preserves_pseudoCoherent
{A : Type u} {B : Type v} [CommRing A] [CommRing B] (f : A →+* B) (hf : f.Flat)
(M : ModuleCat.{w} A) :
(∀ m : ℤ, IsModulePseudoCoherentFrom (R := A) M m →
IsModulePseudoCoherentFrom (R := B) ((ModuleCat.extendScalars f).obj M) m) ∧
(IsModulePseudoCoherent (R := A) M →
IsModulePseudoCoherent (R := B) ((ModuleCat.extendScalars f).obj M))
Tag 066D, a lemma
Tag 066D in the Stacks Project.
StacksDraft.PseudoCoherence.isPseudoCoherentFrom_and_isPseudoCoherent_of_localization, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Local.lean, line 582.
Stacks 066D. Both
m-pseudo-coherence and pseudo-coherence descend from a finite principal open cover.
theorem isPseudoCoherentFrom_and_isPseudoCoherent_of_localization
{R : Type u} [CommRing R] {ι : Type*} [Finite ι]
(f : ι → R) (hf : Ideal.span (Set.range f) = ⊤)
(K : DerivedCategory (ModuleCat.{max v u} R)) (m : ℤ) :
((∀ i, IsPseudoCoherentFrom ((localizationAwayFunctorAux.{u, v} (f i)).obj K) m) →
IsPseudoCoherentFrom K m) ∧
((∀ i, IsPseudoCoherent ((localizationAwayFunctorAux.{u, v} (f i)).obj K)) →
IsPseudoCoherent K)
Tag 068R, a lemma
Tag 068R in the Stacks Project.
StacksDraft.PseudoCoherence.isPseudoCoherentFrom_and_isPseudoCoherent_of_faithfullyFlat_baseChange, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Local.lean, line 550.
Stacks 068R. Both
m-pseudo-coherence and pseudo-coherence descend along a faithfully flat extension of commutative rings.
theorem isPseudoCoherentFrom_and_isPseudoCoherent_of_faithfullyFlat_baseChange
{R : Type u} {S : Type v} [CommRing R] [CommRing S]
(f : R →+* S) (hf : f.FaithfullyFlat)
(K : CochainComplex (ModuleCat.{max u w} R) ℤ) (m : ℤ) :
(IsPseudoCoherentFrom
(DerivedCategory.Q.obj
(((ModuleCat.extendScalars.{u, v, max u w} f).mapHomologicalComplex
(ComplexShape.up ℤ)).obj K)) m →
IsPseudoCoherentFrom (DerivedCategory.Q.obj K) m) ∧
(IsPseudoCoherent
(DerivedCategory.Q.obj
(((ModuleCat.extendScalars.{u, v, max u w} f).mapHomologicalComplex
(ComplexShape.up ℤ)).obj K)) →
IsPseudoCoherent (DerivedCategory.Q.obj K))
Tag 0DJE, a lemma
Tag 0DJE in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherent_derivedTensorProduct_largeUniverse, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Tensor.lean, line 487.
Stacks 0DJE. If
Kisn-pseudo-coherent and has no cohomology abovea, andLism-pseudo-coherent and has no cohomology aboveb, then their derived tensor productK ⊗ᴸ Lismax (m + a) (n + b)-pseudo-coherent. Moreover, the derived tensor product of two pseudo-coherent objects is pseudo-coherent.The modules live in a universe
max u vindependent of the ring's universeu, as in the source, and the derived tensor product is the one of Stacks 064M,CochainComplex.DerivedTensor.derivedTensorProduct: one endofunctorderivedTensorProduct LofD(R)for each objectL.
public theorem pseudoCoherent_derivedTensorProduct_largeUniverse
(K L : DerivedCategory (ModuleCat.{max u v} R)) :
(∀ n m a b : ℤ,
IsPseudoCoherentFrom K n →
(∀ i : ℤ, a < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) i).obj K)) →
IsPseudoCoherentFrom L m →
(∀ j : ℤ, b < j →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) j).obj L)) →
IsPseudoCoherentFrom
((CochainComplex.DerivedTensor.derivedTensorProduct L).obj K)
(max (m + a) (n + b))) ∧
(IsPseudoCoherent K → IsPseudoCoherent L →
IsPseudoCoherent ((CochainComplex.DerivedTensor.derivedTensorProduct L).obj K))
Tag 066E, a lemma
Tag 066E in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherent_iff_boundedAbove_finite_homology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Coherent.lean, line 238.
Stacks 066E. Over a Noetherian ring, pseudo-coherence from degree
mmeans bounded-above finite homology in degrees at leastm; pseudo-coherence means bounded-above finite homology in all degrees; and pseudo-coherence of a module is equivalent to its finiteness.
theorem pseudoCoherent_iff_boundedAbove_finite_homology
{R : Type u} [Ring R] [IsNoetherianRing R] [Small.{v} R]
(K : DerivedCategory (ModuleCat.{v} R)) (m : ℤ)
(M : Type v) [AddCommGroup M] [Module R M] :
(IsPseudoCoherentFrom K m ↔
(∃ b : ℤ, ∀ i : ℤ, b < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) ∧
∀ i : ℤ, m ≤ i →
Module.Finite R ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) ∧
(IsPseudoCoherent K ↔
(∃ b : ℤ, ∀ i : ℤ, b < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) ∧
∀ i : ℤ,
Module.Finite R ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) ∧
(IsModulePseudoCoherent (R := R) M ↔ Module.Finite R M)
Tag 0EWZ, a lemma
Tag 0EWZ in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherentFrom_iff_finite_and_coherent_homology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Coherent.lean, line 410. References: SGA 6 I (3.5), “b), coherent ring”; SGA 6 I (2.11), “Part b), special case”.
Stacks 0EWZ. Over a coherent ring, a bounded-above derived object is
m-pseudo-coherent exactly when its degree-mcohomology is finite and its higher cohomology modules are coherent, equivalently finitely presented. It is pseudo-coherent exactly when all its cohomology modules are coherent.
theorem pseudoCoherentFrom_iff_finite_and_coherent_homology
{R : Type u} [CommRing R] [IsCoherentRing R]
(K : DerivedCategory (ModuleCat.{max u v} R))
(hK : ∃ b : ℤ, ∀ i : ℤ, b < i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) i).obj K))
(m : ℤ) :
let H := fun i : ℤ =>
(DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) i).obj K
let finiteAndCoherent :=
Module.Finite R (H m) ∧ ∀ i : ℤ, m < i → Module.IsCoherent R (H i)
let finiteAndFinitePresentation :=
Module.Finite R (H m) ∧ ∀ i : ℤ, m < i → Module.FinitePresentation R (H i)
(IsPseudoCoherentFrom K m ↔ finiteAndCoherent) ∧
(finiteAndCoherent ↔ finiteAndFinitePresentation) ∧
(IsPseudoCoherent K ↔ ∀ i : ℤ, Module.IsCoherent R (H i))
Sources
Section15.67 Pseudo-coherent modules, II#
Section 15.67 of the Stacks Project, Tag 0G8V. 7 tags here are carried by 7 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0G8W, a lemma
Tag 0G8W in the Stacks Project.
StacksDraft.PseudoCoherence.colimit_ext_comparison_isIso_of_lt_and_mono, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Ext.lean, line 589.
Stacks 0G8W. If
Kism-pseudo-coherent, then the canonical map from the filtered colimit ofExtⁿ(K, Mᵢ)toExtⁿ(K, colim Mᵢ)is an isomorphism forn < -m, and is a monomorphism forn = -m.
theorem colimit_ext_comparison_isIso_of_lt_and_mono
{R : Type u} [Ring R] {ι : Type v} [Category.{v} ι] [IsFiltered ι]
(M : ι ⥤ ModuleCat.{v} R) (K : DerivedCategory (ModuleCat.{v} R)) (m : ℤ)
(hK : IsPseudoCoherentFrom K m) :
let extFunctor (n : ℤ) :=
DerivedCategory.singleFunctor (ModuleCat.{v} R) 0 ⋙
shiftFunctor (DerivedCategory (ModuleCat.{v} R)) n ⋙
preadditiveCoyoneda.obj (Opposite.op K)
(∀ n : ℤ, n < -m →
IsIso (colimit.desc (M ⋙ extFunctor n)
((extFunctor n).mapCocone (colimit.cocone M)))) ∧
Mono (colimit.desc (M ⋙ extFunctor (-m))
((extFunctor (-m)).mapCocone (colimit.cocone M)))
Tag 0G8X, a lemma
Tag 0G8X in the Stacks Project.
StacksDraft.PseudoCoherence.isPseudoCoherentFrom_iff_colimit_ext_comparison, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Ext.lean, line 1246.
Stacks 0G8X. A cohomologically bounded-above object
Kism-pseudo-coherent if and only if, for every filtered diagram of modules, the canonical map from the filtered colimit ofExtⁿ(K, -)to its value on the colimit is an isomorphism forn < -mand a monomorphism forn = -m.
theorem isPseudoCoherentFrom_iff_colimit_ext_comparison
{R : Type u} [Ring R] [Small.{v} R]
(K : DerivedCategory (ModuleCat.{v} R)) (m : ℤ)
(hK : ∃ n : ℤ, K.IsLE n) :
IsPseudoCoherentFrom K m ↔
∀ (ι : Type v) [Category.{v} ι] [IsFiltered ι]
(M : ι ⥤ ModuleCat.{v} R),
let extFunctor (n : ℤ) :=
DerivedCategory.singleFunctor (ModuleCat.{v} R) 0 ⋙
shiftFunctor (DerivedCategory (ModuleCat.{v} R)) n ⋙
preadditiveCoyoneda.obj (Opposite.op K)
(∀ n : ℤ, n < -m →
IsIso (colimit.desc (M ⋙ extFunctor n)
((extFunctor n).mapCocone (colimit.cocone M)))) ∧
Mono (colimit.desc (M ⋙ extFunctor (-m))
((extFunctor (-m)).mapCocone (colimit.cocone M)))
Tag 087Q, a lemma
Tag 087Q in the Stacks Project.
StacksDraft.PseudoCoherence.canonicalExtTensorComparison_bijective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/HomFlat.lean, line 468. References: EGA 0 (6.2.2); SGA 4 V (8.2.10), “modules over a ring”; SGA 6 I (3.7), “affine case, modules”.
Stacks 087Q. The canonical Hom--tensor map is bijective for a finitely presented source and flat tensor factor. The canonical Ext--tensor map is bijective below the pseudo-coherence cutoff for a flat tensor factor.
theorem canonicalExtTensorComparison_bijective [HasDerivedCategory (ModuleCat.{v} R)] :
∀ (M : Type v) (N : Type w) (L : Type x)
[AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N]
[AddCommGroup L] [Module R L] [Module.Flat R L],
(Module.FinitePresentation R M →
Function.Bijective
(TensorProduct.rTensorHomToHomRTensor (RingHom.id R) M N L)) ∧
(∀ (d : ℕ), IsModulePseudoCoherentFrom (R := R) M (-(d : ℤ)) →
∀ i < d, Function.Bijective
(canonicalExtTensorComparison R (ModuleCat.of R (ULift.{max u v w x} M))
(ModuleCat.of R (ULift.{max u v w x} N))
(ModuleCat.of R (ULift.{max u v w x} L)) i))
Tag 087R, a lemma
Tag 087R in the Stacks Project.
StacksDraft.PseudoCoherence.baseChange_ext_bijective_of_pseudoCoherent, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/HomFlat.lean, line 881.
Stacks 087R. The canonical Ext base-change map is bijective in degree zero for finitely presented modules, below the pseudo-coherence cutoff, and in every degree for finite modules over a Noetherian ring.
The maps
ηandtare characterized on original elements bym ↦ 1 ⊗ mandn ⊗ s ↦ s ⊗ n. The equationc.comp β = aand its uniqueness clause specify the canonical comparison in every degree. The commuting square usinguliftExtLinearEquiv₀transportsβin degree zero tohomBaseChangeComparisonon the original modules.
theorem baseChange_ext_bijective_of_pseudoCoherent
(R : Type uR) (S : Type uS) (M : Type uM) (N : Type uN)
[CommRing R] [CommRing S] [Algebra R S] [Module.Flat R S]
[AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N]
[HasDerivedCategory (ModuleCat.{uM} R)] :
let RM := ModuleCat.of R (ULift.{max uR uS uM uN} M)
let RN := ModuleCat.of R (ULift.{max uR uS uM uN} N)
let L := ModuleCat.of R (ULift.{max uR uS uM uN} S)
let SM := ModuleCat.of S (ULift.{max uR uS uM uN} (S ⊗[R] M))
let SN := ModuleCat.of S (ULift.{max uR uS uM uN} (S ⊗[R] N))
let E := (ModuleCat.restrictScalars (algebraMap R S)).obj SN
∃ (η : RM ⟶ (ModuleCat.restrictScalars (algebraMap R S)).obj SM)
(t : ModuleCat.of R (RN ⊗[R] L) ⟶ E),
(∀ m : M, η (ULift.up m) = ULift.up ((1 : S) ⊗ₜ[R] m)) ∧
(∀ (n : N) (s : S), t (ULift.up n ⊗ₜ[R] ULift.up s) =
ULift.up (s ⊗ₜ[R] n)) ∧
(∀ t' : ModuleCat.of R (RN ⊗[R] L) ⟶ E,
(∀ (n : N) (s : S), t' (ULift.up n ⊗ₜ[R] ULift.up s) =
ULift.up (s ⊗ₜ[R] n)) → t' = t) ∧
∀ i : ℕ,
let c : Ext SM SN i →+ Ext RM E i :=
((Ext.mk₀ η).precomp E (zero_add i)).comp
((ModuleCat.restrictScalars (algebraMap R S)).mapExtAddHom SM SN i)
let a : (Ext RM RN i) ⊗[R] S →+ Ext RM E i :=
(((Ext.mk₀ t).postcomp RM (add_zero i)).comp
(canonicalExtTensorComparison R RM RN L i).toAddMonoidHom).comp
(TensorProduct.map (LinearMap.id : Ext RM RN i →ₗ[R] Ext RM RN i)
(ULift.moduleEquiv.symm.toLinearMap : S →ₗ[R] L)).toAddMonoidHom
∃ β : (Ext RM RN i) ⊗[R] S →+ Ext SM SN i,
c.comp β = a ∧
(∀ γ : (Ext RM RN i) ⊗[R] S →+ Ext SM SN i,
c.comp γ = a → γ = β) ∧
(∀ (e : Ext RM RN i) (s r : S),
β (e ⊗ₜ[R] (r * s)) = r • β (e ⊗ₜ[R] s)) ∧
(∀ h : i = 0, ∀ x : (Ext RM RN 0) ⊗[R] S,
uliftExtLinearEquiv₀.{uS, max uS uM, max uS uN, uR} S (S ⊗[R] M) (S ⊗[R] N)
((h ▸ β) x) =
homBaseChangeComparison R S M N
(TensorProduct.congr (uliftExtLinearEquiv₀.{uR, uM, uN, uS} R M N)
(LinearEquiv.refl R S) x)) ∧
(i = 0 → Module.FinitePresentation R M → Function.Bijective β) ∧
(∀ d : ℕ, IsModulePseudoCoherentFrom (R := R) M (-(d : ℤ)) →
i < d → Function.Bijective β) ∧
(IsNoetherianRing R → Module.Finite R M → Function.Bijective β)
Tag 0CYB, a lemma
Tag 0CYB in the Stacks Project.
StacksDraft.PseudoCoherence.pseudoCoherent_iff_derivedTensor_preserves_products, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Products/Characterization.lean, line 725.
Stacks 0CYB. Pseudo-coherence of a bounded-above complex is equivalent to derived tensor product commuting with arbitrary products; the degreewise variants characterize
m-pseudo-coherence.
theorem pseudoCoherent_iff_derivedTensor_preserves_products
(T : DerivedTensorProduct.{u, v, w} R) (P : DerivedProducts.{u, v, w} R)
(K : DerivedCategory.Minus (ModuleCat.{max v w} (SmallRing.{u, v, w} R))) (m : ℤ) :
List.TFAE [
IsPseudoCoherent K.obj,
∀ (A : Type (max v w)) (Q : A → ModuleCat.{max v w} (SmallRing.{u, v, w} R)),
IsIso (tensorProductComparison T P K.obj A Q),
∀ (A : Type (max v w)) (Q : ModuleCat.{max v w} (SmallRing.{u, v, w} R)),
IsIso (tensorPowerComparison T P K.obj A Q),
∀ A : Type (max v w), IsIso (tensorRingPowerComparison T P K.obj A)] ∧
List.TFAE [
IsPseudoCoherentFrom K.obj m,
∀ (A : Type (max v w)) (Q : A → ModuleCat.{max v w} (SmallRing.{u, v, w} R)),
(∀ i : ℤ, m < i → IsIso ((DerivedCategory.homologyFunctor _ i).map
(tensorProductComparison T P K.obj A Q))) ∧
Epi ((DerivedCategory.homologyFunctor _ m).map
(tensorProductComparison T P K.obj A Q)),
∀ (A : Type (max v w)) (Q : ModuleCat.{max v w} (SmallRing.{u, v, w} R)),
(∀ i : ℤ, m < i → IsIso ((DerivedCategory.homologyFunctor _ i).map
(tensorPowerComparison T P K.obj A Q))) ∧
Epi ((DerivedCategory.homologyFunctor _ m).map
(tensorPowerComparison T P K.obj A Q)),
∀ A : Type (max v w),
(∀ i : ℤ, m < i → IsIso ((DerivedCategory.homologyFunctor _ i).map
(tensorRingPowerComparison T P K.obj A))) ∧
Epi ((DerivedCategory.homologyFunctor _ m).map
(tensorRingPowerComparison T P K.obj A))]
Tag 0G8Y, a lemma
Tag 0G8Y in the Stacks Project.
StacksDraft.PseudoCoherence.exists_finitelyPresented_module_mono_homology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Ext.lean, line 1319.
Stacks 0G8Y. For every degree
i, the degree-icohomology of a pseudo-coherent object ofD(R)embeds in a finitely presentedR-module, and the embedding is induced by a morphism from the object to that module placed in degreei.
theorem exists_finitelyPresented_module_mono_homology {R : Type u} [Ring R]
(K : DerivedCategory (ModuleCat.{v} R)) (hK : IsPseudoCoherent K) (i : ℤ) :
∃ (M : ModuleCat.{v} R), Module.FinitePresentation R M ∧
∃ f : K ⟶ (DerivedCategory.singleFunctor (ModuleCat.{v} R) i).obj M,
Mono ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).map f ≫
(DerivedCategory.singleFunctorCompHomologyFunctorIso
(ModuleCat.{v} R) i).hom.app M)
Tag 0A7D, a lemma
Tag 0A7D in the Stacks Project.
StacksDraft.PseudoCoherence.exists_finite_module_detecting_homology_mod_ideal, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/PseudoCoherent/Noetherian.lean, line 74.
Stacks 0A7D. If degree-
icohomology of a pseudo-coherent complex over a Noetherian ring is nonzero modulo an ideal, it is detected by a map to a finite module annihilated by a power of that ideal, placed in degreei.
public theorem exists_finite_module_detecting_homology_mod_ideal
{A : Type u} [CommRing A] [IsNoetherianRing A]
(K : DerivedCategory (ModuleCat.{v} A)) (hK : IsPseudoCoherent K)
(m : Ideal A) (i : ℤ)
(hi : Nontrivial
(((DerivedCategory.homologyFunctor (ModuleCat.{v} A) i).obj K) ⧸
(m • (⊤ : Submodule A
((DerivedCategory.homologyFunctor (ModuleCat.{v} A) i).obj K))))) :
∃ (E : ModuleCat.{v} A), Module.Finite A E ∧
(∃ n : ℕ, m ^ n • (⊤ : Submodule A E) = ⊥) ∧
∃ f : K ⟶ (DerivedCategory.singleFunctor (ModuleCat.{v} A) i).obj E,
(DerivedCategory.homologyFunctor (ModuleCat.{v} A) i).map f ≫
(DerivedCategory.singleFunctorCompHomologyFunctorIso
(ModuleCat.{v} A) i).hom.app E ≠ 0
Sources
Section15.68 Tor dimension#
Section 15.68 of the Stacks Project, Tag 0651. 20 tags here are carried by 25 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0652, a definition
Tag 0652 in the Stacks Project.
StacksDraft.TorAmplitude.HasTorAmplitude, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Defs.lean, line 80. The attribute's comment: “(1)”. References: SGA 4½ Rapport (4.5), “tor-dimension ≤ r”; SGA 6 I (5.2), “Tor-amp(F) ⊂ [m,n]”.
An object
KofD(R)has Tor amplitude in[a, b]if, for everyR-moduleM, the cohomology ofK ⊗ᴸ[R] M[0]vanishes in every degree outside[a, b].The
comparisonand_isLeftDerivedarguments certify thatderivedTensoris the total left derived functor of ordinary tensor product in the first variable.
public def HasTorAmplitude {R : Type u} [CommRing R]
[HasDerivedCategory (ModuleCat.{v} R)]
(derivedTensor :
DerivedCategory (ModuleCat.{v} R) ⥤
DerivedCategory (ModuleCat.{v} R) ⥤ DerivedCategory (ModuleCat.{v} R))
(comparison : ∀ M : ModuleCat.{v} R,
DerivedCategory.Q ⋙
derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj M) ⟶
(tensorModuleRight M).mapHomologicalComplex
(ComplexShape.up ℤ) ⋙ DerivedCategory.Q)
(_isLeftDerived : ∀ M : ModuleCat.{v} R,
(derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj M)).IsLeftDerivedFunctor
(comparison M)
(HomologicalComplex.quasiIso (ModuleCat.{v} R) (ComplexShape.up ℤ)))
(K : DerivedCategory (ModuleCat.{v} R)) (a b : ℤ) : Prop
StacksDraft.TorAmplitude.HasFiniteTorDimension, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Defs.lean, line 107. The attribute's comment: “(2)”. References: SGA 4½ Rapport (4.5), “finite tor dimension”; SGA 5 I (1.10), “affine case (torf)”; SGA 6 I (5.2), “finite flat amplitude”.
An object of
D(R)has finite Tor dimension if it has Tor amplitude in some finite integer interval.
public def HasFiniteTorDimension {R : Type u} [CommRing R]
[HasDerivedCategory (ModuleCat.{v} R)]
(derivedTensor :
DerivedCategory (ModuleCat.{v} R) ⥤
DerivedCategory (ModuleCat.{v} R) ⥤ DerivedCategory (ModuleCat.{v} R))
(comparison : ∀ M : ModuleCat.{v} R,
DerivedCategory.Q ⋙
derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj M) ⟶
(tensorModuleRight M).mapHomologicalComplex
(ComplexShape.up ℤ) ⋙ DerivedCategory.Q)
(isLeftDerived : ∀ M : ModuleCat.{v} R,
(derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj M)).IsLeftDerivedFunctor
(comparison M)
(HomologicalComplex.quasiIso (ModuleCat.{v} R) (ComplexShape.up ℤ)))
(K : DerivedCategory (ModuleCat.{v} R)) : Prop
StacksDraft.TorAmplitude.HasTorDimensionLE, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Defs.lean, line 129. The attribute's comment: “(3)”. References: SGA 4 XVII (4.1.9), “module over a ring”; SGA 4½ Rapport (4.5), “module case”.
An
R-moduleMhas Tor dimension at mostdifM[0]has Tor amplitude in[-d, 0].
public def HasTorDimensionLE {R : Type u} [CommRing R]
[HasDerivedCategory (ModuleCat.{v} R)]
(derivedTensor :
DerivedCategory (ModuleCat.{v} R) ⥤
DerivedCategory (ModuleCat.{v} R) ⥤ DerivedCategory (ModuleCat.{v} R))
(comparison : ∀ N : ModuleCat.{v} R,
DerivedCategory.Q ⋙
derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj N) ⟶
(tensorModuleRight N).mapHomologicalComplex
(ComplexShape.up ℤ) ⋙ DerivedCategory.Q)
(isLeftDerived : ∀ N : ModuleCat.{v} R,
(derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj N)).IsLeftDerivedFunctor
(comparison N)
(HomologicalComplex.quasiIso (ModuleCat.{v} R) (ComplexShape.up ℤ)))
(M : ModuleCat.{v} R) (d : ℤ) : Prop
StacksDraft.TorAmplitude.ModuleHasFiniteTorDimension, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Defs.lean, line 152. The attribute's comment: “(4)”.
An
R-moduleMhas finite Tor dimension ifM[0]has finite Tor dimension as an object ofD(R).
public def ModuleHasFiniteTorDimension {R : Type u} [CommRing R]
[HasDerivedCategory (ModuleCat.{v} R)]
(derivedTensor :
DerivedCategory (ModuleCat.{v} R) ⥤
DerivedCategory (ModuleCat.{v} R) ⥤ DerivedCategory (ModuleCat.{v} R))
(comparison : ∀ N : ModuleCat.{v} R,
DerivedCategory.Q ⋙
derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj N) ⟶
(tensorModuleRight N).mapHomologicalComplex
(ComplexShape.up ℤ) ⋙ DerivedCategory.Q)
(isLeftDerived : ∀ N : ModuleCat.{v} R,
(derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj N)).IsLeftDerivedFunctor
(comparison N)
(HomologicalComplex.quasiIso (ModuleCat.{v} R) (ComplexShape.up ℤ)))
(M : ModuleCat.{v} R) : Prop
Tag 0653, a lemma
Tag 0653 in the Stacks Project.
StacksDraft.TorAmplitude.cokernel_flat_of_torAmplitude, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/DerivedComparison.lean, line 497.
Stacks Tag 0653. Let
Rbe a ring,a b : ℤ, andKa bounded above cochain complex of flatR-modules which, as an object ofD(R), has Tor amplitude in[a, b]for some certified derived tensor product. ThenCoker(d_K^{a-1}) = K^a / Im(d_K^{a-1})is a flatR-module.The ring universe
uand the module universe are independent:R : Type uand the complex lives inModuleCat.{max u v} R. Flatness of the terms is spelled out rather than written asStacksDraft.TorAmplitude.Termwise.IsComplexOfFlats, which is available only when the two universes agree.The derived tensor product is an arbitrary certified one, so the statement does not depend on a construction of it. Boundedness enters through the comparison: the counit of the total left derived functor of termwise tensoring is invertible at a bounded above complex of flat modules (
isIso_termwiseDerivedCounit_app_of_flat), which makes the given comparison map a split epimorphism there, and cohomology carries that split epimorphism from a vanishing source to a vanishing target.
public theorem cokernel_flat_of_torAmplitude
(K : CochainComplex (ModuleCat.{max u v} R) ℤ) (a b : ℤ)
(hbounded : BoundedAbove K) (hflat : ∀ n : ℤ, Module.Flat R (K.X n))
(hamp : HasTorAmplitude derivedTensor comparison isLeftDerived
(DerivedCategory.Q.obj K) a b) :
Module.Flat R (cokernel (K.d (a - 1) a) : ModuleCat.{max u v} R)
Tag 0654, a lemma
Tag 0654 in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeCanonical_iff_hasFlatRepresentative, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/CanonicalCertificate.lean, line 315. References: SGA 6 I (5.1), “affine case”; SGA 4 XVII (4.1.9), “over a ring, (i)<=>(iii)”.
An object
KofD(R)has Tor amplitude in[a, b]— at the canonical derived tensor product of Stacks 0BYI — if and only if it is represented by a complex of flatR-modules concentrated in degrees[a, b].
public theorem hasTorAmplitudeCanonical_iff_hasFlatRepresentative (R : Type u) [CommRing R]
(K : DerivedCategory (ModuleCat.{u} R)) (a b : ℤ) :
HasTorAmplitudeCanonical R K a b ↔ HasFlatRepresentative K a b
Tag 0BYL, a lemma
Tag 0BYL in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeAbove_iff_exists_kFlat_flat_representative_canonical, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/KFlatRepresentative.lean, line 265. References: SGA 4 XVII (4.1.9), “ring case, one-sided”.
Stacks 0BYL. An object
KofD(R)has Tor amplitude in[a, ∞]— that is, the derived tensor product ofKwith any moduleMplaced in cohomological degree zero has vanishing cohomology in all degrees belowa— if and only ifKis represented by a K-flat complex of flat modules concentrated in degrees at leasta.The derived tensor product here is the canonical one,
CochainComplex.DerivedTensor.canonicalDerivedTensorProduct Rof Stacks 0BYI, so the statement is an assertion about a specific bifunctor rather than a claim quantified over certificates. It is obtained by instantiatingStacksDraft.TorAmplitude.hasTorAmplitudeAbove_iff_exists_kFlat_flat_representative, which proves the equivalence for an arbitrary certified derived tensor bifunctor, at that canonical choice.
public theorem hasTorAmplitudeAbove_iff_exists_kFlat_flat_representative_canonical
(K : DerivedCategory (ModuleCat.{u} R)) (a : ℤ) :
(∀ (M : ModuleCat.{u} R) (i : ℤ), i < a →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{u} R) i).obj
(((CochainComplex.DerivedTensor.canonicalDerivedTensorProduct R).tensor.obj K).obj
((DerivedCategory.singleFunctor (ModuleCat.{u} R) 0).obj M)))) ↔
∃ E : CochainComplex (ModuleCat.{u} R) ℤ,
E.KFlat ∧
(∀ n : ℤ, Module.Flat R (E.X n)) ∧
E.IsStrictlyGE a ∧
Nonempty (K ≅ DerivedCategory.Q.obj E)
Tag 0655, a lemma
Tag 0655 in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitude_obj₃_of_obj₁_obj₂, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Triangle.lean, line 345. The attribute's comment: “(1)”.
Stacks 0655 (1). Let
K → L → M → K[1]be a distinguished triangle inD(R). IfKhas Tor amplitude in[a + 1, b + 1]andLhas Tor amplitude in[a, b], thenMhas Tor amplitude in[a, b].Tor amplitude is
StacksDraft.TorAmplitude.HasTorAmplitudeof Stacks 0652, so the bifunctorderivedTensoris certified bycomparisonandisLeftDerivedto be the derived tensor product. This is part (1) of the source statement; the mathematics is the long exact cohomology sequence of the triangle(K, L, M)tensored withM'[0], as in the uncertified-datum helperStacks.TorAmplitudeTriangle.hasTorAmplitudeIn_obj₃_of_obj₁_obj₂, which this endpoint does not use because that helper pins the module carriers to the ring universe.
theorem hasTorAmplitude_obj₃_of_obj₁_obj₂
(T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distTriang (DerivedCategory (ModuleCat.{v} R))) (a b : ℤ)
(hK : HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₁ (a + 1) (b + 1))
(hL : HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₂ a b) :
HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₃ a b
StacksDraft.TorAmplitude.hasTorAmplitude_obj₂_of_obj₁_obj₃, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Triangle.lean, line 374. The attribute's comment: “(2)”.
Stacks 0655 (2). Let
K → L → M → K[1]be a distinguished triangle inD(R). IfKandMboth have Tor amplitude in[a, b], thenLhas Tor amplitude in[a, b].Tor amplitude is
StacksDraft.TorAmplitude.HasTorAmplitudeof Stacks 0652, so the bifunctorderivedTensoris certified bycomparisonandisLeftDerivedto be the derived tensor product. This is part (2) of the source statement; the mathematics is the long exact cohomology sequence of the triangle(K, L, M)tensored withM'[0], as in the uncertified-datum helperStacks.TorAmplitudeTriangle.hasTorAmplitudeIn_obj₂_of_obj₁_obj₃, which this endpoint does not use because that helper pins the module carriers to the ring universe.
theorem hasTorAmplitude_obj₂_of_obj₁_obj₃
(T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distTriang (DerivedCategory (ModuleCat.{v} R))) (a b : ℤ)
(hK : HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₁ a b)
(hM : HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₃ a b) :
HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₂ a b
StacksDraft.TorAmplitude.hasTorAmplitude_obj₁_of_obj₂_obj₃, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Triangle.lean, line 403. The attribute's comment: “(3)”.
Stacks 0655 (3). Let
K → L → M → K[1]be a distinguished triangle inD(R). IfLhas Tor amplitude in[a + 1, b + 1]andMhas Tor amplitude in[a, b], thenKhas Tor amplitude in[a + 1, b + 1].Tor amplitude is
StacksDraft.TorAmplitude.HasTorAmplitudeof Stacks 0652, so the bifunctorderivedTensoris certified bycomparisonandisLeftDerivedto be the derived tensor product. This is part (3) of the source statement; the mathematics is the long exact cohomology sequence of the triangle(K, L, M)tensored withM'[0], as in the uncertified-datum helperStacks.TorAmplitudeTriangle.hasTorAmplitudeIn_obj₁_of_obj₂_obj₃, which this endpoint does not use because that helper pins the module carriers to the ring universe.
theorem hasTorAmplitude_obj₁_of_obj₂_obj₃
(T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distTriang (DerivedCategory (ModuleCat.{v} R))) (a b : ℤ)
(hL : HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₂ (a + 1) (b + 1))
(hM : HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₃ a b) :
HasTorAmplitude derivedTensor comparison isLeftDerived T.obj₁ (a + 1) (b + 1)
Tag 066F, a lemma
Tag 066F in the Stacks Project.
StacksDraft.TorAmplitude.hasTorDimensionLECanonical_iff_hasFlatRepresentative, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/CanonicalCertificate.lean, line 329. References: SGA 4 XVII (4.1.9), “module over a ring”; SGA 6 I (5.4), “commutative ring”; SGA 6 I (5.1), “module over a ring”.
An
R-moduleMhas Tor dimension at mostd— at the canonical derived tensor product — if and only if it admits a flat resolution of lengthd, that is, a complex of flat modules concentrated in degrees[-d, 0]representingM[0]. In particularMhas Tor dimension at most0if and only ifMis flat.
public theorem hasTorDimensionLECanonical_iff_hasFlatRepresentative (R : Type u) [CommRing R]
(M : ModuleCat.{u} R) (d : ℕ) :
(HasTorDimensionLECanonical R M d ↔
HasFlatRepresentative
((DerivedCategory.singleFunctor (ModuleCat.{u} R) 0).obj M) (-(d : ℤ)) 0) ∧
(HasTorAmplitudeCanonical R
((DerivedCategory.singleFunctor (ModuleCat.{u} R) 0).obj M) 0 0 ↔
Module.Flat R M)
Tag 066G, a lemma
Tag 066G in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitude_of_biprod, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Summand.lean, line 51.
If
K ⊕ Lhas Tor amplitude in[a, b], then bothKandLhave Tor amplitude in[a, b].
public theorem hasTorAmplitude_of_biprod {R : Type u} [CommRing R]
(derivedTensor :
DerivedCategory (ModuleCat.{v} R) ⥤
DerivedCategory (ModuleCat.{v} R) ⥤ DerivedCategory (ModuleCat.{v} R))
(comparison : ∀ M : ModuleCat.{v} R,
DerivedCategory.Q ⋙
derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj M) ⟶
(tensorModuleRight M).mapHomologicalComplex
(ComplexShape.up ℤ) ⋙ DerivedCategory.Q)
(isLeftDerived : ∀ M : ModuleCat.{v} R,
(derivedTensor.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj M)).IsLeftDerivedFunctor
(comparison M)
(HomologicalComplex.quasiIso (ModuleCat.{v} R) (ComplexShape.up ℤ)))
(K L : DerivedCategory (ModuleCat.{v} R)) (a b : ℤ)
(h : HasTorAmplitude derivedTensor comparison isLeftDerived (K ⊞ L) a b) :
HasTorAmplitude derivedTensor comparison isLeftDerived K a b ∧
HasTorAmplitude derivedTensor comparison isLeftDerived L a b
Tag 066H, a lemma
Tag 066H in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitude_and_finiteTorDimension_of_bounded_complex, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Criteria.lean, line 166.
Stacks 066H. A bounded complex whose term in degree
ihas Tor amplitude in[a - i, b - i]has Tor amplitude in[a, b]. In particular, if every term of a bounded complex has finite Tor dimension, then the complex has finite Tor dimension.
theorem hasTorAmplitude_and_finiteTorDimension_of_bounded_complex
{R : Type} [CommRing R] (D : Stacks.TorAmplitudeTriangle.DerivedTensoring R)
(K : CochainComplex (ModuleCat.{0} R) ℤ)
(_hK : ∃ m n : ℤ, K.IsStrictlyGE m ∧ K.IsStrictlyLE n) :
(∀ a b : ℤ, (∀ i : ℤ, Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D
((DerivedCategory.singleFunctor (ModuleCat.{0} R) 0).obj (K.X i))
(a - i) (b - i)) →
Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D (DerivedCategory.Q.obj K) a b) ∧
((∀ i : ℤ, ∃ aᵢ bᵢ : ℤ, Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D
((DerivedCategory.singleFunctor (ModuleCat.{0} R) 0).obj (K.X i)) aᵢ bᵢ) →
∃ a' b' : ℤ, Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D
(DerivedCategory.Q.obj K) a' b')
Tag 066I, a lemma
Tag 066I in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeIn_of_cohomology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Criteria.lean, line 341.
Stacks 066I. A bounded derived object has Tor amplitude in
[a, b]if its degree-icohomology module has Tor amplitude in[a - i, b - i]for everyi. In particular, if all of its cohomology modules have finite Tor dimension, then so does the derived object.
theorem hasTorAmplitudeIn_of_cohomology (R : Type) [CommRing R]
(D : Stacks.TorAmplitudeTriangle.DerivedTensoring R)
(K : DerivedCategory.Bounded (ModuleCat R)) :
(∀ a b : ℤ,
(∀ i : ℤ,
Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D
((DerivedCategory.singleFunctor (ModuleCat R) 0).obj
((DerivedCategory.homologyFunctor (ModuleCat R) i).obj K.obj))
(a - i) (b - i)) →
Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D K.obj a b) ∧
((∀ i : ℤ, ∃ a b : ℤ,
Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D
((DerivedCategory.singleFunctor (ModuleCat R) 0).obj
((DerivedCategory.homologyFunctor (ModuleCat R) i).obj K.obj)) a b) →
∃ a b : ℤ, Stacks.TorAmplitudeTriangle.HasTorAmplitudeIn D K.obj a b)
Tag 0B66, a lemma
Tag 0B66 in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeCanonical_derivedTensorProduct, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/CompositionCanonical.lean, line 70.
Let
A → Bbe a map of commutative rings and letKandLbe complexes ofB-modules. IfKhas Tor amplitude in[a, b]as a complex ofB-modules andL, after restriction of scalars, has Tor amplitude in[c, d]as a complex ofA-modules, thenK ⊗_B^L L, after restriction of scalars, has Tor amplitude in[a + c, b + d]as a complex ofA-modules.All three Tor amplitudes are those of Stacks 0652 at the canonical derived tensor product of Stacks 0BYI, and
K ⊗_B^L Lis that canonical derived tensor product overB.
public theorem hasTorAmplitudeCanonical_derivedTensorProduct
(A B : Type u) [CommRing A] [CommRing B] [Algebra A B]
(K L : CochainComplex (ModuleCat.{u} B) ℤ) (a b c d : ℤ)
(hK : HasTorAmplitudeCanonical B (DerivedCategory.Q.obj K) a b)
(hL : HasTorAmplitudeCanonical A
((ModuleCat.restrictScalars (algebraMap A B)).mapDerivedCategory.obj
(DerivedCategory.Q.obj L)) c d) :
HasTorAmplitudeCanonical A
((ModuleCat.restrictScalars (algebraMap A B)).mapDerivedCategory.obj
(((canonicalDerivedTensorProduct B).tensor.obj (DerivedCategory.Q.obj K)).obj
(DerivedCategory.Q.obj L))) (a + c) (b + d)
Tag 066J, a lemma
Tag 066J in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeIn_restrictScalars, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/ChangeOfRings.lean, line 80.
Stacks 066J. A complex of
B-modules with Tor amplitude in[a, b]retains that Tor-amplitude bound after restriction of scalars along a flat ring mapA → B.
theorem hasTorAmplitudeIn_restrictScalars
(A : Type u) (B : Type v) [CommRing A] [CommRing B]
[Algebra A B] [Module.Flat A B]
(K : CochainComplex (ModuleCat.{w} B) ℤ) (a b : ℤ)
(hK : ∃ E : CochainComplex (ModuleCat.{w} B) ℤ,
StacksDraft.TorAmplitude.Termwise.IsComplexOfFlats E ∧ E.IsStrictlyGE a ∧ E.IsStrictlyLE b ∧
Nonempty (DerivedCategory.Q.obj K ≅ DerivedCategory.Q.obj E)) :
∃ E : CochainComplex (ModuleCat.{w} A) ℤ,
StacksDraft.TorAmplitude.Termwise.IsComplexOfFlats E ∧ E.IsStrictlyGE a ∧ E.IsStrictlyLE b ∧
Nonempty ((DerivedCategory.Q.obj
(((ModuleCat.restrictScalars.{w} (algebraMap A B)).mapHomologicalComplex
(ComplexShape.up ℤ)).obj K) :
DerivedCategory (ModuleCat.{w} A)) ≅
DerivedCategory.Q.obj E)
Tag 066K, a lemma
Tag 066K in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeCanonicalLift_restrictScalars_of_torDimensionLE, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/CompositionCanonical.lean, line 149.
Let
f : A → Bbe a map of commutative rings and letKbe a complex ofB-modules; the two rings and the carriers ofKlive in three independent universes. IfBhas Tor dimension at mostdas anA-module, that is, ifBplaced in degree zero has Tor amplitude in[-d, 0]overA, thenK, after restriction of scalars alongf, has Tor amplitude in[a - d, b]overA.Tor amplitude is
HasTorAmplitudeCanonicalLift, that is, Stacks 0652 at the canonical derived tensor product of Stacks 0BYI on the ring lifted into the ambient universe.
public theorem hasTorAmplitudeCanonicalLift_restrictScalars_of_torDimensionLE
{A : Type u} {B : Type v} [CommRing A] [CommRing B] (f : A →+* B)
(K : CochainComplex (ModuleCat.{w} B) ℤ) (a b d : ℤ)
(hB : HasTorAmplitudeCanonicalLift.{u, v, w}
((DerivedCategory.singleFunctor (ModuleCat.{v} A) 0).obj
((ModuleCat.restrictScalars f).obj (ModuleCat.of B B))) (-d) 0)
(hK : HasTorAmplitudeCanonicalLift.{v, w, u} (DerivedCategory.Q.obj K) a b) :
HasTorAmplitudeCanonicalLift.{u, w, v}
(DerivedCategory.Q.obj
(((ModuleCat.restrictScalars.{w} f).mapHomologicalComplex (ComplexShape.up ℤ)).obj K))
(a - d) b
Tag 066L, a lemma
Tag 066L in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitude_derivedExtendScalars, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/BaseChange.lean, line 370.
Stacks 066L. Let
A → Bbe a map of commutative rings and letKbe an object ofD(A)with Tor amplitude in[a, b]. ThenK ⊗_A^L Bhas Tor amplitude in[a, b]as an object ofD(B).The derived tensor products over
Aand overBare certified as in Stacks 0652, and derived extension of scalars is certified in the same style:extendDerivedis equipped with a comparison mapextendComparisonto termwise extension of scalars making it the total left derived functor of the latter.
public theorem hasTorAmplitude_derivedExtendScalars {A B : Type u} [CommRing A] [CommRing B]
[Algebra A B]
(extendDerived : DerivedCategory (ModuleCat.{u} A) ⥤ DerivedCategory (ModuleCat.{u} B))
(extendComparison : DerivedCategory.Q ⋙ extendDerived ⟶
(ModuleCat.extendScalars (algebraMap A B)).mapHomologicalComplex (ComplexShape.up ℤ) ⋙
DerivedCategory.Q)
(extendIsLeftDerived : extendDerived.IsLeftDerivedFunctor extendComparison
(HomologicalComplex.quasiIso (ModuleCat.{u} A) (ComplexShape.up ℤ)))
(derivedTensorA : DerivedCategory (ModuleCat.{u} A) ⥤
DerivedCategory (ModuleCat.{u} A) ⥤ DerivedCategory (ModuleCat.{u} A))
(comparisonA : ∀ M : ModuleCat.{u} A,
DerivedCategory.Q ⋙ derivedTensorA.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{u} A) 0).obj M) ⟶
(tensorModuleRight M).mapHomologicalComplex (ComplexShape.up ℤ) ⋙ DerivedCategory.Q)
(isLeftDerivedA : ∀ M : ModuleCat.{u} A,
(derivedTensorA.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{u} A) 0).obj M)).IsLeftDerivedFunctor
(comparisonA M)
(HomologicalComplex.quasiIso (ModuleCat.{u} A) (ComplexShape.up ℤ)))
(derivedTensorB : DerivedCategory (ModuleCat.{u} B) ⥤
DerivedCategory (ModuleCat.{u} B) ⥤ DerivedCategory (ModuleCat.{u} B))
(comparisonB : ∀ M : ModuleCat.{u} B,
DerivedCategory.Q ⋙ derivedTensorB.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{u} B) 0).obj M) ⟶
(tensorModuleRight M).mapHomologicalComplex (ComplexShape.up ℤ) ⋙ DerivedCategory.Q)
(isLeftDerivedB : ∀ M : ModuleCat.{u} B,
(derivedTensorB.flip.obj
((DerivedCategory.singleFunctor (ModuleCat.{u} B) 0).obj M)).IsLeftDerivedFunctor
(comparisonB M)
(HomologicalComplex.quasiIso (ModuleCat.{u} B) (ComplexShape.up ℤ)))
(K : DerivedCategory (ModuleCat.{u} A)) (a b : ℤ)
(hK : HasTorAmplitude derivedTensorA comparisonA isLeftDerivedA K a b) :
HasTorAmplitude derivedTensorB comparisonB isLeftDerivedB (extendDerived.obj K) a b
Tag 066M, a lemma
Tag 066M in the Stacks Project.
StacksDraft.TorAmplitude.hasTorDimensionLECanonical_extendScalars_of_flat, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/CanonicalCertificate.lean, line 345.
Let
f : A →+* Bbe a flat homomorphism of commutative rings. If theA-moduleMhas Tor dimension at mostd, then theB-moduleB ⊗_A Mhas Tor dimension at mostd. Both Tor dimensions are read at the canonical derived tensor product of the ring in question.
public theorem hasTorDimensionLECanonical_extendScalars_of_flat {A B : Type u} [CommRing A]
[CommRing B] (f : A →+* B) (hf : f.Flat) (M : ModuleCat.{u} A) (d : ℕ)
(hM : HasTorDimensionLECanonical A M d) :
HasTorDimensionLECanonical B ((ModuleCat.extendScalars.{u, u, u} f).obj M) d
Tag 0B67, a lemma
Tag 0B67 in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitude_iff_localized_at_primes_iff_maximals, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Local.lean, line 636.
A complex of
B-modules has Tor amplitude in[a, b]overAif and only if its localisation at every prime idealqofBhas Tor amplitude in[a, b]overA_{q ∩ A}; equivalently, it is enough to test this at every maximal ideal ofB.
theorem hasTorAmplitude_iff_localized_at_primes_iff_maximals
(A B : Type u) [CommRing A] [CommRing B] [Algebra A B]
(K : CochainComplex (ModuleCat.{u} B) ℤ) (a b : ℤ) :
(StacksDraft.TorAmplitude.FaithfullyFlat.HasTorAmplitude
((CochainComplex.restrictScalars (algebraMap A B)).obj K) a b ↔
∀ (q : Ideal B) [q.IsPrime], HasTorAmplitudeAt A K q a b) ∧
((∀ (q : Ideal B) [q.IsPrime], HasTorAmplitudeAt A K q a b) ↔
∀ (m : Ideal B) (hm : m.IsMaximal),
letI : m.IsPrime := hm.isPrime
HasTorAmplitudeAt A K m a b)
Tag 066N, a lemma
Tag 066N in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitude_of_localizationSpan, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/Local.lean, line 147.
If a complex has Tor amplitude in
[a, b]after localization at every member of a set generating the unit ideal, then it has Tor amplitude in[a, b].
theorem hasTorAmplitude_of_localizationSpan
{R : Type u} [CommRing R] (s : Set R) (hs : Ideal.span s = ⊤)
(K : CochainComplex (ModuleCat.{u} R) ℤ) (a b : ℤ)
(hK : ∀ f : s, StacksDraft.TorAmplitude.FaithfullyFlat.HasTorAmplitude
((CochainComplex.extendScalars
(algebraMap R (Localization.Away (f : R)))).obj K) a b) :
StacksDraft.TorAmplitude.FaithfullyFlat.HasTorAmplitude K a b
Tag 068S, a lemma
Tag 068S in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeCanonical_of_faithfullyFlat, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/CanonicalCertificate.lean, line 358.
Tor amplitude descends along a faithfully flat ring map
f : R →+* S: if the base change ofKalongfhas Tor amplitude in[a, b], then so doesK. Both sides are read at the canonical derived tensor products of the two rings lifted byULiftinto the universe of the modules, and the base change is extension of scalars along the lifted ring map.
public theorem hasTorAmplitudeCanonical_of_faithfullyFlat
{R : Type u} {S : Type v} [CommRing R] [CommRing S]
(f : R →+* S) (hf : f.FaithfullyFlat)
(K : CochainComplex (ModuleCat.{max u v w} (ULift.{max v w} R)) ℤ) (a b : ℤ)
(h : HasTorAmplitudeCanonical (ULift.{max u w} S)
(DerivedCategory.Q.obj
((CochainComplex.extendScalars (f.ulift.{max v w, max u w})).obj K)) a b) :
HasTorAmplitudeCanonical (ULift.{max v w} R) (DerivedCategory.Q.obj K) a b
Tag 0DJF, a lemma
Tag 0DJF in the Stacks Project.
StacksDraft.TorAmplitude.FaithfullyFlat.hasTorAmplitudeIn_iff_extendScalars, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/FaithfullyFlat.lean, line 1134.
Let
R → A → Bbe ring maps withA → Bfaithfully flat, and letK ∈ D(A). Then, viewing bothKandK ⊗_A^L Bas objects ofD(R)via restriction of scalars,Khas tor-amplitude in[a, b]overRif and only ifK ⊗_A^L Bhas tor-amplitude in[a, b]overR.
theorem hasTorAmplitudeIn_iff_extendScalars
(R A B : Type u) [CommRing R] [CommRing A] [CommRing B]
[Algebra R A] [Algebra A B] [Algebra R B] [IsScalarTower R A B]
[Module.FaithfullyFlat A B]
(K : CochainComplex (ModuleCat.{u} A) ℤ) (a b : ℤ) :
HasTorAmplitude ((CochainComplex.restrictScalars (algebraMap R A)).obj K) a b ↔
HasTorAmplitude ((CochainComplex.restrictScalars (algebraMap R B)).obj
((CochainComplex.extendScalars (algebraMap A B)).obj K)) a b
Tag 066P, a lemma
Tag 066P in the Stacks Project.
StacksDraft.TorAmplitude.torAmplitude_and_finiteTorDimension_of_globalDimension_le, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/GlobalDimension.lean, line 331. References: SGA 6 I (5.9), “special case”; SGA 6 III (3.2), “special case”.
Stacks 066P. Let
Rbe a ring of global dimension at mostd. Then
- every
R-module placed in degree0has Tor amplitude in[-d, 0], i.e. Tor dimension at mostd;- a complex whose cohomology is concentrated in
[a, b]has Tor amplitude in[a - d, b];- a complex has finite Tor dimension if and only if it lies in the bounded derived category.
public theorem torAmplitude_and_finiteTorDimension_of_globalDimension_le
(R : Type u) [CommRing R] (d : ℕ) (hR : ringGlobalDimension R ≤ d) :
(∀ M : ModuleCat.{u} R,
StacksDraft.TorAmplitude.FaithfullyFlat.HasTorAmplitude
((CochainComplex.singleFunctor (ModuleCat.{u} R) 0).obj M) (-(d : ℤ)) 0) ∧
(∀ (K : CochainComplex (ModuleCat.{u} R) ℤ) (a b : ℤ),
(∀ i : ℤ, (i < a ∨ b < i) → IsZero (K.homology i)) →
StacksDraft.TorAmplitude.FaithfullyFlat.HasTorAmplitude K (a - d) b) ∧
(∀ K : CochainComplex (ModuleCat.{u} R) ℤ,
(∃ a b : ℤ, StacksDraft.TorAmplitude.FaithfullyFlat.HasTorAmplitude K a b) ↔
(DerivedCategory.TStructure.t (C := ModuleCat.{u} R)).bounded
(DerivedCategory.Q.obj K))
Tag 0H75, a lemma
Tag 0H75 in the Stacks Project.
StacksDraft.TorAmplitude.hasTorAmplitudeIn_derivedExtensionScalars_certified_iff, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TorAmplitude/NilpotentCertified.lean, line 418.
Stacks 0H75. Let
f : R' → Rbe a surjective map of commutative rings whose kernel is a nilpotent ideal, and letLbe the derived base change alongf. For every objectKofD(R')and every finite interval[a, b], the objectL.obj Khas Tor amplitude in[a, b]if and only ifKdoes.
Lis quantified over together with its comparison to termwise extension of scalars and theFunctor.IsLeftDerivedFunctorcertificate, which pins it down as the derived base change rather than an arbitrary functor. Each of the two derived tensor products is quantified as aStacksDraft.TorAmplitude.CertifiedDerivedTensoring: the bifunctor, its comparison with termwise tensoring by a module placed in degree zero, and the universal property making each- ⊗ᴸ M[0]the total left derived functor of- ⊗ M. That is exactly the datum Stacks 0652 reads Tor amplitude off, and no more; in particular neither the comparison at pairs of K-flat complexes nor exactness in the second variable is assumed.The universe of
R', the universe ofRand the universe of the module carriers are independent:R' : Type u,R : Type v, and both rings' modules are read inModuleCat.{max u v w}, as in the source statement. Neither ring isULifted in the statement.The proof moves both sides into the lifted rings, where the ring universe and the module universe coincide, by
hasTorAmplitude_iff_scalarLiftfor the Tor amplitudes andderivedExtensionLiftSquarefor the base change, and there applieshasTorAmplitudeIn_derivedExtensionScalars_iff_sameUniverseto the canonical derived tensor product of Stacks 0BYI.
public theorem hasTorAmplitudeIn_derivedExtensionScalars_certified_iff
(hf : Function.Surjective f) (hnil : IsNilpotent (RingHom.ker f))
(L : DerivedCategory (ModuleCat.{max u v w} R') ⥤ DerivedCategory (ModuleCat.{max u v w} R))
(comparison : DerivedCategory.Q (C := ModuleCat.{max u v w} R') ⋙ L ⟶
(ModuleCat.extendScalars.{u, v, max u v w} f).mapHomologicalComplex
(ComplexShape.up ℤ) ⋙ DerivedCategory.Q (C := ModuleCat.{max u v w} R))
[L.IsLeftDerivedFunctor comparison
(HomologicalComplex.quasiIso (ModuleCat.{max u v w} R') (ComplexShape.up ℤ))]
(D' : CertifiedDerivedTensoring.{u, max u v w} R')
(D : CertifiedDerivedTensoring.{v, max u v w} R)
(K : DerivedCategory (ModuleCat.{max u v w} R')) (a b : ℤ) :
D.HasTorAmplitudeIn (L.obj K) a b ↔ D'.HasTorAmplitudeIn K a b
Sources
Section15.69 Spectral sequences for Ext#
Section 15.69 of the Stacks Project, Tag 0AVG. 2 tags here are carried by 2 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0AVH, an equation
Tag 0AVH in the Stacks Project.
StacksDraft.ExtSpectralSequence.exists_ext_homology_spectralSequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Ext/SpectralSequence.lean, line 794.
Stacks 0AVH. For
Min an abelian category with enough injectives andKin its bounded below derived category, there is a filtered complexTof abelian groups, together with the filtration, cycle, boundary and induced-filtration dataFil,Z,D,FHof [Stacks, Tag 012M], a spectral sequenceEwhose page at(r, p, q)is identified with the canonical subquotientZ_r^{p,q}/(D_r^{p,q} ⊓ Z_r^{p,q})and whose differential is induced by the differential ofT, and isomorphismsHⁿ(T) ≅ Extⁿ(M, K)andE₂ⁱʲ ≅ Extⁱ(M, Hʲ(K)), the latter factoring through the canonical page-2subquotient. The spectral sequence is bounded, the filtration it induces on eachHⁿ(T)is finite, it converges toH^*(T)(the differentials vanish forr ≫ 0and the inclusions (012S) and (012T) for the stable cycles and boundaries are equalities, which by [Stacks, Tag 012V] says exactly thatE_∞^{p,q}is the graded piecegr^pHⁿ(T)), and on each total-degree diagonal every page vanishes outside a finite range of columns, so the spectral sequence degenerates there.
TisTot(Hom(M, I))forIa Cartan-Eilenberg resolution ([Stacks, Tag 015I]) of a bounded below complex of injective objects representingK, filtered by the second coordinate; the pages are identified by [Stacks, Tag 0130] and the second page is rewritten with [Stacks, Tag 015J] andStacksDraft.DerivedCoyoneda.rightDerivedSmallCoyonedaIso. The column vanishing is deduced from the finiteness of the diagonals of the zeroth page, which propagates to every later page because each page object is the homology of the previous one (CategoryTheory.SpectralSequence.isZero_page_of_le); it does not involve the stable cycles.This is the
0AVHendpoint;exists_ext_homology_spectralSequence_of_datais the same statement withFil,Z,D,FHuniversally quantified, with thee₂/filteredE₂Isocompatibility, the differential compatibility and the column-vanishing conjuncts dropped, and withE₂identified withExtby an isomorphism not tied to the canonical subquotient.
public theorem exists_ext_homology_spectralSequence
(C : Type u) [Category.{v} C] [Abelian C] [EnoughInjectives C]
[HasDerivedCategory.{w} C] (M : C) (K : DerivedCategory.Plus C) :
∃ (T : FilteredObject (CochainComplex AddCommGrpCat.{w} ℤ) ℤᵒᵖ)
(Fil : ∀ (_p n : ℤ), Subobject (T.X.X n))
(_hFil : ∀ p n : ℤ, Fil p n = Subobject.mk ((T.filtration.ι.app (op p)).f n))
(Z : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(_hZ : ∀ r p n : ℤ, Z r p n =
Fil p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj (Fil (p + r) (n + 1)))
(D : ∀ (_r _p n : ℤ), Subobject (T.X.X n))
(_hD : ∀ r p n : ℤ, D r p n = Z (r - 1) (p + 1) n ⊔
(Subobject.«exists» (T.X.d (n - 1) n)).obj (Z (r - 1) (p - r + 1) (n - 1)))
(FH : ∀ (n _p : ℤ), Subobject (T.X.homology n))
(_hFH : ∀ n p : ℤ, FH n p =
imageSubobject (HomologicalComplex.homologyMap (T.filtration.ι.app (op p)) n))
(E : CohomologicalSpectralSequence AddCommGrpCat.{w} 0)
(pageIso : ∀ (r p q n : ℤ) (hr : 0 ≤ r) (_ : n = p + q), (E.page r hr).X (p, q) ≅
cokernel (Subobject.ofLE _ _ (inf_le_right : D r p n ⊓ Z r p n ≤ Z r p n)))
(filteredE₂Iso : ∀ i j : ℤ,
cokernel (Subobject.ofLE _ _
(inf_le_right : D 2 i (i + j) ⊓ Z 2 i (i + j) ≤ Z 2 i (i + j))) ≅
AddCommGrpCat.of (Abelian.zExt.{u, v, w} M
((DerivedCategory.homologyFunctor.{w, v, u} C j).obj
(DerivedCategory.Plus.ι.{w, v, u}.obj K)) i))
(e₂ : ∀ i j : ℤ, (E.page 2 zero_le_two).X (i, j) ≅
AddCommGrpCat.of (Abelian.zExt.{u, v, w} M
((DerivedCategory.homologyFunctor.{w, v, u} C j).obj
(DerivedCategory.Plus.ι.{w, v, u}.obj K)) i))
(_abutmentIso : ∀ n : ℤ, T.X.homology n ≅
AddCommGrpCat.of (DerivedCategory.Ext.{u, v, w}
((DerivedCategory.singleFunctor.{w, v, u} C 0).obj M)
(DerivedCategory.Plus.ι.{w, v, u}.obj K) n)),
(∀ i j : ℤ, (e₂ i j).hom =
(pageIso 2 i j (i + j) zero_le_two rfl).hom ≫ (filteredE₂Iso i j).hom) ∧
(∀ (r p q n : ℤ) (hr : 0 ≤ r) (hn : n = p + q),
∃ δ : (Z r p n : AddCommGrpCat.{w}) ⟶ (Z r (p + r) (n + 1) : AddCommGrpCat.{w}),
δ ≫ (Z r (p + r) (n + 1)).arrow = (Z r p n).arrow ≫ T.X.d n (n + 1) ∧
cokernel.π (Subobject.ofLE _ _ (inf_le_right : D r p n ⊓ Z r p n ≤ Z r p n)) ≫
(pageIso r p q n hr hn).inv ≫ (E.page r hr).d (p, q) (p + r, q - r + 1) =
δ ≫ cokernel.π (Subobject.ofLE _ _ (inf_le_right :
D r (p + r) (n + 1) ⊓ Z r (p + r) (n + 1) ≤ Z r (p + r) (n + 1))) ≫
(pageIso r (p + r) (q - r + 1) (n + 1) hr (by omega)).inv) ∧
(∀ n : ℤ, {p : ℤ | ¬ IsZero ((E.page 0 le_rfl).X (p, n - p))}.Finite) ∧
(∀ n : ℤ, ∃ a b : ℤ, a ≤ b ∧ FH n a = ⊤ ∧ FH n b = ⊥) ∧
(∀ p q : ℤ, ∃ b : ℤ, ∀ (r : ℤ) (hr : 0 ≤ r), b ≤ r →
(E.page r hr).d (p, q) (p + r, q - r + 1) = 0) ∧
(∀ p n : ℤ,
IsGLB (Set.range fun r : ℕ =>
Fil p n ⊓ (Subobject.pullback (T.X.d n (n + 1))).obj (Fil (p + r) (n + 1)) ⊔
Fil (p + 1) n)
(kernelSubobject (T.X.d n (n + 1)) ⊓ Fil p n ⊔ Fil (p + 1) n) ∧
IsLUB (Set.range fun r : ℕ =>
Fil p n ⊓ (Subobject.«exists» (T.X.d (n - 1) n)).obj (Fil (p - r) (n - 1)) ⊔
Fil (p + 1) n)
(imageSubobject (T.X.d (n - 1) n) ⊓ Fil p n ⊔ Fil (p + 1) n)) ∧
∀ n : ℤ, ∃ a b : ℤ, a ≤ b ∧
∀ (r i j : ℤ) (hr : 0 ≤ r), i + j = n → (i < a ∨ b < i) →
IsZero ((E.page r hr).X (i, j))
Tag 0AVI, an equation
Tag 0AVI in the Stacks Project.
StacksDraft.ExtSpectralSequence.exists_ext_complex_spectralSequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Ext/SpectralSequence.lean, line 633.
Stacks 0AVI. If a bounded below complex
Krepresents an object of the bounded below derived category, there is a cohomological spectral sequenceE₁ⁱʲ = Extʲ(M, Kⁱ)abutting toExtⁱ⁺ʲ(M, K).
public theorem exists_ext_complex_spectralSequence
(C : Type u) [Category.{v} C] [Abelian C] [EnoughInjectives C]
[HasDerivedCategory.{w} C] (M : C) (K : CochainComplex C ℤ)
(hK : ∃ a : ℤ, K.IsStrictlyGE a) :
∃ (E : CohomologicalSpectralSequence AddCommGrpCat.{w} 1)
(_e₁ : ∀ i j : ℤ, (E.page 1).X (i, j) ≅
AddCommGrpCat.of (Abelian.zExt.{u, v, w} M (K.X i) j))
(G : ∀ _p n : ℤ, Subobject
(AddCommGrpCat.of
(DerivedCategory.Ext.{u, v, w}
((DerivedCategory.singleFunctor.{w, v, u} C 0).obj M)
(DerivedCategory.Q.obj K) n)))
(hG : ∀ p p' n : ℤ, p ≤ p' → G p' n ≤ G p n),
(∀ n : ℤ, ∃ a b : ℤ, a ≤ b ∧ G a n = ⊤ ∧ G b n = ⊥) ∧
∀ p q : ℤ, ∃ r₀ : ℤ, 1 ≤ r₀ ∧ ∀ (r : ℤ) (hr : 1 ≤ r), r₀ ≤ r →
(E.page r hr).d (p, q) (p + r, q + 1 - r) = 0 ∧
(E.page r hr).d (p - r, q + r - 1) (p, q) = 0 ∧
Nonempty ((E.page r hr).X (p, q) ≅
cokernel (Subobject.ofLE (G (p + 1) (p + q)) (G p (p + q))
(hG p (p + 1) (p + q) (by omega))))
Sources
Section15.70 Projective dimension#
Section 15.70 of the Stacks Project, Tag 0A5M. 3 tags here are carried by 4 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0A5N, a definition
Tag 0A5N in the Stacks Project.
StacksDraft.ProjectiveDimension.HasProjectiveAmplitude, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/ProjectiveDimension/Amplitude.lean, line 48. The attribute's comment: “projective amplitude”.
An object of
D(R)has projective amplitude in[a, b]if it is represented by a complex of projectiveR-modules whose terms vanish outside degreesathroughb.
public def HasProjectiveAmplitude
(K : DerivedCategory (ModuleCat.{v} R)) (a b : ℤ) : Prop
StacksDraft.ProjectiveDimension.HasFiniteProjectiveDimension, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/ProjectiveDimension/Amplitude.lean, line 58. The attribute's comment: “finite projective dimension”.
An object of
D(R)has finite projective dimension if it is represented by a bounded complex of projectiveR-modules.
public def HasFiniteProjectiveDimension
(K : DerivedCategory (ModuleCat.{v} R)) : Prop
Tag 0A5P, a lemma
Tag 0A5P in the Stacks Project.
StacksDraft.ProjectiveDimension.hasProjectiveAmplitude_iff_ext_vanishing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/ProjectiveDimension/Criteria.lean, line 464.
Stacks 0A5P. Projective amplitude in
[a, b]is equivalent to vanishing of all Ext groups outside degrees[-b, -a]; equivalently, it can be detected using upper cohomology vanishing and Ext groups above degree-a, or using cohomology outside[a - 1, b]and the single Ext degree-a + 1.
public theorem hasProjectiveAmplitude_iff_ext_vanishing [Small.{v} R]
(K : DerivedCategory (ModuleCat.{v} R)) (a b : ℤ) :
let moduleObject := fun N : ModuleCat.{v} R ↦
(DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj N
let projectiveAmplitude := HasProjectiveAmplitude K a b
let extOutsideVanishes := ∀ (N : ModuleCat.{v} R) (i : ℤ),
i ∉ Set.Icc (-b) (-a) → Subsingleton (DerivedCategory.Ext K (moduleObject N) i)
let upperVanishing :=
(∀ n : ℤ, b < n → IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) n).obj K)) ∧
∀ (N : ModuleCat.{v} R) (i : ℤ), -a < i →
Subsingleton (DerivedCategory.Ext K (moduleObject N) i)
let endpointVanishing :=
(∀ n : ℤ, n ∉ Set.Icc (a - 1) b →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) n).obj K)) ∧
∀ N : ModuleCat.{v} R,
Subsingleton (DerivedCategory.Ext K (moduleObject N) (-a + 1))
(projectiveAmplitude ↔ extOutsideVanishes) ∧
(extOutsideVanishes ↔ upperVanishing) ∧
(upperVanishing ↔ endpointVanishing)
Tag 0A5Q, an example
Tag 0A5Q in the Stacks Project.
StacksDraft.ProjectiveDimension.dualNumber_quotient_eps_periodic_resolution_infinite_dimension, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/ProjectiveDimension/DualNumbers.lean, line 277.
Stacks 0A5Q. For the ring
R = k[ε]of dual numbers over a field andM = R/(ε), the moduleMis represented by the periodic free complex with all differentials multiplication byε, butMhas infinite projective dimension.
public theorem dualNumber_quotient_eps_periodic_resolution_infinite_dimension
(k : Type u) [Field k]
[HasDerivedCategory.{w} (ModuleCat.{u} (DualNumber k))] :
let R := DualNumber k
let ε : R := DualNumber.eps
let M := ModuleCat.of R (R ⧸ Ideal.span {ε})
projectiveDimension M = ⊤ ∧
∃ P : CochainComplex (ModuleCat.{u} R) ℤ,
Nonempty
(DerivedCategory.Q.obj P ≅
(DerivedCategory.singleFunctor (ModuleCat.{u} R) 0).obj M) ∧
(∀ i : ℤ, 0 < i → IsZero (P.X i)) ∧
∃ e : ∀ n : ℕ, P.X (-(n : ℤ)) ≅ ModuleCat.of R R,
∀ n : ℕ,
P.d (-((n + 1 : ℕ) : ℤ)) (-(n : ℤ)) ≫ (e n).hom =
(e (n + 1)).hom ≫
ModuleCat.ofHom (LinearMap.mulLeft R ε)
Sources
Section15.71 Injective dimension#
Section 15.71 of the Stacks Project, Tag 0A5R. 7 tags here are carried by 8 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0A5S, a definition
Tag 0A5S in the Stacks Project.
StacksDraft.InjectiveDimension.HasInjectiveAmplitude, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension.lean, line 44. The attribute's comment: “injective amplitude”. References: SGA 6 I (5.7), “(i) definition”.
An object of a derived category has injective amplitude in
[a, b]if it is isomorphic to the image of a cochain complex which vanishes belowaand aboveband whose terms are injective.
public def HasInjectiveAmplitude (K : DerivedCategory C) (a b : ℤ) : Prop
StacksDraft.InjectiveDimension.HasFiniteInjectiveDimension, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension.lean, line 51. The attribute's comment: “finite injective dimension”.
An object of a derived category has finite injective dimension if it has injective amplitude in some finite integer interval.
public def HasFiniteInjectiveDimension (K : DerivedCategory C) : Prop
Tag 0A5T, a lemma
Tag 0A5T in the Stacks Project.
StacksDraft.InjectiveDimension.hasInjectiveAmplitude_iff_ext_vanishing_iff_quotient_vanishing, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension/Criteria.lean, line 362. References: EGA 0 (17.2.1), “partial”.
Stacks 0A5T. An object of the derived category of modules has injective amplitude in
[a, b]if and only if its Ext groups from all modules vanish in degrees outside[a, b]; this is in turn equivalent to testing the same vanishing only on quotients by ideals.
public lemma hasInjectiveAmplitude_iff_ext_vanishing_iff_quotient_vanishing
{R : Type u} [CommRing R] [Small.{v} R] [HasDerivedCategory (ModuleCat.{v} R)]
(K : DerivedCategory (ModuleCat.{v} R)) (a b : ℤ) :
(HasInjectiveAmplitude K a b ↔
∀ (N : ModuleCat.{v} R) (i : ℤ), i < a ∨ b < i →
Subsingleton
(DerivedCategory.Ext
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj N) K i)) ∧
((∀ (N : ModuleCat.{v} R) (i : ℤ), i < a ∨ b < i →
Subsingleton
(DerivedCategory.Ext
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj N) K i)) ↔
∀ (I : Ideal R) (i : ℤ), i < a ∨ b < i →
Subsingleton
(DerivedCategory.Ext
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj
(ModuleCat.of R (Shrink.{v} (R ⧸ I)))) K i))
Tag 0EX0, an example
Tag 0EX0 in the Stacks Project.
StacksDraft.InjectiveDimension.dedekindDomain_ideal_projective_and_bounded_complex_splitting, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension/Examples.lean, line 464.
Stacks 0EX0. Ideals over a Dedekind domain are finite projective. Hence cyclic modules have projective dimension at most one, every module has injective dimension at most one, all Ext groups in degrees at least two vanish, and every bounded derived object is isomorphic to the finite direct sum of its cohomologies placed in their degrees.
public theorem dedekindDomain_ideal_projective_and_bounded_complex_splitting
(R : Type u) [CommRing R] [IsDedekindDomain R] [Small.{v} R] :
(∀ I : Ideal R, Module.Finite R I ∧ Module.Projective R I) ∧
(∀ I : Ideal R,
HasProjectiveDimensionLE (ModuleCat.of R (Shrink.{v} (R ⧸ I))) 1) ∧
(∀ M : ModuleCat.{v} R, HasInjectiveDimensionLE M 1) ∧
(∀ (M N : ModuleCat.{v} R) (i : ℕ), 2 ≤ i →
Subsingleton (Abelian.Ext M N i)) ∧
∀ (K : DerivedCategory (ModuleCat.{v} R)) (a b : ℤ), K.IsGE a → K.IsLE b →
Nonempty (K ≅ ⨁ fun i : Finset.Icc a b =>
(DerivedCategory.singleFunctor (ModuleCat.{v} R) i.1).obj
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i.1).obj K))
Tag 0A5U, an example
Tag 0A5U in the Stacks Project.
StacksDraft.InjectiveDimension.dualNumber_residueField_infinite_injectiveDimension, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension/Examples.lean, line 422.
Stacks 0A5U. Let
Rbe the ring of dual numbers over a field and letM = R/(ε). ThenRis injective as anR-module,Mis quasi-isomorphic to the left-unbounded complex of copies ofRwhose differentials are multiplication byε, andMhas infinite injective dimension.
public theorem dualNumber_residueField_infinite_injectiveDimension (k : Type u) [Field k] :
let R := DualNumber k
let M := ModuleCat.of R (R ⧸ Ideal.span ({DualNumber.eps} : Set R))
Module.Injective R R ∧
(∃ (K : CochainComplex (ModuleCat R) ℤ)
(e : ∀ (i : ℤ) (_ : i ≤ 0), K.X i ≅ ModuleCat.of R R)
(q : K ⟶ (CochainComplex.singleFunctor (ModuleCat R) 0).obj M),
QuasiIso q ∧
(q.f 0 = (e 0 (by omega)).hom ≫
ModuleCat.ofHom (Submodule.mkQ (Ideal.span ({DualNumber.eps} : Set R)))) ∧
(∀ (i : ℤ) (hi : i < 0),
(e i (by omega)).hom ≫ ModuleCat.ofHom (LinearMap.mulLeft R DualNumber.eps) =
K.d i (i + 1) ≫ (e (i + 1) (by omega)).hom) ∧
(∀ (i : ℤ), 0 < i → IsZero (K.X i))) ∧
(∀ n : ℕ, ¬ HasInjectiveDimensionLE M n)
Tag 0A5V, a lemma
Tag 0A5V in the Stacks Project.
StacksDraft.InjectiveDimension.hasFiniteInjectiveDimension_of_bounded, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension/Criteria.lean, line 505.
Stacks 0A5V. A bounded object of the derived category of modules has finite injective dimension if all its cohomology modules have finite injective dimension. Likewise, a derived object represented by a bounded complex whose terms all have finite injective dimension has finite injective dimension.
public theorem hasFiniteInjectiveDimension_of_bounded
{R : Type u} [CommRing R] [Small.{v} R] [HasDerivedCategory (ModuleCat.{v} R)]
(K : DerivedCategory (ModuleCat.{v} R)) :
((∃ a b : ℤ, K.IsGE a ∧ K.IsLE b) →
(∀ i : ℤ, ∃ n : ℕ,
HasInjectiveDimensionLE
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K) n) →
HasFiniteInjectiveDimension K) ∧
(∀ (L : CochainComplex (ModuleCat.{v} R) ℤ),
Nonempty (DerivedCategory.Q.obj L ≅ K) →
(∃ a b : ℤ, L.IsStrictlyGE a ∧ L.IsStrictlyLE b) →
(∀ i : ℤ, ∃ n : ℕ, HasInjectiveDimensionLE (L.X i) n) →
HasFiniteInjectiveDimension K)
Tag 0DW2, a lemma
Tag 0DW2 in the Stacks Project.
StacksDraft.InjectiveDimension.hasFiniteInjectiveDimension_iff_quotient_ext_vanishing, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension/Noetherian.lean, line 451.
Stacks 0DW2. For a bounded below complex with finite cohomology over a Noetherian ring, finite injective dimension can be tested by uniform high-degree Ext vanishing against the quotients by all ideals containing an ideal in the Jacobson radical.
public lemma hasFiniteInjectiveDimension_iff_quotient_ext_vanishing
{R : Type u} [CommRing R] [IsNoetherianRing R] [Small.{v} R]
(I : Ideal R) (hI : I ≤ Ideal.jacobson (⊥ : Ideal R))
(K : DerivedCategory.Plus (ModuleCat.{v} R))
(hK : ∀ i : ℤ, Module.Finite R
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj
(DerivedCategory.Plus.ι.obj K))) :
HasFiniteInjectiveDimension (DerivedCategory.Plus.ι.obj K) ↔
∃ b : ℤ, ∀ (J : Ideal R), I ≤ J → ∀ i : ℤ, b < i →
Subsingleton
(DerivedCategory.Ext
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj
(ModuleCat.of R (Shrink.{v} (R ⧸ J))))
(DerivedCategory.Plus.ι.obj K) i)
Tag 0AVJ, a lemma
Tag 0AVJ in the Stacks Project.
StacksDraft.InjectiveDimension.hasFiniteInjectiveDimension_iff_residueField_ext_vanishing, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Homology/InjectiveDimension/Noetherian.lean, line 498.
Stacks 0AVJ. A bounded below complex with finite cohomology over a Noetherian local ring has finite injective dimension if and only if its Ext groups from the residue field vanish in all sufficiently high degrees.
public lemma hasFiniteInjectiveDimension_iff_residueField_ext_vanishing
{R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R] [Small.{v} R]
(K : DerivedCategory.Plus (ModuleCat.{v} R))
(hK : ∀ i : ℤ, Module.Finite R
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj
(DerivedCategory.Plus.ι.obj K))) :
HasFiniteInjectiveDimension (DerivedCategory.Plus.ι.obj K) ↔
∃ b : ℤ, ∀ i : ℤ, b < i →
Subsingleton
(DerivedCategory.Ext
((DerivedCategory.singleFunctor (ModuleCat.{v} R) 0).obj
(ModuleCat.of R (Shrink.{v} (R ⧸ IsLocalRing.maximalIdeal R))))
(DerivedCategory.Plus.ι.obj K) i)
Sources
Section15.72 Modules which are close to being projective#
Section 15.72 of the Stacks Project, Tag 0G8Z. 7 tags here are carried by 10 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0G90, a lemma
Tag 0G90 in the Stacks Project.
factorsThroughProj_iff_free, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 74. The attribute's comment: “(1)”.
A linear map factors through a projective module if and only if it factors through a free module.
theorem factorsThroughProj_iff_free
{R : Type u} {M : Type v} {N : Type w} [CommRing R]
[AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] (φ : M →ₗ[R] N) :
FactorsThroughProj φ ↔ FactorsThroughFree φ
FactorsThroughProj.submodule, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 121. The attribute's comment: “(2)”.
The
R-linear mapsM →ₗ[R] Nwhich factor through a projectiveR-module form anR-submodule ofM →ₗ[R] N.
def FactorsThroughProj.submodule (R : Type u) [CommRing R] (M : Type v) (N : Type w)
[AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] :
Submodule R (M →ₗ[R] N)
FactorsThroughProj.comp_comp, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 144. The attribute's comment: “(3)”.
Factoring through a projective module is stable under precomposition and postcomposition by arbitrary linear maps.
theorem FactorsThroughProj.comp_comp {R : Type u} [CommRing R] {M : Type v} {N : Type w}
[AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {φ : M →ₗ[R] N}
(hφ : FactorsThroughProj φ) {M' : Type*} {N' : Type*} [AddCommGroup M'] [Module R M']
[AddCommGroup N'] [Module R N'] (ψ : M' →ₗ[R] M) (ξ : N →ₗ[R] N') :
FactorsThroughProj (ξ ∘ₗ φ ∘ₗ ψ)
Tag 0G91, a lemma
Tag 0G91 in the Stacks Project.
Module.exists_finite_projective_factorization, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 343.
A linear map out of a finite module which factors through a projective module already factors through a finite projective module.
theorem Module.exists_finite_projective_factorization
{R : Type u} [CommRing R] {M : Type v} {N : Type w}
[AddCommGroup M] [Module R M] [Module.Finite R M]
[AddCommGroup N] [Module R N] (φ : M →ₗ[R] N) (hφ : FactorsThroughProj φ) :
∃ (P : Type (max u v w)) (_ : AddCommGroup P) (_ : Module R P)
(_ : Module.Finite R P) (_ : Module.Projective R P)
(α : M →ₗ[R] P) (β : P →ₗ[R] N), φ = β ∘ₗ α
Tag 0G92, a lemma
Tag 0G92 in the Stacks Project.
Module.isIProjective_iff_free, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 165. The attribute's comment: “(1)-(2)”.
MisI-projective if and only if for everya ∈ Ithe multiplication-by-aendomorphism ofMfactors through a freeR-module.
theorem Module.isIProjective_iff_free (R : Type u) [CommRing R] (I : Ideal R) (M : Type v)
[AddCommGroup M] [Module R M] :
Module.IsIProjective R I M ↔ ∀ a ∈ I, FactorsThroughFree ((LinearMap.lsmul R M) a)
Module.isIProjective_iff_ext_annihilated, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 205. The attribute's comment: “(1)-(3)”.
MisI-projective if and only ifIannihilatesExt¹_R(M, N)for everyR-moduleN.
theorem Module.isIProjective_iff_ext_annihilated (R : Type u) [CommRing R] [Small.{v} R]
(I : Ideal R) (M : Type v) [AddCommGroup M] [Module R M] :
Module.IsIProjective R I M ↔
∀ (N : Type v) [AddCommGroup N] [Module R N],
I ≤ Module.annihilator R
(Abelian.Ext (ModuleCat.of R M) (ModuleCat.of R N) 1)
Tag 0G93, a definition
Tag 0G93 in the Stacks Project.
Module.IsIProjective, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 158.
An
R-moduleMisI-projective, for an idealIofR, if for everya ∈ Ithe multiplication-by-aendomorphismm ↦ a • mofMfactors through a projectiveR-module.
def Module.IsIProjective (R : Type u) [CommRing R] (I : Ideal R) (M : Type v)
[AddCommGroup M] [Module R M] : Prop
Tag 0G94, a lemma
Tag 0G94 in the Stacks Project.
Module.isIProjective_of_smul_eq_zero, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 252.
If
Mis annihilated by the idealI, that isa • m = 0for alla ∈ Iandm : M, thenMisI-projective.
theorem Module.isIProjective_of_smul_eq_zero {R : Type u} [CommRing R] (I : Ideal R) (M : Type v)
[AddCommGroup M] [Module R M] (h : ∀ a ∈ I, ∀ m : M, a • m = 0) :
Module.IsIProjective R I M
Tag 0G95, a lemma
Tag 0G95 in the Stacks Project.
Module.isIProjective_of_injective_of_exact, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 263.
Given a short exact sequence
0 → K →[i] P →[p] M → 0ofR-modules withMI-projective andPprojective, the moduleKisI-projective.
theorem Module.isIProjective_of_injective_of_exact {R : Type*} [CommRing R] (I : Ideal R)
{K P M : Type u} [AddCommGroup K] [Module R K] [AddCommGroup P] [Module R P]
[Module.Projective R P] [AddCommGroup M] [Module R M] (i : K →ₗ[R] P) (p : P →ₗ[R] M)
(hi : Function.Injective i) (hp : Function.Surjective p)
(hexact : LinearMap.range i = LinearMap.ker p)
(hM : Module.IsIProjective R I M) :
Module.IsIProjective R I K
Tag 0G96, a lemma
Tag 0G96 in the Stacks Project.
Module.IsIProjective.dual, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/IProjective.lean, line 360.
If
Mis a finiteI-projectiveR-module, then its dualM^∨ = Hom_R(M, R)isI-projective.
theorem Module.IsIProjective.dual (R : Type u) [CommRing R] (I : Ideal R) (M : Type v)
[AddCommGroup M] [Module R M] [Module.Finite R M]
(hM : Module.IsIProjective R I M) :
Module.IsIProjective R I (Module.Dual R M)
Sources
Section15.73 Hom complexes#
Section 15.73 of the Stacks Project, Tag 0A8H. 11 tags here are carried by 28 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0A5X, an equation
Tag 0A5X in the Stacks Project.
homComplexHomologyAddEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 109.
Stacks 0A5X. The canonical identification
Hⁿ(Hom^•(L, M)) ≃+ Hom_{K(C)}(L, M⟦n⟧)of the degree-ncohomology of the Hom complex with morphisms in the homotopy category.
noncomputable def homComplexHomologyAddEquiv
{C : Type u} [Category.{v} C] [Preadditive C] (L M : CochainComplex C ℤ) (n : ℤ) :
(L.HomComplex M).homology n ≃+
((HomotopyCategory.quotient C (ComplexShape.up ℤ)).obj L ⟶
(HomotopyCategory.quotient C (ComplexShape.up ℤ)).obj (M⟦n⟧))
Tag 0A5Y, a lemma
Tag 0A5Y in the Stacks Project.
Stacks.HomComplex.Currying.curryIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Currying.lean, line 327.
Stacks 0A5Y. The canonical tensor–Hom currying isomorphism of complexes of
R-modulesHom^•(K, Hom^•(L, M)) ≅ Hom^•(Tot(K ⊗_R L), M), given in each degree by transposing a degreewise linear map.
noncomputable def curryIso (K L M : CochainComplex (ModuleCat.{u} R) ℤ) :
HomComplexR R K (HomComplexR R L M) ≅ HomComplexR R (K ⊗ L) M
Stacks.HomComplex.Currying.curryIso_hom_apply, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Currying.lean, line 342.
Stacks 0A5Y. The currying isomorphism sends a cochain
αto the cochain whose value on the summandK^r ⊗ L^sofTot^t(K ⊗ L)isx ⊗ y ↦ α^r(x)(y). This determines it in every degree and on every summand.
lemma curryIso_hom_apply (K L M : CochainComplex (ModuleCat.{u} R) ℤ) (n r s t p : ℤ)
(hrs : r + s = t) (htp : t + n = p)
(α : Cochain K (HomComplexR R L M) n) (x : K.X r) (y : L.X s) :
((((curryIso K L M).hom.f n).hom α).v t p htp).hom
((ιTensorObj K L r s t hrs).hom (x ⊗ₜ[R] y)) =
(((α.v r (r + n) (by omega)).hom x).v s p (by omega)).hom y
Stacks.HomComplex.Currying.curryIso_naturality_left, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Currying.lean, line 413.
Stacks 0A5Y. Currying is contravariantly natural in the first complex: precomposing with
f : K' ⟶ Kinside the iterated Hom complex corresponds to precomposing withf ▷ Lon the total complex.
lemma curryIso_naturality_left {K K' L M : CochainComplex (ModuleCat.{u} R) ℤ} (f : K' ⟶ K) :
Stacks.HomComplex.TensorHomMap.precomp R K' K (HomComplexR R L M) f ≫ (curryIso K' L M).hom =
(curryIso K L M).hom ≫ Stacks.HomComplex.TensorHomMap.precomp R (K' ⊗ L) (K ⊗ L) M (f ▷ L)
Stacks.HomComplex.Currying.curryIso_naturality_middle, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Currying.lean, line 435.
Stacks 0A5Y. Currying is contravariantly natural in the middle complex: precomposing the inner Hom complex with
f : L' ⟶ Lcorresponds to precomposing withK ◁ fon the total complex.
lemma curryIso_naturality_middle {K L L' M : CochainComplex (ModuleCat.{u} R) ℤ} (f : L' ⟶ L) :
Stacks.HomComplex.TensorHomMap.postcomp R K (HomComplexR R L M) (HomComplexR R L' M)
(Stacks.HomComplex.TensorHomMap.precomp R L' L M f) ≫ (curryIso K L' M).hom =
(curryIso K L M).hom ≫ Stacks.HomComplex.TensorHomMap.precomp R (K ⊗ L') (K ⊗ L) M (K ◁ f)
Stacks.HomComplex.Currying.curryIso_naturality_right, a lemma in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Currying.lean, line 460.
Stacks 0A5Y. Currying is covariantly natural in the target complex.
lemma curryIso_naturality_right {K L M M' : CochainComplex (ModuleCat.{u} R) ℤ} (f : M ⟶ M') :
Stacks.HomComplex.TensorHomMap.postcomp R K (HomComplexR R L M) (HomComplexR R L M')
(Stacks.HomComplex.TensorHomMap.postcomp R L M M' f) ≫ (curryIso K L M').hom =
(curryIso K L M).hom ≫ Stacks.HomComplex.TensorHomMap.postcomp R (K ⊗ L) M M' f
Tag 0A5Z, an equation
Tag 0A5Z in the Stacks Project.
StacksDraft.TensorHomEquiv.tensorHomEquiv, an alias in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/TensorHomEquiv.lean, line 57.
Stacks 0A5Z. Linear maps into a module of linear maps are canonically equivalent to linear maps out of the corresponding tensor product:
Hom_R(K, Hom_R(L, M))is identified withHom_R(K ⊗_R L, M)by sendingfto the map determined byx ⊗ y ↦ f(x)(y).
alias tensorHomEquiv
StacksDraft.TensorHomEquiv.tensorHomEquiv, an alias in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/TensorHomEquiv.lean, line 57.
Stacks 0A5Z. Linear maps into a module of linear maps are canonically equivalent to linear maps out of the corresponding tensor product:
Hom_R(K, Hom_R(L, M))is identified withHom_R(K ⊗_R L, M)by sendingfto the map determined byx ⊗ y ↦ f(x)(y).
alias tensorHomEquiv
StacksDraft.TensorHomEquiv.tensorHomEquiv_apply, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/TensorHomEquiv.lean, line 62.
Stacks 0A5Z. The tensor–Hom equivalence sends
f : K →ₗ[R] L →ₗ[R] Mto the linear map taking the pure tensorx ⊗ ytof x y.
theorem tensorHomEquiv_apply {R : Type*} [CommRing R] (K L M : Type*)
[AddCommGroup K] [AddCommGroup L] [AddCommGroup M]
[Module R K] [Module R L] [Module R M]
(f : K →ₗ[R] L →ₗ[R] M) (x : K) (y : L) :
tensorHomEquiv (RingHom.id R) K L M f (x ⊗ₜ[R] y) = f x y
StacksDraft.TensorHomEquiv.tensorHomEquiv_apply, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/TensorHomEquiv.lean, line 62.
Stacks 0A5Z. The tensor–Hom equivalence sends
f : K →ₗ[R] L →ₗ[R] Mto the linear map taking the pure tensorx ⊗ ytof x y.
theorem tensorHomEquiv_apply {R : Type*} [CommRing R] (K L M : Type*)
[AddCommGroup K] [AddCommGroup L] [AddCommGroup M]
[Module R K] [Module R L] [Module R M]
(f : K →ₗ[R] L →ₗ[R] M) (x : K) (y : L) :
tensorHomEquiv (RingHom.id R) K L M f (x ⊗ₜ[R] y) = f x y
StacksDraft.TensorHomEquiv.tensorHomEquiv_symm_apply, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/TensorHomEquiv.lean, line 72.
Stacks 0A5Z. The inverse of the tensor–Hom equivalence sends
g : K ⊗[R] L →ₗ[R] Mto the mapx ↦ y ↦ g (x ⊗ y).
theorem tensorHomEquiv_symm_apply {R : Type*} [CommRing R] (K L M : Type*)
[AddCommGroup K] [AddCommGroup L] [AddCommGroup M]
[Module R K] [Module R L] [Module R M]
(g : K ⊗[R] L →ₗ[R] M) (x : K) (y : L) :
((tensorHomEquiv (RingHom.id R) K L M).symm g) x y = g (x ⊗ₜ[R] y)
StacksDraft.TensorHomEquiv.tensorHomEquiv_symm_apply, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/TensorHomEquiv.lean, line 72.
Stacks 0A5Z. The inverse of the tensor–Hom equivalence sends
g : K ⊗[R] L →ₗ[R] Mto the mapx ↦ y ↦ g (x ⊗ y).
theorem tensorHomEquiv_symm_apply {R : Type*} [CommRing R] (K L M : Type*)
[AddCommGroup K] [AddCommGroup L] [AddCommGroup M]
[Module R K] [Module R L] [Module R M]
(g : K ⊗[R] L →ₗ[R] M) (x : K) (y : L) :
((tensorHomEquiv (RingHom.id R) K L M).symm g) x y = g (x ⊗ₜ[R] y)
Tag 0GWQ, a remark
Tag 0GWQ in the Stacks Project.
Stacks.HomComplex.MonoidalClosed.cochainComplex_symmetricMonoidalClosed, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Currying.lean, line 688.
Stacks 0GWQ. Cochain complexes of modules over a commutative ring form a symmetric monoidal closed category. The concrete Hom complexes, with pre- and postcomposition on morphisms, form a bifunctor naturally isomorphic to the internal Hom bifunctor. Under this isomorphism, the closed-structure adjunction, after applying the symmetry
K ⊗ L ≅ L ⊗ K, is the canonical currying isomorphism of Hom complexes. Moreover, a degree-zero cochain is the cochain of a unique morphism of complexes if and only if its differential vanishes.
theorem cochainComplex_symmetricMonoidalClosed (R : Type u) [CommRing R] :
∃ (s : SymmetricCategory (CochainComplex (ModuleCat.{u} R) ℤ)),
letI := s
∃ (closed : MonoidalClosed (CochainComplex (ModuleCat.{u} R) ℤ)),
letI := closed
∃ (H : (CochainComplex (ModuleCat.{u} R) ℤ)ᵒᵖ ⥤
CochainComplex (ModuleCat.{u} R) ℤ ⥤ CochainComplex (ModuleCat.{u} R) ℤ)
(hObj : ∀ (L M : CochainComplex (ModuleCat.{u} R) ℤ),
(H.obj (Opposite.op L)).obj M = HomComplexR R L M),
(∀ (L M N : CochainComplex (ModuleCat.{u} R) ℤ) (f : M ⟶ N),
(H.obj (Opposite.op L)).map f =
eqToHom (hObj L M) ≫ Stacks.HomComplex.TensorHomMap.postcomp R L M N f ≫ eqToHom (hObj
L N).symm) ∧
(∀ (K L M : CochainComplex (ModuleCat.{u} R) ℤ) (f : K ⟶ L),
(H.map f.op).app M =
eqToHom (hObj L M) ≫ Stacks.HomComplex.TensorHomMap.precomp R K L M f ≫ eqToHom (hObj
K M).symm) ∧
∃ e : MonoidalClosed.internalHom ≅ H,
(∀ (L M : CochainComplex (ModuleCat.{u} R) ℤ) (f : Cochain L M 0),
(∃! φ : L ⟶ M, Cochain.ofHom φ = f) ↔ δ 0 1 f = 0) ∧
∀ (K L M : CochainComplex (ModuleCat.{u} R) ℤ)
(φ : K ⟶ HomComplexR R L M),
Cochain.ofHom
((s.toBraidedCategory.braiding K L).hom ≫
MonoidalClosed.uncurry
(φ ≫ eqToHom (hObj L M).symm ≫ (e.app (Opposite.op L)).inv.app M)) =
(Stacks.HomComplex.Currying.curryIso K L M).hom.f 0 (Cochain.ofHom φ)
Tag 0A8I, a lemma
Tag 0A8I in the Stacks Project.
composition_morphism_exists, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Composition.lean, line 144. References: SGA 4 XVII (1.1.10), “(iii), special case”.
There is a morphism of complexes of
R-modulesc : tensorObj (HomComplexR R L M) (HomComplexR R K L) ⟶ HomComplexR R K Msuch that forβ : Cochain L M pandγ : Cochain K L qwithp + q = n, the(p, q)-component ofcsendsβ ⊗ₜ γto the composite cochainγ.comp β.
theorem composition_morphism_exists :
∃ c : HomologicalComplex.tensorObj (HomComplexR R L M) (HomComplexR R K L) ⟶ HomComplexR R K M,
∀ (p q n : ℤ) (h : p + q = n) (β : Cochain L M p) (γ : Cochain K L q),
(HomologicalComplex.ιTensorObj (HomComplexR R L M) (HomComplexR R K L) p q n h ≫ c.f n).hom
(β ⊗ₜ[R] γ)
= γ.comp β (by rw [add_comm]; exact h)
Tag 0BYM, a lemma
Tag 0BYM in the Stacks Project.
Stacks.HomComplex.TensorHomComparison.theta, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/TensorHom.lean, line 431.
Stacks 0BYM. The canonical morphism of complexes
Θ : Tot(K ⊗_R Hom^•(M, L)) ⟶ Hom^•(M, Tot(K ⊗_R L)), given in degreenbythetaDeg.
noncomputable def theta (K L M : CochainComplex (ModuleCat R) ℤ) :
(K ⊗ HomComplexR R M L) ⟶ HomComplexR R M (K ⊗ L)
Stacks.HomComplex.TensorHomComparison.theta_natural_K, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/TensorHom.lean, line 465.
Stacks 0BYM (naturality in
K). ForfK : K ⟶ K',Θ ≫ Hom^•(id_M, fK ▷ L) = (fK ▷ Hom^•(M, L)) ≫ Θ.
theorem theta_natural_K (K K' L M : CochainComplex (ModuleCat R) ℤ) (fK : K ⟶ K') :
theta K L M ≫ HomCxMap M M (K ⊗ L) (K' ⊗ L) (𝟙 M) (fK ▷ L)
= (fK ▷ HomComplexR R M L) ≫ theta K' L M
Stacks.HomComplex.TensorHomComparison.theta_natural_L, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/TensorHom.lean, line 496.
Stacks 0BYM (naturality in
L). ForgL : L ⟶ L',Θ ≫ Hom^•(id_M, K ◁ gL) = (K ◁ Hom^•(id_M, gL)) ≫ Θ.
theorem theta_natural_L (K L L' M : CochainComplex (ModuleCat R) ℤ) (gL : L ⟶ L') :
theta K L M ≫ HomCxMap M M (K ⊗ L) (K ⊗ L') (𝟙 M) (K ◁ gL)
= (K ◁ HomCxMap M M L L' (𝟙 M) gL) ≫ theta K L' M
Stacks.HomComplex.TensorHomComparison.theta_natural_M, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/TensorHom.lean, line 528.
Stacks 0BYM (naturality in
M). ForhM : M' ⟶ M,Θ ≫ Hom^•(hM, id_{K ⊗ L}) = (K ◁ Hom^•(hM, id_L)) ≫ Θ.
theorem theta_natural_M (K L M M' : CochainComplex (ModuleCat R) ℤ) (hM : M' ⟶ M) :
theta K L M ≫ HomCxMap M M' (K ⊗ L) (K ⊗ L) hM (𝟙 (K ⊗ L))
= (K ◁ HomCxMap M M' L L hM (𝟙 L)) ≫ theta K L M'
Tag 0A62, a lemma
Tag 0A62 in the Stacks Project.
Stacks.HomComplex.TensorHomMap.Phi, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Basic.lean, line 301.
Stacks 0A62. The morphism of complexes of
R-modulesΦ_{K,L} : K ⟶ Hom^•(L, Tot(K ⊗_R L))whose degree-ncomponent sendsβ ∈ K^nto the cochainy ↦ β ⊗ y.
noncomputable def Phi (K L : CochainComplex (ModuleCat R) ℤ) :
K ⟶ CochainComplex.HomComplexR R L (K ⊗ L)
Stacks.HomComplex.TensorHomMap.Phi_natural_mixed, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Basic.lean, line 316.
Stacks 0A62. For
f : K ⟶ K'andg : L ⟶ L', postcomposingΦ_{K,L}withTot(f ⊗ g) = f ⊗ₘ gequalsf ≫ Φ_{K',L'}followed by precomposition withg; both sendβandytof(β) ⊗ g(y).
theorem Phi_natural_mixed (K K' L L' : CochainComplex (ModuleCat R) ℤ) (f : K ⟶ K') (g : L ⟶ L') :
Phi R K L ≫ postcomp R L (K ⊗ L) (K' ⊗ L') (f ⊗ₘ g) =
f ≫ Phi R K' L' ≫ precomp R L L' (K' ⊗ L') g
Tag 0A60, a lemma
Tag 0A60 in the Stacks Project.
ChainEvaluation.chainEvaluation, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Evaluation.lean, line 454.
Stacks 0A60. The canonical morphism of complexes
Tot(Hom^•(J, I) ⊗ K) ⟶ Hom^•(Hom^•(K, J), I). On homogeneous elements it sendsf ⊗ kto the mapg ↦ f (g k), with the Koszul signs of the total and Hom complexes.
noncomputable def chainEvaluation
(K J I : CochainComplex (ModuleCat R) ℤ) :
(HomComplexR R J I ⊗ K) ⟶ HomComplexR R (HomComplexR R K J) I
ChainEvaluation.chainEvaluation_natural_K, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Evaluation.lean, line 481.
Stacks 0A60. Evaluation is natural in the complex
Kbeing evaluated at: tensoring withf : K ⟶ K'and then evaluating is evaluating and then precomposing the outer Hom complex withf^* : Hom^•(K', J) ⟶ Hom^•(K, J).
theorem chainEvaluation_natural_K
(K K' J I : CochainComplex (ModuleCat.{u} R) ℤ) (f : K ⟶ K') :
(HomComplexR R J I ◁ f) ≫ chainEvaluation K' J I =
chainEvaluation K J I ≫ Stacks.HomComplex.TensorHomMap.precomp R (HomComplexR R K' J)
(HomComplexR R K J) I (Stacks.HomComplex.TensorHomMap.precomp R K K' J f)
ChainEvaluation.chainEvaluation_natural_J, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Evaluation.lean, line 548.
Stacks 0A60. Evaluation is natural in the middle complex
J: precomposing the inner Hom complex withf : J ⟶ J'on the source corresponds to postcomposingHom^•(K, J) ⟶ Hom^•(K, J')on the target.
theorem chainEvaluation_natural_J
(K J J' I : CochainComplex (ModuleCat.{u} R) ℤ) (f : J ⟶ J') :
(Stacks.HomComplex.TensorHomMap.precomp R J J' I f ▷ K) ≫ chainEvaluation K J I =
chainEvaluation K J' I ≫ Stacks.HomComplex.TensorHomMap.precomp R (HomComplexR R K J)
(HomComplexR R K J') I (Stacks.HomComplex.TensorHomMap.postcomp R K J J' f)
ChainEvaluation.chainEvaluation_natural_I, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Evaluation.lean, line 624.
Stacks 0A60. Evaluation is natural in the target complex
I: postcomposing withf : I ⟶ I'commutes with evaluation.
theorem chainEvaluation_natural_I
(K J I I' : CochainComplex (ModuleCat.{u} R) ℤ) (f : I ⟶ I') :
(Stacks.HomComplex.TensorHomMap.postcomp R J I I' f ▷ K) ≫ chainEvaluation K J I' =
chainEvaluation K J I ≫ Stacks.HomComplex.TensorHomMap.postcomp R (HomComplexR R K J) I I' f
ChainEvaluation.chainEvaluation_tmul, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Evaluation.lean, line 799.
Stacks 0A60. The homogeneous formula for
chainEvaluation: the image ofφ ⊗ ksends a cochainψtoφ (ψ k), up to the Koszul sign(-1)^(s + (-a) s)of evaluation.
theorem chainEvaluation_tmul
(K J I : CochainComplex (ModuleCat.{u} R) ℤ)
(t s n q p a : ℤ) (hn : t + s = n) (hq : q + n = p)
(ha : s + q = a) (hp : a + t = p)
(φ : Cochain J I t) (k : K.X s) (ψ : Cochain K J q) :
((((chainEvaluation K J I).f n).hom
((ιTensorObj (HomComplexR R J I) K t s n hn).hom (φ ⊗ₜ[R] k))).v
q p hq).hom ψ =
(s + (-a) * s).negOnePow •
(φ.v a p hp).hom ((ψ.v s a ha).hom k)
Tag 0FNE, an equation
Tag 0FNE in the Stacks Project.
CochainComplex.HomComplex.iteratedHomComplex_differential_apply, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Differentials.lean, line 87.
Stacks 0FNE. The differential of a degree-
ncochain inHom^•(Hom^•(K, L), M), evaluated onf ∈ Hom^{-s-1}(K, L), is the sum of the target, middle and source differential terms, with respective signs1,-(-1)^nand(-1)^(p+1).
theorem iteratedHomComplex_differential_apply
{R : Type u} [CommRing R]
(K L M : CochainComplex (ModuleCat.{v} R) ℤ)
(n p s : ℤ) (hps : p + s = n)
(β : Cochain (HomComplexR R K L) M n)
(f : Cochain K L (-s - 1)) :
((δ n (n + 1) β).v (-s - 1) p (by omega)).hom f =
(M.d (p - 1) p).hom ((β.v (-s - 1) (p - 1) (by omega)).hom f) -
n.negOnePow •
((β.v (-s) p (by omega)).hom
(f.comp (Cochain.diff L) (by omega))) +
(p + 1).negOnePow •
((β.v (-s) p (by omega)).hom
((Cochain.diff K).comp f (by omega)))
Tag 0FNF, an equation
Tag 0FNF in the Stacks Project.
CochainComplex.HomComplex.tensorHomComplex_differential_component, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Differentials.lean, line 221.
Stacks 0FNF. On the
(p, q, r)-component ofTot(Hom^•(L, M) ⊗ K), the total differential is the Hom-complex differential plus(-1)^(p+q)times the differential ofK; the Hom-complex differential itself is postcomposition byd_Mminus(-1)^(p+q)times precomposition byd_L. Thus the total differential is the three-term expressiond_M - (-1)^(p+q) d_L + (-1)^(p+q) d_K.
theorem tensorHomComplex_differential_component
(L M K : CochainComplex (ModuleCat R) ℤ) (p q r : ℤ) :
let H := HomComplexR R L M
let T := HomologicalComplex.tensorObj H K
((homComponent R L M p q ▷ K.X r) ≫
HomologicalComplex.ιTensorObj H K (p + q) r (p + q + r) rfl ≫
T.d (p + q + r) (p + q + r + 1) =
(postcomposeDifferential R L M p q ▷ K.X r) ≫
(homComponent R L M (p + 1) q ▷ K.X r) ≫
HomologicalComplex.ιTensorObj H K (p + 1 + q) r
(p + q + r + 1) (by omega) +
-(p + q).negOnePow •
((precomposeDifferential R L M p q ▷ K.X r) ≫
(homComponent R L M p (q + 1) ▷ K.X r) ≫
HomologicalComplex.ιTensorObj H K (p + (q + 1)) r
(p + q + r + 1) (by omega)) +
(p + q).negOnePow •
((homComponent R L M p q ⊗ₘ K.d r (r + 1)) ≫
HomologicalComplex.ιTensorObj H K (p + q) (r + 1)
(p + q + r + 1) (by omega)))
Tag 0A61, a remark
Tag 0A61 in the Stacks Project.
ChainEvaluation.homComplex_braiding_sign_eq_evaluation_sign, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Evaluation.lean, line 1053.
Stacks 0A61. For any Koszul symmetric structure on cochain complexes — one whose braiding restricts on the summand
A^p ⊗ B^qto(-1)^{pq}times the symmetry ofModuleCat R— the braiding on the summandK^r ⊗ Hom^{a-r}(K, J)carries the sign(-1)^{r + (-a) r}that occurs in the direct construction of evaluation into an iterated Hom complex (chainEvaluation_tmul). So the monoidal construction of the map of Stacks 0A60 and the direct one use the same sign.
theorem homComplex_braiding_sign_eq_evaluation_sign
(s : SymmetricCategory (CochainComplex (ModuleCat.{u} R) ℤ))
(hKoszul : ∀ (A B : CochainComplex (ModuleCat.{u} R) ℤ) (p q n : ℤ) (h : p + q = n),
ιTensorObj A B p q n h ≫ (s.toBraidedCategory.braiding A B).hom.f n =
((p * q).negOnePow : ℤˣ) •
((β_ (A.X p) (B.X q)).hom ≫
ιTensorObj B A q p n (by simpa [add_comm] using h)))
(K J : CochainComplex (ModuleCat.{u} R) ℤ) (a r : ℤ) :
ιTensorObj K (HomComplexR R K J) r (a - r) a (by omega) ≫
(s.toBraidedCategory.braiding K (HomComplexR R K J)).hom.f a =
((r + (-a) * r).negOnePow : ℤˣ) •
((β_ (K.X r) ((HomComplexR R K J).X (a - r))).hom ≫
ιTensorObj (HomComplexR R K J) K (a - r) r a (by omega))
Sources
Section15.74 Sign rules#
Section 15.74 of the Stacks Project, Tag 0FNG. 7 tags here are carried by 9 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0FNH, an item
Tag 0FNH in the Stacks Project.
CochainComplex.HomComplex.tensorShiftIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/ShiftTensor.lean, line 77. The attribute's comment: “canonical isomorphism”.
Stacks 0FNH. The canonical isomorphism from the shift by
a + bof the tensor productM ⊗ Nto the tensor productM[a] ⊗ N[b]of the shifts.It is the inverse of the composite that removes the shift from the first factor, then from the second factor, and finally recombines the two shifts; see
CochainComplex.HomComplex.tensorShiftIso_hom_ι_and_naturalityfor the homogeneous formula that pins it down.
noncomputable def tensorShiftIso (M N : CochainComplex (ModuleCat R) ℤ) (a b : ℤ) :
(M ⊗ N)⟦a + b⟧ ≅ M⟦a⟧ ⊗ N⟦b⟧
CochainComplex.HomComplex.tensorShiftHom, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/ShiftTensor.lean, line 90. The attribute's comment: “corresponding shifted map”.
Stacks 0FNH. The morphism corresponding to
CochainComplex.HomComplex.tensorShiftIso: its source is the unshifted tensor product and its target is the tensor product of the shifts, shifted back by-a - b.
noncomputable def tensorShiftHom (M N : CochainComplex (ModuleCat R) ℤ) (a b : ℤ) :
M ⊗ N ⟶ (M⟦a⟧ ⊗ N⟦b⟧)⟦-a - b⟧
CochainComplex.HomComplex.tensorShiftIso_hom_ι_and_naturality, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/ShiftTensor.lean, line 225. The attribute's comment: “homogeneous sign formula and naturality”.
Stacks 0FNH. On the summand
M^p ⊗ N^q, the simultaneous-shift isomorphismCochainComplex.HomComplex.tensorShiftIsois multiplication by the Koszul sign(-1)^(p*b)followed by the canonical inclusion ofM[a]^{p-a} ⊗ N[b]^{q-b}into the shifted total complex. Since the homogeneous summands generate, this determines the isomorphism. It is moreover natural in both complexes.
theorem tensorShiftIso_hom_ι_and_naturality
(M N : CochainComplex (ModuleCat R) ℤ) (a b : ℤ) :
(∀ (p q : ℤ),
HomologicalComplex.ιTensorObj M N p q (p + q) rfl ≫
(CochainComplex.shiftFunctorObjXIso (M ⊗ N) (a + b)
(p + q - a - b) (p + q) (by omega)).inv ≫
(tensorShiftIso M N a b).hom.f (p + q - a - b) =
((p * b).negOnePow : ℤˣ) •
((CochainComplex.shiftFunctorObjXIso M a (p - a) p (by omega)).inv ⊗ₘ
(CochainComplex.shiftFunctorObjXIso N b (q - b) q (by omega)).inv) ≫
HomologicalComplex.ιTensorObj (M⟦a⟧) (N⟦b⟧)
(p - a) (q - b) (p + q - a - b) (by omega)) ∧
(∀ (M' N' : CochainComplex (ModuleCat R) ℤ) (f : M ⟶ M') (g : N ⟶ N'),
(HomologicalComplex.tensorHom f g)⟦a + b⟧' ≫
(tensorShiftIso M' N' a b).hom =
(tensorShiftIso M N a b).hom ≫
HomologicalComplex.tensorHom (f⟦a⟧') (g⟦b⟧'))
Tag 0GWR, an item
Tag 0GWR in the Stacks Project.
TotalTensorComplex.cochainComplex_symmetricMonoidalCategory, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/TensorComplex/Monoidal.lean, line 115.
The category of cochain complexes of modules over a commutative ring, with tensor product given by the total complex of the degreewise tensor product, is symmetric monoidal. On the summand of bidegree
(p, q), its braiding is the ordinary symmetry of tensor products multiplied by the Koszul sign(-1)^(p*q).
public theorem cochainComplex_symmetricMonoidalCategory (R : Type u) [CommRing R] :
∃ s : SymmetricCategory (CochainComplex (ModuleCat R) ℤ),
∀ (K L : CochainComplex (ModuleCat R) ℤ) (p q n : ℤ) (h : p + q = n),
HomologicalComplex.ιTensorObj K L p q n h ≫
(s.toBraidedCategory.braiding K L).hom.f n =
((p * q).negOnePow : ℤˣ) •
((β_ (K.X p) (L.X q)).hom ≫
HomologicalComplex.ιTensorObj L K q p n (by simpa [add_comm] using h))
Tag 0FNJ, a lemma
Tag 0FNJ in the Stacks Project.
ModuleCat.LeftDual.finite_projective_and_linearDual_equiv_of_exactPairing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Category/ModuleCat/LeftDual.lean, line 254.
If
Nis a left dual ofMin the monoidal category ofR-modules, thenMandNare finite projective. Moreover, contraction with the coevaluation identifiesM⁺withN, and under this identification the given evaluation map sendsn ⊗ mto the value atmof the functional corresponding ton.
theorem finite_projective_and_linearDual_equiv_of_exactPairing :
Module.Finite R M ∧ Module.Projective R M ∧
Module.Finite R N ∧ Module.Projective R N ∧
∃ e : Module.Dual R M ≃ₗ[R] N,
e.toLinearMap = linearDualToLeftDual R M N ∧
∀ (n : N) (m : M),
(ε_ (ModuleCat.of R M) (ModuleCat.of R N)).hom (n ⊗ₜ[R] m) = e.symm n m
Tag 0FNK, a lemma
Tag 0FNK in the Stacks Project.
CochainComplex.LeftDual.exactPairing_iff_bounded_finiteProjective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/LeftDual.lean, line 1127.
A complex of modules and a chosen left dual are bounded complexes of finite projective modules, and the pairing is the termwise linear-dual pairing with signed transpose differential. Conversely, every bounded complex of finite projective modules admits exactly this construction as a left dual.
theorem exactPairing_iff_bounded_finiteProjective (R : Type u) [CommRing R] :
(∀ (M N : CochainComplex (ModuleCat R) ℤ) (p : ExactPairing M N),
(∃ a b : ℤ, M.IsStrictlyGE a ∧ M.IsStrictlyLE b) ∧
(∃ a b : ℤ, N.IsStrictlyGE a ∧ N.IsStrictlyLE b) ∧
(∀ n : ℤ, Module.Finite R (M.X n) ∧ Module.Projective R (M.X n)) ∧
(∀ n : ℤ, Module.Finite R (N.X n) ∧ Module.Projective R (N.X n)) ∧
IsLinearDualPairing R M N p) ∧
(∀ M : CochainComplex (ModuleCat R) ℤ,
(∃ a b : ℤ, M.IsStrictlyGE a ∧ M.IsStrictlyLE b) →
(∀ n : ℤ, Module.Finite R (M.X n) ∧ Module.Projective R (M.X n)) →
∃ (N : CochainComplex (ModuleCat R) ℤ) (p : ExactPairing M N),
(∃ a b : ℤ, N.IsStrictlyGE a ∧ N.IsStrictlyLE b) ∧
IsLinearDualPairing R M N p)
Tag 0FNL, an item
Tag 0FNL in the Stacks Project.
CochainComplex.LeftDual.tensorLeftDualIsoHomComplex, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/LeftDual.lean, line 1261.
Stacks 0FNL. For a complex
Mwith left dualN, the canonical sign-free tensor–Hom morphism is a natural isomorphismK ⊗ N ≅ Hom^•(M, K). On the summandK^p ⊗ N^q, its component inHom(M^{-q}, K^p)sendsx ⊗ yto the mapm ↦ ε(y ⊗ m) • x.
theorem tensorLeftDualIsoHomComplex
(M N : CochainComplex (ModuleCat R) ℤ) (pairing : ExactPairing M N) :
letI := pairing
∃ e : ∀ K : CochainComplex (ModuleCat R) ℤ,
K ⊗ N ≅ HomComplexR R M K,
(∀ (K : CochainComplex (ModuleCat R) ℤ) (n p q : ℤ) (hpq : p + q = n)
(x : K.X p) (y : N.X q) (m : M.X (-q)),
(((((e K).hom.f n).hom
((ιTensorObj K N p q n hpq).hom (x ⊗ₜ[R] y))) : Cochain M K n).v
(-q) p (by omega)).hom m =
((ιTensorObj N M q (-q) 0 (by omega) ≫ (ε_ M N).f 0 ≫
(singleObjXSelf (ComplexShape.up ℤ) 0 (𝟙_ (ModuleCat R))).hom).hom
(y ⊗ₜ[R] m)) • x) ∧
∀ (K L : CochainComplex (ModuleCat R) ℤ) (f : K ⟶ L),
(e K).hom ≫ Stacks.HomComplex.TensorHomComparison.HomCxMap M M K L (𝟙 M) f =
(f ▷ N) ≫ (e L).hom
Tag 0FNM, an item
Tag 0FNM in the Stacks Project.
CochainComplex.HomComplex.evaluationToDoubleHom_apply, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/Differentials.lean, line 501.
Stacks 0FNM. The canonical evaluation into the double Hom complex sends homogeneous
x ∈ K^nandf ∈ Hom^m(K, M)to(-1)^(nm) f(x). It is natural inKand dinatural in the coefficient complexM.
theorem evaluationToDoubleHom_apply :
(∀ (K M : CochainComplex (ModuleCat.{u} R) ℤ) (n m : ℤ)
(x : K.X n) (f : Cochain K M m),
((((evaluationToDoubleHom K M).f n).hom x).v m (m + n) (by omega)).hom f =
(n * m).negOnePow • (f.v n (m + n) (by omega)).hom x) ∧
(∀ (K K' M : CochainComplex (ModuleCat.{u} R) ℤ) (g : K ⟶ K'),
evaluationToDoubleHom K M ≫
Stacks.HomComplex.TensorHomMap.precomp R (HomComplexR R K' M) (HomComplexR R K M) M
(Stacks.HomComplex.TensorHomMap.precomp R K K' M g) =
g ≫ evaluationToDoubleHom K' M) ∧
(∀ (K M M' : CochainComplex (ModuleCat.{u} R) ℤ) (g : M ⟶ M'),
evaluationToDoubleHom K M ≫
Stacks.HomComplex.TensorHomMap.postcomp R (HomComplexR R K M) M M' g =
evaluationToDoubleHom K M' ≫
Stacks.HomComplex.TensorHomMap.precomp R (HomComplexR R K M) (HomComplexR R K M') M'
(Stacks.HomComplex.TensorHomMap.postcomp R K M M' g))
Tag 0FNN, an item
Tag 0FNN in the Stacks Project.
CochainComplex.HomComplex.homComplexShiftIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/ShiftHom.lean, line 191.
Stacks 0FNN. The canonical identification
Hom^•(M, K)[a - b] ≅ Hom^•(M[b], K[a]).After shifting the identification back to a map
Hom^•(M, K) ⟶ Hom^•(M[b], K[a])[b - a], its degree-ncomponent is the sign(-1)^(n b)times the evident reindexing. The final conjunct is the homogeneous differential calculation: before inserting this degree-dependent sign, the target differential is(-1)^btimes the reindexed source differential.
noncomputable def homComplexShiftIso (R : Type*) [CommRing R]
(M K : CochainComplex (ModuleCat R) ℤ) (a b : ℤ) :
{ e : (CochainComplex.HomComplexR R M K)⟦a - b⟧ ≅
CochainComplex.HomComplexR R (M⟦b⟧) (K⟦a⟧) //
let H := CochainComplex.HomComplexR R M K
let T := CochainComplex.HomComplexR R (M⟦b⟧) (K⟦a⟧)
let reindex : ∀ n : ℤ, Cochain M K n → Cochain (M⟦b⟧) (K⟦a⟧) (n + (b - a)) :=
fun n z ↦ Cochain.mk fun p q _ ↦
(M.shiftFunctorObjXIso b p (p + b) rfl).hom ≫
z.v (p + b) (q + a) (by omega) ≫
(K.shiftFunctorObjXIso a q (q + a) rfl).inv
let g : H ⟶ T⟦b - a⟧ :=
(shiftFunctorCompIsoId _ (a - b) (b - a) (by omega)).inv.app H ≫ e.hom⟦b - a⟧'
(∀ (n : ℤ) (z : Cochain M K n),
(T.shiftFunctorObjXIso (b - a) n (n + (b - a)) rfl).hom.hom ((g.f n).hom z) =
(n * b).negOnePow • reindex n z) ∧
(∀ (n : ℤ) (z : Cochain M K n),
(T.shiftFunctorObjXIso (b - a) (n + 1) (n + 1 + (b - a)) rfl).hom.hom
(((T⟦b - a⟧).d n (n + 1)).hom
((T.shiftFunctorObjXIso (b - a) n (n + (b - a)) rfl).inv.hom
(reindex n z))) =
b.negOnePow • reindex (n + 1) (δ n (n + 1) z)) }
Sources
Section15.75 Derived hom#
Section 15.75 of the Stacks Project, Tag 0A5W. 8 tags here are carried by 18 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0A63, an equation
Tag 0A63 in the Stacks Project.
StacksDraft.DerivedHom.homInternalHomEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/DerivedAdjunction.lean, line 2909.
Stacks 0A63. The canonical characterization equation in
D(R):Hom(K, RHom(L, M)) ≃+ Hom(K ⊗ᴸ L, M). The bifunctors and the equivalence are transported from the fixed K-flat/K-injective construction, with compatibility given byderivedTensorULiftIsoandderivedHomULiftIso. No adjunction or scalar equivalence is supplied as a parameter. The ring, module enlargement, and derived-morphism universes are independent.
public noncomputable def homInternalHomEquiv {R : Type u} [CommRing R]
[HasDerivedCategory.{w} (ModuleCat.{max u v} R)]
(K L M : DerivedCategory (ModuleCat.{max u v} R)) :
(K ⟶ (derivedHomAdjunctionOverRing R).hom.obj (Opposite.op L, M)) ≃+
((derivedHomAdjunctionOverRing R).tensor.obj (K, L) ⟶ M)
Tag 0A64, an equation
Tag 0A64 in the Stacks Project.
homComplex_of_isKInjective_represents_RHom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 272.
Stacks 0A64. If
Iis K-injective, then the degree-ncohomology of the Hom complexHom^•(L, I)is canonically identified with the morphismsL ⟶ I⟦n⟧in the derived category; equivalently, whenIrepresentsM, this isHⁿ(RHom(L, M)) = Hom(L, M⟦n⟧).
theorem homComplex_of_isKInjective_represents_RHom (L I : CochainComplex C ℤ) [I.IsKInjective]
(n : ℤ) :
Function.Bijective
(fun (c : CochainComplex.HomComplex.CohomologyClass L I n) ↦
DerivedCategory.Qh.map
(CochainComplex.HomComplex.CohomologyClass.homAddEquiv c))
Tag 0A65, a lemma
Tag 0A65 in the Stacks Project.
StacksDraft.DerivedHom.derivedHomCurrying, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/DerivedAdjunction.lean, line 3927. References: SGA 6 I (7.4), “affine case, 1st iso”; SGA 7 VIII (1.1), “(1.1.2) in D(R)”.
Stacks 0A65. Derived Hom satisfies the canonical currying isomorphism
RHom(K, RHom(L, M)) ≅ RHom(K ⊗ᴸ L, M), functorially inK,L, andM. On K-flat/K-injective representatives this is the Hom-complex currying map of Stacks 0A5Y. On degree-zero cohomology this is the derived tensor--Hom equivalence of Stacks 0A63.
public noncomputable def derivedHomCurrying {R : Type u} [CommRing R]
[HasDerivedCategory.{v} (ModuleCat.{u} R)] :
DerivedHomCurrying (derivedHomAdjunction (R := R))
Tag 0A66, a lemma
Tag 0A66 in the Stacks Project.
StacksDraft.DerivedHom.projectiveHomComparison, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/ProjectiveRHom.lean, line 387.
Stacks 0A66. A bounded-above complex of projective modules computes the derived internal Hom against every target complex. The comparison is natural in both variables, recovers the defining K-injective model, and hence is the comparison induced by a K-injective resolution in the proof of the source lemma.
def projectiveHomComparison {R : Type u} [CommRing R]
[HasDerivedCategory.{w} (ModuleCat.{u} R)] : ProjectiveHomComparison R
StacksDraft.DerivedHom.projectiveHomComparisonULift, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/ProjectiveRHom.lean, line 403.
The comparison of Stacks 0A66 in an independently chosen module universe. The lifted ring is canonically isomorphic to
R, and retains all naturality and model comparisons.
abbrev projectiveHomComparisonULift {R : Type u} [CommRing R]
[HasDerivedCategory.{w} (ModuleCat.{max u v} (ULift.{v} R))] :
ProjectiveHomComparison (ULift.{v} R)
cohomologyClassRHomAddEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 293.
Stacks 0A66. Let
Pbe a bounded above complex of projectiveR-modules andLa complex ofR-modules. The degree-ncohomology classes ofHom^•(P, L)are canonically isomorphic as abelian groups toHom_{D(R)}(P, L⟦n⟧), the isomorphism sending a class to the image underDerivedCategory.Qhof the corresponding morphismP ⟶ L⟦n⟧in the homotopy category. This is the assertion thatHom^•(P, L)representsRHom_R(P, L).
noncomputable def cohomologyClassRHomAddEquiv (P L : CochainComplex (ModuleCat R) ℤ) (d n : ℤ)
[P.IsStrictlyLE d] [∀ i, CategoryTheory.Projective (P.X i)] :
CochainComplex.HomComplex.CohomologyClass P L n ≃+
(DerivedCategory.Qh.obj
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).obj P) ⟶
DerivedCategory.Qh.obj
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).obj (L⟦n⟧)))
homComplexHomologyRHomAddEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 319.
Stacks 0A66. The comparison isomorphism of [stacks 0A66] read on the homology of the Hom complex: for
Pa bounded above complex of projectiveR-modules,Hⁿ(Hom^•(P, L)) ≃+ Hom_{D(R)}(P, L⟦n⟧), soHom^•(P, L)representsRHom_R(P, L).
noncomputable def homComplexHomologyRHomAddEquiv (P L : CochainComplex (ModuleCat R) ℤ)
(d n : ℤ) [P.IsStrictlyLE d] [∀ i, CategoryTheory.Projective (P.X i)] :
(P.HomComplex L).homology n ≃+
(DerivedCategory.Qh.obj
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).obj P) ⟶
DerivedCategory.Qh.obj
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).obj (L⟦n⟧)))
homComplex_represents_RHom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 353. References: SGA 4 XVII (5.5.6.3), “more general”; SGA 4½ Rapport (4.3), “more general”; SGA 5 IIIB (5.7), “partial”; SGA 6 I (7.1.1), “partial”.
Stacks 0A66. Let
Pbe a bounded above complex of projectiveR-modules andLa complex ofR-modules. For everyn : ℤ, the map from degree-ncohomology classes ofHom^•(P, L)toHom_{D(R)}(P, L⟦n⟧), sending a class to the image underDerivedCategory.Qhof the corresponding morphismP ⟶ L⟦n⟧in the homotopy category, is bijective; that is,Hom^•(P, L)representsRHom_R(P, L).This is the pointwise shadow of
cohomologyClassRHomAddEquiv, from which it is derived.
theorem homComplex_represents_RHom (P L : CochainComplex (ModuleCat R) ℤ) (d n : ℤ)
[P.IsStrictlyLE d] [∀ i, CategoryTheory.Projective (P.X i)] :
Function.Bijective
(fun (c : CochainComplex.HomComplex.CohomologyClass P L n) =>
DerivedCategory.Qh.map (CochainComplex.HomComplex.CohomologyClass.homAddEquiv c))
cohomologyClassRHomAddEquiv_naturality_left, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 366.
Stacks 0A66. Naturality of the comparison isomorphism in the first variable: for
f : P' ⟶ Pa morphism of bounded above complexes of projectives, the square formed bycohomologyClassRHomAddEquivatPand atP', precomposition byfon cohomology classes, and precomposition by the image offinD(R)commutes. ThusHom^•(-, L)representsRHom_R(-, L)contravariantly.
theorem cohomologyClassRHomAddEquiv_naturality_left (P P' L : CochainComplex (ModuleCat R) ℤ)
(f : P' ⟶ P) (d d' n : ℤ) [P.IsStrictlyLE d] [∀ i, CategoryTheory.Projective (P.X i)]
[P'.IsStrictlyLE d'] [∀ i, CategoryTheory.Projective (P'.X i)]
(c : CochainComplex.HomComplex.CohomologyClass P L n) :
cohomologyClassRHomAddEquiv P' L d' n (cohomologyClassPrecomp f L n c) =
DerivedCategory.Qh.map
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).map f) ≫
cohomologyClassRHomAddEquiv P L d n c
cohomologyClassRHomAddEquiv_naturality_right, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 384.
Stacks 0A66. Naturality of the comparison isomorphism in the second variable: for
g : L ⟶ L'the square formed bycohomologyClassRHomAddEquivatLand atL', postcomposition bygon cohomology classes, and postcomposition by the image ofg⟦n⟧'inD(R)commutes. ThusHom^•(P, -)representsRHom_R(P, -)covariantly.
theorem cohomologyClassRHomAddEquiv_naturality_right (P L L' : CochainComplex (ModuleCat R) ℤ)
(g : L ⟶ L') (d n : ℤ) [P.IsStrictlyLE d] [∀ i, CategoryTheory.Projective (P.X i)]
(c : CochainComplex.HomComplex.CohomologyClass P L n) :
cohomologyClassRHomAddEquiv P L' d n (cohomologyClassPostcomp P g n c) =
cohomologyClassRHomAddEquiv P L d n c ≫
DerivedCategory.Qh.map
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).map (g⟦n⟧'))
homComplexRHom_isKInjective_model_comm, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 402.
Stacks 0A66. Compatibility of the two routes to
RHom: forg : L ⟶ IwithIK-injective, the square whose left edge is the comparison of [stacks 0A66] for(P, L), whose right edge is the comparison of [stacks 0A64] for(P, I), whose top edge is the map on cohomology classes induced byg, and whose bottom edge is postcomposition with the image ofg⟦n⟧'inD(R), commutes. No quasi-isomorphism hypothesis is needed for commutativity.
theorem homComplexRHom_isKInjective_model_comm (P L I : CochainComplex (ModuleCat R) ℤ)
(g : L ⟶ I) [I.IsKInjective] (d n : ℤ) [P.IsStrictlyLE d]
[∀ i, CategoryTheory.Projective (P.X i)]
(c : CochainComplex.HomComplex.CohomologyClass P L n) :
cohomologyClassRHomAddEquivOfIsKInjective P I n (cohomologyClassPostcomp P g n c) =
cohomologyClassRHomAddEquiv P L d n c ≫
DerivedCategory.Qh.map
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).map (g⟦n⟧'))
homComplexRHom_eq_isKInjective_model_route, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/RHom.lean, line 419.
Stacks 0A66. The comparison of [stacks 0A66] is computed by the comparison of [stacks 0A64] through a K-injective model: if
g : L ⟶ Iis a quasi-isomorphism withIK-injective, then the bottom edge of the square ofhomComplexRHom_isKInjective_model_commis invertible, and the [stacks 0A66] comparison for(P, L)is the [stacks 0A64] comparison for(P, I)applied to the transported class, followed by that inverse. So the two representability statements agree.
theorem homComplexRHom_eq_isKInjective_model_route (P L I : CochainComplex (ModuleCat R) ℤ)
(g : L ⟶ I) [I.IsKInjective] [QuasiIso g] (d n : ℤ) [P.IsStrictlyLE d]
[∀ i, CategoryTheory.Projective (P.X i)]
(c : CochainComplex.HomComplex.CohomologyClass P L n) :
cohomologyClassRHomAddEquiv P L d n c =
cohomologyClassRHomAddEquivOfIsKInjective P I n (cohomologyClassPostcomp P g n c) ≫
CategoryTheory.inv (DerivedCategory.Qh.map
((HomotopyCategory.quotient (ModuleCat R) (ComplexShape.up ℤ)).map (g⟦n⟧')))
Dualizing.homComplexRHomologyLinearEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Dualizing/RelativeBaseChangeAssemblyLinear.lean, line 99.
[stacks 0A66] read on the derived category,
S-linearly. ForPa bounded above complex of projectiveS-modules andLany complex, the degree-ncohomology of theS-linear Hom complexHom^•_S(P, L)is the module of morphismsP ⟶ L⟦n⟧inD(S), asS-modules.This is
Dualizing.homComplexRHomologyAddEquivwith theS-action checked. The comparison runs through the cohomology classes of the Hom complex of the underlying abelian groups, where noS-action is available, so the equivariance is read on representatives: a class inH^n(Hom^•_S(P, L))is the class of a cocycle (Dualizing.LocalDuality.homComplexRHomologyAddEquiv_cyclesMk), theS-action onH^nis the action on cocycles, and the passage from a cocycle to a morphism in the homotopy category isS-linear becauseCochainComplex.HomComplex.Cocycle.equivHomShiftis and becauseHomotopyCategory.quotientandDerivedCategory.QhareS-linear functors.
def homComplexRHomologyLinearEquiv (P L : CochainComplex (ModuleCat.{u} S) ℤ) (d n : ℤ)
[P.IsStrictlyLE d] [∀ i, Projective (P.X i)] :
((CochainComplex.HomComplexR S P L).homology n : Type u) ≃ₗ[S]
(DerivedCategory.Q.obj P ⟶
(CategoryTheory.shiftFunctor (DerivedCategory (ModuleCat.{u} S)) n).obj
(DerivedCategory.Q.obj L))
Tag 0A67, a lemma
Tag 0A67 in the Stacks Project.
StacksDraft.DerivedHom.exists_evaluationToIteratedDerivedHom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/DerivedAdjunction.lean, line 4019.
Stacks 0A67. There is a canonical morphism
RHom_R(L, M) ⊗ᴸ_R K ⟶ RHom_R(RHom_R(K, L), M)for arbitrary objects ofD(R), natural in all three objects. On K-flat and K-injective representatives it is induced by the chain-level evaluation map of Stacks Tag 0A60 through the standard comparison isomorphisms.
public theorem exists_evaluationToIteratedDerivedHom :
let D := derivedHomAdjunction (R := R)
let e₀ := ChainEvaluation.chainEvaluation
∃ e : ∀ (K L M : DerivedCategory (ModuleCat R)),
D.tensor.obj (D.hom.obj (Opposite.op L, M), K) ⟶
D.hom.obj (Opposite.op (D.hom.obj (Opposite.op K, L)), M),
(∀ {K K' L M : DerivedCategory (ModuleCat R)} (f : K ⟶ K'),
D.tensor.map (𝟙 (D.hom.obj (Opposite.op L, M)), f) ≫ e K' L M =
e K L M ≫ D.hom.map
((D.hom.map (f.op, 𝟙 L)).op, 𝟙 M)) ∧
(∀ {K L L' M : DerivedCategory (ModuleCat R)} (f : L ⟶ L'),
D.tensor.map (D.hom.map (f.op, 𝟙 M), 𝟙 K) ≫ e K L M =
e K L' M ≫ D.hom.map
((D.hom.map (𝟙 (Opposite.op K), f)).op, 𝟙 M)) ∧
(∀ {K L M M' : DerivedCategory (ModuleCat R)} (f : M ⟶ M'),
D.tensor.map (D.hom.map (𝟙 (Opposite.op L), f), 𝟙 K) ≫ e K L M' =
e K L M ≫ D.hom.map
(𝟙 (Opposite.op (D.hom.obj (Opposite.op K, L))), f)) ∧
(∀ (K L M : CochainComplex (ModuleCat R) ℤ) (hK : K.KFlat)
[L.IsKInjective] [M.IsKInjective],
D.tensor.map ((D.homIso L M).hom, 𝟙 (DerivedCategory.Q.obj K)) ≫
(D.tensorIso (HomComplexR R L M) K hK).hom ≫
DerivedCategory.Q.map (e₀ K L M) ≫
(D.homIso (HomComplexR R K L) M).inv ≫
D.hom.map ((D.homIso K L).hom.op, 𝟙 (DerivedCategory.Q.obj M)) =
e (DerivedCategory.Q.obj K) (DerivedCategory.Q.obj L)
(DerivedCategory.Q.obj M))
Tag 0A8J, a lemma
Tag 0A8J in the Stacks Project.
StacksDraft.DerivedHom.derivedInternalHomComposition_natural, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/DerivedComposition.lean, line 48.
Stacks 0A8J. The canonical composition morphisms
RHom(L, M) ⊗ᴸ RHom(K, L) ⟶ RHom(K, M)inD(R)are contravariantly natural inK, dinatural inL, and covariantly natural inM.
theorem derivedInternalHomComposition_natural
(R : Type u) [CommRing R] [HasDerivedCategory (ModuleCat R)] :
(∀ {K K' L M : DerivedCategory (ModuleCat R)} (f : K' ⟶ K),
(DerivedInternalHom.Model.tensor R).map
(𝟙 ((DerivedInternalHom.Model.hom R).obj (Opposite.op L, M)),
(DerivedInternalHom.Model.hom R).map (f.op, 𝟙 L)) ≫
DerivedInternalHom.Model.composition K' L M =
DerivedInternalHom.Model.composition K L M ≫
(DerivedInternalHom.Model.hom R).map (f.op, 𝟙 M)) ∧
(∀ {K L L' M : DerivedCategory (ModuleCat R)} (f : L' ⟶ L),
(DerivedInternalHom.Model.tensor R).map
((DerivedInternalHom.Model.hom R).map (f.op, 𝟙 M),
𝟙 ((DerivedInternalHom.Model.hom R).obj (Opposite.op K, L'))) ≫
DerivedInternalHom.Model.composition K L' M =
(DerivedInternalHom.Model.tensor R).map
((𝟙 ((DerivedInternalHom.Model.hom R).obj (Opposite.op L, M)),
((DerivedInternalHom.Model.hom R).map (𝟙 (Opposite.op K), f) :
(DerivedInternalHom.Model.hom R).obj (Opposite.op K, L') ⟶
(DerivedInternalHom.Model.hom R).obj (Opposite.op K, L))) :
((DerivedInternalHom.Model.hom R).obj (Opposite.op L, M),
(DerivedInternalHom.Model.hom R).obj (Opposite.op K, L')) ⟶
((DerivedInternalHom.Model.hom R).obj (Opposite.op L, M),
(DerivedInternalHom.Model.hom R).obj (Opposite.op K, L))) ≫
DerivedInternalHom.Model.composition K L M) ∧
(∀ {K L M M' : DerivedCategory (ModuleCat R)} (f : M ⟶ M'),
(DerivedInternalHom.Model.tensor R).map
((DerivedInternalHom.Model.hom R).map (𝟙 (Opposite.op L), f),
𝟙 ((DerivedInternalHom.Model.hom R).obj (Opposite.op K, L))) ≫
DerivedInternalHom.Model.composition K L M' =
DerivedInternalHom.Model.composition K L M ≫
(DerivedInternalHom.Model.hom R).map (𝟙 (Opposite.op K), f))
Tag 0BYN, a lemma
Tag 0BYN in the Stacks Project.
StacksDraft.DerivedHom.derivedTensorHomDiagonal, an alias in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/DerivedTensorHom.lean, line 66.
Stacks 0BYN. The canonical morphism
K ⊗ᴸ RHom(M, L) ⟶ RHom(M, K ⊗ᴸ L)in the derived category.
alias derivedTensorHomDiagonal
StacksDraft.DerivedHom.derivedTensorHomDiagonal_natural, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/DerivedTensorHom.lean, line 71.
Stacks 0BYN. The derived tensor--Hom diagonal is covariantly natural in
KandLand contravariantly natural inM.
theorem derivedTensorHomDiagonal_natural :
(∀ {K K' L M : DerivedCategory (ModuleCat R)} (f : K ⟶ K'),
(DerivedInternalHom.Model.tensor R).map
(f, 𝟙 ((DerivedInternalHom.Model.hom R).obj (Opposite.op M, L))) ≫
derivedTensorHomDiagonal K' L M =
derivedTensorHomDiagonal K L M ≫
(DerivedInternalHom.Model.hom R).map
(𝟙 (Opposite.op M), (DerivedInternalHom.Model.tensor R).map (f, 𝟙 L))) ∧
(∀ {K L L' M : DerivedCategory (ModuleCat R)} (f : L ⟶ L'),
(DerivedInternalHom.Model.tensor R).map
(𝟙 K, (DerivedInternalHom.Model.hom R).map (𝟙 (Opposite.op M), f)) ≫
derivedTensorHomDiagonal K L' M =
derivedTensorHomDiagonal K L M ≫
(DerivedInternalHom.Model.hom R).map
(𝟙 (Opposite.op M), (DerivedInternalHom.Model.tensor R).map (𝟙 K, f))) ∧
(∀ {K L M M' : DerivedCategory (ModuleCat R)} (f : M' ⟶ M),
(DerivedInternalHom.Model.tensor R).map
(𝟙 K, (DerivedInternalHom.Model.hom R).map (f.op, 𝟙 L)) ≫
derivedTensorHomDiagonal K L M' =
derivedTensorHomDiagonal K L M ≫
(DerivedInternalHom.Model.hom R).map
(f.op, 𝟙 ((DerivedInternalHom.Model.tensor R).obj (K, L))))
Tag 0A6B, a lemma
Tag 0A6B in the Stacks Project.
StacksDraft.DerivedHom.derivedTensorHomCoevaluation_natural, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/HomComplex/DerivedTensorHom.lean, line 100.
Stacks 0A6B. The canonical morphism
K ⟶ RHom(L, K ⊗ᴸ L)is the transpose of the identity onK ⊗ᴸ L; it is covariantly natural inKand dinatural inL.
theorem derivedTensorHomCoevaluation_natural :
(∀ (K L : DerivedCategory (ModuleCat R)),
DerivedInternalHom.Model.homEquiv K L ((DerivedInternalHom.Model.tensor R).obj (K, L))
(DerivedInternalHom.Model.coevaluation K L) =
𝟙 ((DerivedInternalHom.Model.tensor R).obj (K, L))) ∧
(∀ {K K' L : DerivedCategory (ModuleCat R)} (f : K ⟶ K'),
f ≫ DerivedInternalHom.Model.coevaluation K' L =
DerivedInternalHom.Model.coevaluation K L ≫
(DerivedInternalHom.Model.hom R).map
(𝟙 (Opposite.op L), (DerivedInternalHom.Model.tensor R).map (f, 𝟙 L))) ∧
(∀ {K L L' : DerivedCategory (ModuleCat R)} (g : L ⟶ L'),
DerivedInternalHom.Model.coevaluation K L' ≫
(DerivedInternalHom.Model.hom R).map
((g.op, 𝟙 ((DerivedInternalHom.Model.tensor R).obj (K, L'))) :
(Opposite.op L', (DerivedInternalHom.Model.tensor R).obj (K, L')) ⟶
(Opposite.op L, (DerivedInternalHom.Model.tensor R).obj (K, L'))) =
DerivedInternalHom.Model.coevaluation K L ≫
(DerivedInternalHom.Model.hom R).map
((𝟙 (Opposite.op L), (DerivedInternalHom.Model.tensor R).map (𝟙 K, g)) :
(Opposite.op L, (DerivedInternalHom.Model.tensor R).obj (K, L)) ⟶
(Opposite.op L, (DerivedInternalHom.Model.tensor R).obj (K, L'))))
Sources
Section15.76 Perfect complexes#
Section 15.76 of the Stacks Project, Tag 0656. 18 tags here are carried by 19 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0657, a definition
Tag 0657 in the Stacks Project.
StacksDraft.Perfect.IsPerfect, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Defs.lean, line 48. The attribute's comment: “(1)”. References: SGA 6 I (4.8), “affine (ring) case”; SGA 6 II (2.2.1), “affine case, perfect”.
Stacks 0657 (1). An object of the derived category of
R-modules is perfect if it is isomorphic to a bounded complex of finite projectiveR-modules.
def IsPerfect {R : Type u} [Ring R]
[HasDerivedCategory.{w} (ModuleCat.{v} R)]
(K : DerivedCategory (ModuleCat.{v} R)) : Prop
StacksDraft.Perfect.IsPerfectModule, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Defs.lean, line 62. The attribute's comment: “(2)”. References: SGA 6 I (4.8), “affine case, module”; SGA 6 II (2.2.1), “affine, degree-0 module”.
Stacks 0657 (2). An
R-module is perfect if the complex consisting of it placed in degree zero is a perfect object of the derived category ofR-modules.
def IsPerfectModule {R : Type u} [Ring R]
(M : Type v) [AddCommGroup M] [Module R M]
[HasDerivedCategory.{w} (ModuleCat.{v} R)] : Prop
Tag 0658, a lemma
Tag 0658 in the Stacks Project.
StacksDraft.Perfect.isPerfect_iff_pseudoCoherent_and_finiteTorDimension, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Basic.lean, line 1055. References: SGA 5 VIII (8.1), “commutative rings only”; SGA 6 I (5.8.1), “module over a ring”; SGA 6 I (5.8), “special case”.
Stacks 0658. An object of
D(R)is perfect if and only if it is pseudo-coherent and has finite Tor dimension, the latter being recorded by the existence of a bounded flat representative. Moreover a pseudo-coherent object whose Tor amplitude lies in[a, b]is represented by a complex of finite projective modules concentrated in the degrees[a, b].
theorem isPerfect_iff_pseudoCoherent_and_finiteTorDimension
{R : Type u} [CommRing R] (K : DerivedCategory (ModuleCat.{max u v} R)) :
(IsPerfect K ↔
StacksDraft.PseudoCoherence.IsPseudoCoherent K ∧
∃ a b : ℤ, HasFlatRepresentative K a b) ∧
∀ a b : ℤ, StacksDraft.PseudoCoherence.IsPseudoCoherent K →
HasFlatRepresentative K a b →
∃ E : CochainComplex (ModuleCat.{max u v} R) ℤ,
(∀ i : ℤ, Module.Finite R (E.X i) ∧ Module.Projective R (E.X i)) ∧
E.IsStrictlyGE a ∧ E.IsStrictlyLE b ∧
Nonempty (K ≅ DerivedCategory.Q.obj E)
Tag 066Q, a lemma
Tag 066Q in the Stacks Project.
StacksDraft.Perfect.isPerfectModule_iff_exists_finite_projective_resolution, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Module.lean, line 200.
Stacks 066Q. An
R-module is perfect if and only if it has a finite resolution by finite projectiveR-modules.
theorem isPerfectModule_iff_exists_finite_projective_resolution
{R : Type u} [CommRing R] (M : Type v) [AddCommGroup M] [Module R M] :
IsPerfectModule (R := R) M ↔
∃ (d : ℕ) (F : ModuleResolution R M),
(∀ i : ℕ, Module.Finite R (F.complex.X i) ∧ Module.Projective R (F.complex.X i)) ∧
∀ i : ℕ, d < i → IsZero (F.complex.X i)
Tag 066R, a lemma
Tag 066R in the Stacks Project.
StacksDraft.Perfect.isPerfect_of_distinguished, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Basic.lean, line 219.
Stacks 066R. In a distinguished triangle in
D(R), if two of the three objects are perfect, then so is the third.
theorem isPerfect_of_distinguished
{R : Type u} [Ring R]
(T : Triangle (DerivedCategory (ModuleCat.{v} R)))
(hT : T ∈ distinguishedTriangles) :
(IsPerfect T.obj₁ → IsPerfect T.obj₂ → IsPerfect T.obj₃) ∧
(IsPerfect T.obj₁ → IsPerfect T.obj₃ → IsPerfect T.obj₂) ∧
(IsPerfect T.obj₂ → IsPerfect T.obj₃ → IsPerfect T.obj₁)
Tag 066S, a lemma
Tag 066S in the Stacks Project.
StacksDraft.Perfect.isPerfect_of_biproduct, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Basic.lean, line 918.
Stacks 066S. If a binary biproduct of objects of
D(R)is perfect, then both summands are perfect. Perfectness passes to the summands at arbitrary carrier universes: a small projective coefficient quotient supporting the given bounded complex supplies the internal descent.
theorem isPerfect_of_biproduct
{R : Type u} [CommRing R] (K L : DerivedCategory (ModuleCat.{v} R))
(h : IsPerfect (K ⊞ L)) :
IsPerfect K ∧ IsPerfect L
Tag 066T, a lemma
Tag 066T in the Stacks Project.
StacksDraft.Perfect.isPerfect_of_bounded_of_isPerfectModule, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Basic.lean, line 283.
Stacks 066T. A bounded complex of perfect modules over a ring represents a perfect object of the derived category.
theorem isPerfect_of_bounded_of_isPerfectModule
{R : Type u} [CommRing R]
(K : CochainComplex (ModuleCat.{v} R) ℤ)
(hK : ∃ a b : ℤ, K.IsStrictlyGE a ∧ K.IsStrictlyLE b)
(hP : ∀ i : ℤ, IsPerfectModule (R := R) (K.X i)) :
IsPerfect (DerivedCategory.Q.obj K)
Tag 066U, a lemma
Tag 066U in the Stacks Project.
StacksDraft.Perfect.isPerfect_of_bounded_of_cohomology_isPerfect, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Basic.lean, line 405. References: SGA 6 I (4.15), “special case”.
Stacks 066U. A bounded object of the derived category of modules whose cohomology modules are all perfect is itself perfect.
theorem isPerfect_of_bounded_of_cohomology_isPerfect
{R : Type u} [CommRing R] (K : DerivedCategory (ModuleCat.{v} R))
(hK : (∃ a : ℤ, K.IsGE a) ∧ ∃ b : ℤ, K.IsLE b)
(hH : ∀ i : ℤ,
IsPerfectModule (R := R)
((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) :
IsPerfect K
Tag 066V, a lemma
Tag 066V in the Stacks Project.
StacksDraft.Perfect.isPerfect_restrictScalars_of_isPerfectModule, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/BaseChange.lean, line 184.
Stacks 066V. Let
f : A → Bbe a homomorphism of commutative rings and assume thatBis perfect as anA-module. Then every perfect complex ofB-modules is perfect as a complex ofA-modules.
theorem isPerfect_restrictScalars_of_isPerfectModule
(hB : IsPerfectModule (R := A)
((ModuleCat.restrictScalars.{uB} f).obj (ModuleCat.of B B)))
(K : CochainComplex (ModuleCat.{uB} B) ℤ)
(hK : IsPerfect (DerivedCategory.Q.obj K)) :
IsPerfect (DerivedCategory.Q.obj
(((ModuleCat.restrictScalars.{uB} f).mapHomologicalComplex (ComplexShape.up ℤ)).obj K))
Tag 066W, a lemma
Tag 066W in the Stacks Project.
StacksDraft.Perfect.isPerfect_derivedExtensionScalars, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/BaseChange.lean, line 261.
Stacks 066W. Let
f : A → Bbe a homomorphism of commutative rings and letKbe a perfect object ofD(A). Then the derived base changeK ⊗_A^L Bis a perfect object ofD(B).
theorem isPerfect_derivedExtensionScalars (f : A →+* B)
(K : DerivedCategory (ModuleCat.{max v uA uB} A)) (hK : IsPerfect K) :
IsPerfect ((CochainComplex.DerivedExtensionScalars.totalDerivedExtensionScalars.{uA, uB, v}
f).functor.obj K)
Tag 066X, a lemma
Tag 066X in the Stacks Project.
StacksDraft.Perfect.isPerfectModule_tensorProduct_of_flat, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Module.lean, line 270.
Stacks 066X. Flat base change preserves perfect modules.
theorem isPerfectModule_tensorProduct_of_flat
{A : Type u} {B : Type v} [CommRing A] [CommRing B] [Algebra A B]
(M : Type w) [AddCommGroup M] [Module A M] [Module.Flat A B]
(hM : IsPerfectModule (R := A) M) :
IsPerfectModule (R := B) (B ⊗[A] M)
Tag 0GM0, a lemma
Tag 0GM0 in the Stacks Project.
StacksDraft.Perfect.isPerfect_derivedTensorProduct, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Duality/TensorProductTorAmplitude.lean, line 151. References: SGA 6 I (4.19), “D(R), R a ring”.
Stacks 0GM0. The derived tensor product of two perfect objects of
D(A)is perfect.
theorem isPerfect_derivedTensorProduct
(K L : DerivedCategory (ModuleCat.{max u v} (ULift.{v} R)))
(hK : IsPerfect K) (hL : IsPerfect L) :
IsPerfect ((derivedHomData (R := R)).tensor.obj (K, L))
Tag 066Y, a lemma
Tag 066Y in the Stacks Project.
StacksDraft.Perfect.isPerfect_of_localizationSpan, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Local.lean, line 287.
Let
Rbe a commutative ring, let the elementsf igenerate the unit ideal, and letKbe an object of the derived category ofR-modules. If the derived localizationK ⊗_R R_{f i}is perfect for everyi, thenKis perfect.
theorem isPerfect_of_localizationSpan {R : Type u} [CommRing R] {ι : Type*} [Finite ι]
(f : ι → R) (hf : Ideal.span (Set.range f) = ⊤)
(K : DerivedCategory (ModuleCat.{max u v} R))
(hK : ∀ i, IsPerfect ((PseudoCoherence.localizationAwayFunctorAux.{u, v} (f i)).obj K)) :
IsPerfect K
Tag 068T, a lemma
Tag 068T in the Stacks Project.
StacksDraft.Perfect.isPerfect_of_faithfullyFlat_baseChange, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Local.lean, line 618.
Let
R → Sbe a faithfully flat map of commutative rings and letKbe a complex ofR-modules. IfK ⊗_R Sis perfect, thenKis perfect.
theorem isPerfect_of_faithfullyFlat_baseChange
{R : Type u} {S : Type v} [CommRing R] [CommRing S]
(f : R →+* S) (hf : f.FaithfullyFlat)
(K : CochainComplex (ModuleCat.{max u v w} R) ℤ)
(hK : IsPerfect
(DerivedCategory.Q.obj
(((ModuleCat.extendScalars.{u, v, max u v w} f).mapHomologicalComplex
(ComplexShape.up ℤ)).obj K))) :
IsPerfect (DerivedCategory.Q.obj K)
Tag 066Z, a lemma
Tag 066Z in the Stacks Project.
StacksDraft.Perfect.isPerfectModule_iff_finite_and_isPerfect_iff_bounded_finiteCohomology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Regular.lean, line 247.
Stacks 066Z. Over a regular ring, perfect modules are precisely finite modules, and perfect derived objects are precisely the bounded objects with finite cohomology modules.
theorem isPerfectModule_iff_finite_and_isPerfect_iff_bounded_finiteCohomology
{R : Type u} [CommRing R] [IsRegularRing R] :
(∀ (M : Type (max u v)) [AddCommGroup M] [Module R M],
IsPerfectModule (R := R) M ↔ Module.Finite R M) ∧
(∀ K : DerivedCategory (ModuleCat.{max u v} R),
IsPerfect K ↔
((∃ a : ℤ, K.IsGE a) ∧ (∃ b : ℤ, K.IsLE b) ∧
∀ i : ℤ,
Module.Finite R
((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) i).obj K)))
Tag 07VI, a lemma
Tag 07VI in the Stacks Project.
StacksDraft.Perfect.isPerfect_derivedDual_and_naturalIsos, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Duality/TensorHom.lean, line 652. References: SGA 6 I (7.7), “affine case”; SGA 6 I (7.3), “affine (ring) case”.
Stacks 07VI. Let
Abe a ring and letKbe a perfect object ofD(A). Then the derived dualKᵛ = RHom_A(K, A)is perfect, the canonical morphismK ⟶ (Kᵛ)ᵛis an isomorphism, the canonical comparisonL ⊗_A^L Kᵛ ⟶ RHom_A(K, L)is an isomorphism functorially inL, andH⁰(L ⊗_A^L Kᵛ) = Ext⁰_A(K, L)functorially inL.
theorem isPerfect_derivedDual_and_naturalIsos
(K : DerivedCategory (ModuleCat.{max u v} (ULift.{v} R))) (hK : IsPerfect K) :
PerfectDerivedDuality K
Tag 0H81, a remark
Tag 0H81 in the Stacks Project.
StacksDraft.Perfect.hasFlatRepresentative_derivedDual, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Duality/TensorProductTorAmplitude.lean, line 227. References: SGA 6 I (7.3), “finite Tor-dim stability”.
Stacks 0H81. If a perfect complex has Tor amplitude in
[a, b]-- that is, a flat representative supported in[a, b]-- then its derived dual has Tor amplitude in[-b, -a].
theorem hasFlatRepresentative_derivedDual
(K : DerivedCategory (ModuleCat.{max u v} (ULift.{v} A)))
(hK : IsPerfect K) {a b : ℤ}
(hKamp : HasFlatRepresentative K a b) :
HasFlatRepresentative (derivedDual K) (-b) (-a)
Tag 0BKB, a lemma
Tag 0BKB in the Stacks Project.
StacksDraft.Perfect.isDerivedLimit_derivedHom_of_isHomotopyColimit, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/SystemDuality.lean, line 443.
If
Kis a homotopy colimit of a sequential system of perfect derived objectsKₙ, thenRHomₐ(K, E)is a derived inverse limit of the inverse systemE ⊗ᴸ Kₙᵛ.
theorem isDerivedLimit_derivedHom_of_isHomotopyColimit
(Ksys : ℕ ⥤ DerivedCategory (ModuleCat.{max u v} A)) [HasCoproduct Ksys.obj]
(hperfect : ∀ n : ℕ, IsPerfect (Ksys.obj n))
(K E : DerivedCategory (ModuleCat.{max u v} A)) (hK : IsHomotopyColimit Ksys K)
[HasProduct fun n : ℕ ↦ (dualTensorSystem A Ksys E).obj (Opposite.op n)] :
IsDerivedLimit (dualTensorSystem A Ksys E)
((derivedHomAdjunctionOverRing A).hom.obj (Opposite.op K, E))
Tag 0BC7, a lemma
Tag 0BC7 in the Stacks Project.
StacksDraft.Perfect.perfectComplexes_filteredColimit, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Colimit/HomColimit.lean, line 839.
Stacks 0BC7. Let
R : I ⥤ CommRingCatbe a filtered system of commutative rings whose colimit is computed on underlying sets, and letcbe a colimit cocone. WritingE ffor the canonical total derived extension of scalars- ⊗ᴸ_A Balongf : A →+* B([stacks 064H]), the following two statements hold.First, every perfect object
Kof the derived category ofc.pt-modules descends to a finite stage: there are an indexiand a perfect objectKᵢoverR.obj iwithK ≅ (E (c.ι.app i)).functor.obj Kᵢ.Second, morphisms out of a perfect complex commute with the filtered colimit. Fix a stage
i₀and objectsK₀,L₀overR.obj i₀withK₀perfect. Then derived extension of scalars carries a composition isomorphismcompcompatible with the scalar-extension tower on complexes, and the morphisms(E (c.ι.app i₀)).functor.obj K₀ ⟶ (E (c.ι.app i₀)).functor.obj L₀over the colimit ring form the filtered colimit, over the stagesjabovei₀, of the morphisms(E (R.map j.hom)).functor.obj K₀ ⟶ (E (R.map j.hom)).functor.obj L₀over those stages, with the transition maps and the maps to the colimit given by derived extension of scalars conjugated bycomp.
public theorem perfectComplexes_filteredColimit
{I : Type uI} [Category.{uI} I] [IsFiltered I]
(R : I ⥤ CommRingCat.{uR}) [PreservesColimit R (forget CommRingCat.{uR})]
(c : Cocone R) (hc : IsColimit c) :
let E := fun {A B : Type uR} [CommRing A] [CommRing B] (f : A →+* B) ↦
totalDerivedExtensionScalars.{uR, uR, uR} f
let D := fun {i j : I} (f : i ⟶ j) ↦ E (R.map f).hom
let Dlim := fun (i : I) ↦ E (c.ι.app i).hom
(∀ (K : DerivedCategory (ModuleCat.{uR} c.pt)), IsPerfect K →
∃ (i : I) (Kᵢ : DerivedCategory (ModuleCat.{uR} (R.obj i))),
IsPerfect Kᵢ ∧ Nonempty (K ≅ (Dlim i).functor.obj Kᵢ)) ∧
(∀ (i₀ : I) (K₀ L₀ : DerivedCategory (ModuleCat.{uR} (R.obj i₀))),
IsPerfect K₀ →
∃ (comp : ∀ {A B C : Type uR} [CommRing A] [CommRing B] [CommRing C]
(f : A →+* B) (g : B →+* C),
(E f).functor ⋙ (E g).functor ≅ (E (g.comp f)).functor),
(∀ {A B C : Type uR} [CommRing A] [CommRing B] [CommRing C]
(f : A →+* B) (g : B →+* C)
(P : CochainComplex (ModuleCat.{uR} A) ℤ),
(E g).functor.map ((E f).comparison.app P) ≫
(E g).comparison.app
(((ModuleCat.extendScalars.{uR, uR, uR} f).mapHomologicalComplex
(ComplexShape.up ℤ)).obj P) ≫
(extensionOfScalarsComplexComp.{uR} f g).inv.app P =
(comp f g).hom.app (DerivedCategory.Q.obj P) ≫
(E (g.comp f)).comparison.app P) ∧
∃ (H : Under i₀ ⥤ Type (uR + 1))
(eH : ∀ j : Under i₀,
H.obj j ≃ ((D j.hom).functor.obj K₀ ⟶ (D j.hom).functor.obj L₀))
(s : Cocone H)
(eTarget : s.pt ≃ ((Dlim i₀).functor.obj K₀ ⟶ (Dlim i₀).functor.obj L₀))
(_hs : IsColimit s),
(∀ {j k : Under i₀} (w : j ⟶ k) (x : H.obj j),
let h : (R.map w.right).hom.comp (R.map j.hom).hom = (R.map k.hom).hom :=
by
ext x
calc
_ = (R.map (j.hom ≫ w.right)).hom x :=
(congrArg (fun q : R.obj i₀ ⟶ R.obj k.right ↦ q.hom x)
(R.map_comp j.hom w.right)).symm
_ = _ := by rw [w.w]
let stageComp := comp (R.map j.hom).hom (R.map w.right).hom ≪≫
derivedExtensionScalarsCongr.{uR} E h
eH k (H.map w x) =
stageComp.inv.app K₀ ≫
(D w.right).functor.map (eH j x) ≫
stageComp.hom.app L₀) ∧
(∀ (j : Under i₀)
(g : (D j.hom).functor.obj K₀ ⟶ (D j.hom).functor.obj L₀),
let h : (c.ι.app j.right).hom.comp (R.map j.hom).hom = (c.ι.app i₀).hom :=
congrArg CommRingCat.Hom.hom (c.w j.hom)
let limitComp := comp (R.map j.hom).hom (c.ι.app j.right).hom ≪≫
derivedExtensionScalarsCongr.{uR} E h
eTarget (s.ι.app j ((eH j).symm g)) =
limitComp.inv.app K₀ ≫ (Dlim j.right).functor.map g ≫
limitComp.hom.app L₀))
Sources
Section15.77 Lifting complexes#
Section 15.77 of the Stacks Project, Tag 0BC8. 9 tags here are carried by 9 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0BC9, a lemma
Tag 0BC9 in the Stacks Project.
LiftAcyclic.exists_lift_acyclic_complex, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/LiftAcyclicComplex.lean, line 895.
Stacks 0BC9. A bounded above acyclic complex of
R/I-modules with terms of the formP/IPhas a bounded above acyclic lift overRwith terms satisfyingP, whose reduction is isomorphic to the given complex as a complex ofR/I-modules.
theorem exists_lift_acyclic_complex
(P : ModuleCat.{max v u} R → Prop)
(hPprojective : ∀ M, P M → Module.Projective R M)
(hPcomplement : ∀ M₁ M₂, P M₁ → P (M₁ ⊞ M₂) → P M₂)
(hPsurjective : ∀ (M₁ M₂ : ModuleCat.{max v u} R) (f : M₁ ⟶ M₂),
P M₁ → P M₂ →
Function.Surjective
(((ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).map f).hom) →
Function.Surjective f.hom)
(E : CochainComplex (ModuleCat.{max v u} (R ⧸ I)) ℤ)
(hbdd : ∃ b, E.IsStrictlyLE b) (hac : ∀ i, E.ExactAt i)
(hterms : ∀ i, ∃ M, P M ∧ Nonempty
(E.X i ≅ (ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).obj M)) :
∃ PC : CochainComplex (ModuleCat.{max v u} R) ℤ,
(∀ i, P (PC.X i)) ∧ (∃ b, PC.IsStrictlyLE b) ∧
(∀ i, PC.ExactAt i) ∧
Nonempty
(((ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).mapHomologicalComplex
(ComplexShape.up ℤ)).obj PC ≅ E)
Tag 0BCA, a lemma
Tag 0BCA in the Stacks Project.
StacksDraft.Perfect.exists_boundedAbove_lift_representing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Lifting.lean, line 792.
Stacks 0BCA. Let
I ⊆ Rand letPbe a class of projectiveR-modules, closed under finite direct sums and complementary summands, such that surjectivity moduloIlifts to surjectivity. A bounded above complexEofR / I-modules whose terms are reductions of modules inP, and which representsK ⊗ᴸ[R] R / I, lifts to a bounded above complex with terms inPrepresentingK, providedKalready has some such representative.
theorem exists_boundedAbove_lift_representing
{R : Type u} [CommRing R] (I : Ideal R)
(P : ModuleCat.{max v u} R → Prop)
(K : DerivedCategory (ModuleCat.{max v u} R))
(E : CochainComplex (ModuleCat.{max v u} (R ⧸ I)) ℤ)
(hPprojective : ∀ M, P M → Module.Projective R M)
(hPsum : ∀ M₁ M₂, (P M₁ ∧ P (M₁ ⊞ M₂)) ↔ (P M₁ ∧ P M₂))
(hPsurjective : ∀ (M₁ M₂ : ModuleCat.{max v u} R) (f : M₁ ⟶ M₂),
P M₁ → P M₂ →
Function.Surjective
(((ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).map f).hom) →
Function.Surjective f.hom)
(hEbdd : ∃ b, E.IsStrictlyLE b)
(hEterms : ∀ i, ∃ M, P M ∧ Nonempty
(E.X i ≅
(ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).obj M))
(hErep : Nonempty
((DerivedCategory.Q).obj E ≅
(totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk I)).functor.obj K))
(hKrep : ∃ KC : CochainComplex (ModuleCat.{max v u} R) ℤ,
(∀ i, P (KC.X i)) ∧ (∃ b, KC.IsStrictlyLE b) ∧
Nonempty ((DerivedCategory.Q).obj KC ≅ K)) :
∃ PC : CochainComplex (ModuleCat.{max v u} R) ℤ,
(∀ i, P (PC.X i)) ∧
(∃ b, PC.IsStrictlyLE b) ∧
Nonempty
(((ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).mapHomologicalComplex
(ComplexShape.up ℤ)).obj PC ≅ E) ∧
Nonempty ((DerivedCategory.Q).obj PC ≅ K)
Tag 09AR, a lemma
Tag 09AR in the Stacks Project.
StacksDraft.Perfect.exists_boundedAbove_projective_lift_representing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/NilpotentLifting.lean, line 698. References: SGA 5 XV (3.Lemma1), “existence of L', v, w”.
Stacks 09AR. Let
Ibe a nilpotent ideal of a commutative ringRand letKbe an object ofD(R). A bounded above complexEof projectiveR ⧸ I-modules representingK ⊗ᴸ[R] R ⧸ Ilifts to a bounded above complexPof projectiveR-modules representingK, withP ⊗[R] R ⧸ Iisomorphic toE.
public theorem exists_boundedAbove_projective_lift_representing
{R : Type u} [CommRing R] (I : Ideal R)
(E : CochainComplex (ModuleCat.{max v u} (R ⧸ I)) ℤ)
(K : DerivedCategory (ModuleCat.{max v u} R))
(hEbdd : ∃ b : ℤ, E.IsStrictlyLE b)
(hEprojective : ∀ i : ℤ, Module.Projective (R ⧸ I) (E.X i))
(hErep : Nonempty
((DerivedCategory.Q).obj E ≅
(totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk I)).functor.obj K))
(hI : IsNilpotent I) :
∃ P : CochainComplex (ModuleCat.{max v u} R) ℤ,
(∃ b : ℤ, P.IsStrictlyLE b) ∧
(∀ i : ℤ, Module.Projective R (P.X i)) ∧
Nonempty ((DerivedCategory.Q).obj P ≅ K) ∧
Nonempty
(((ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).mapHomologicalComplex
(ComplexShape.up ℤ)).obj P ≅ E)
Tag 0H76, a lemma
Tag 0H76 in the Stacks Project.
StacksDraft.Perfect.isPseudoCoherent_derivedExtensionScalars_iff, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/NilpotentLifting.lean, line 811. References: SGA 6 I (2.16.2), “(i), punctual”.
Stacks 0H76. Derived extension of scalars along a surjective map of commutative rings with nilpotent kernel preserves and reflects pseudo-coherence.
Preservation is [stacks 0650]. Reflection is [stacks 09AR]: a bounded above finite projective representative of the reduction, which exists by [stacks 064U], lifts to a bounded above projective representative of
K, whose terms are finite because their extensions of scalars are and the kernel is nilpotent.
public theorem isPseudoCoherent_derivedExtensionScalars_iff
{R' R : Type u} [CommRing R'] [CommRing R] (f : R' →+* R)
(hf : Function.Surjective f) (hnil : IsNilpotent (RingHom.ker f))
(K : DerivedCategory (ModuleCat.{max v u} R')) :
PseudoCoherence.IsPseudoCoherent
((totalDerivedExtensionScalars.{u, u, v} f).functor.obj K) ↔
PseudoCoherence.IsPseudoCoherent K
Tag 0BCB, a lemma
Tag 0BCB in the Stacks Project.
StacksDraft.Perfect.exists_boundedAbove_isStablyFree_lift_representing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Lifting.lean, line 1054.
Stacks 0BCB. Let
I ⊆ Rbe an ideal every element of whose coset1 + Iis a unit. A bounded above complexEof finite stably freeR ⧸ I-modules representingK ⊗ᴸ[R] R ⧸ I, for a pseudo-coherent objectKofD(R), lifts to a bounded above complexPof finite stably freeR-modules representingKwithP ⊗[R] R ⧸ Iisomorphic toE. MoreoverPis free in every degree in whichEis free.
theorem exists_boundedAbove_isStablyFree_lift_representing
{R : Type u} [CommRing R] (I : Ideal R)
(K : DerivedCategory (ModuleCat.{max v u} R))
(E : CochainComplex (ModuleCat.{max v u} (R ⧸ I)) ℤ)
(hEbdd : ∃ b, E.IsStrictlyLE b)
(hEterms : ∀ i, Module.Finite (R ⧸ I) (E.X i) ∧ Module.IsStablyFree (R ⧸ I) (E.X i))
(hErep : Nonempty ((DerivedCategory.Q).obj E ≅
(totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk I)).functor.obj K))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K)
(hI : ∀ x ∈ I, IsUnit (1 + x)) :
∃ P : CochainComplex (ModuleCat.{max v u} R) ℤ,
(∀ i, Module.Finite R (P.X i) ∧ Module.IsStablyFree R (P.X i)) ∧
(∃ b, P.IsStrictlyLE b) ∧
Nonempty
(((ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).mapHomologicalComplex
(ComplexShape.up ℤ)).obj P ≅ E) ∧
Nonempty ((DerivedCategory.Q).obj P ≅ K) ∧
(∀ i, Module.Free (R ⧸ I) (E.X i) → Module.Free R (P.X i))
Tag 0BCC, a lemma
Tag 0BCC in the Stacks Project.
StacksDraft.Perfect.exists_unique_boundedAbove_free_complex_representing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/MinimalRepresentative/LocalRing.lean, line 562.
Stacks 0BCC. Let
Kbe a pseudo-coherent object of the derived category of a commutative local ringRwith residue fieldκ. Its cohomology after derived extension of scalars toκis finite dimensional in every degree and vanishes above some degreeb. MoreoverKis represented by a complex vanishing abovebwhose term in degreeiis free of rankdim_κ Hⁱ(K ⊗ᴸ_R κ), and any two complexes with these prescribed terms representingKare isomorphic as complexes.
theorem exists_unique_boundedAbove_free_complex_representing
{R : Type u} [CommRing R] [IsLocalRing R]
(K : DerivedCategory (ModuleCat.{max v u} R))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K) :
let k := IsLocalRing.ResidueField R
let H := fun i : ℤ =>
(DerivedCategory.homologyFunctor (ModuleCat.{max v u} k) i).obj
((totalDerivedExtensionScalars.{u, u, v} (IsLocalRing.residue R)).functor.obj K)
let IsModel := fun P : CochainComplex (ModuleCat.{max v u} R) ℤ =>
(∀ i, Nonempty (P.X i ≅
ModuleCat.of R (ULift.{v} (Fin (Module.finrank k (H i)) → R)))) ∧
Nonempty ((DerivedCategory.Q).obj P ≅ K)
(∀ i, Module.Finite k (H i)) ∧
∃ b : ℤ, (∀ i, b < i → IsZero (H i)) ∧
∃ P : CochainComplex (ModuleCat.{max v u} R) ℤ,
P.IsStrictlyLE b ∧ IsModel P ∧
∀ F G, IsModel F → IsModel G → Nonempty (F ≅ G)
Tag 0BCD, a lemma
Tag 0BCD in the Stacks Project.
StacksDraft.Perfect.exists_away_bounded_free_complex_representing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/MinimalRepresentative/PrincipalNeighbourhood.lean, line 322.
Stacks 0BCD. Let
Rbe a commutative ring,pa prime ofRandKa perfect object ofD(R). The dimensionsdᵢ = dim_{κ(p)} Hⁱ(K ⊗ᴸ_R κ(p))are finite and only finitely many of them are nonzero, and there is anf ∈ Routsideptogether with a strictly bounded complex overR_fwhose term in degreeiis free of rank exactlydᵢand which representsK ⊗ᴸ_R R_f.
theorem exists_away_bounded_free_complex_representing
{R : Type u} [CommRing R] (p : Ideal R) [p.IsPrime]
(K : DerivedCategory (ModuleCat.{max v u} R)) (hK : IsPerfect K) :
let k := p.ResidueField
let H := fun i : ℤ =>
(DerivedCategory.homologyFunctor (ModuleCat.{max v u} k) i).obj
((totalDerivedExtensionScalars.{u, u, v} (algebraMap R k)).functor.obj K)
(∀ i, Module.Finite k (H i)) ∧
{i | Module.finrank k (H i) ≠ 0}.Finite ∧
∃ f : R, f ∉ p ∧
∃ (P : CochainComplex (ModuleCat.{max v u} (Localization.Away f)) ℤ) (a b : ℤ),
P.IsStrictlyGE a ∧ P.IsStrictlyLE b ∧
(∀ i, Nonempty (P.X i ≅ ModuleCat.of (Localization.Away f)
(ULift.{v} (Fin (Module.finrank k (H i)) → Localization.Away f)))) ∧
Nonempty ((DerivedCategory.Q).obj P ≅
(totalDerivedExtensionScalars.{u, u, v}
(algebraMap R (Localization.Away f))).functor.obj K)
Tag 0F9V, a lemma
Tag 0F9V in the Stacks Project.
StacksDraft.Perfect.exists_away_iso_biprod_trivial_complexes, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/MinimalRepresentative/TrivialSummands.lean, line 596.
Stacks 0F9V. Two bounded complexes of finite projective modules representing isomorphic derived objects become isomorphic as complexes over some principal localization, after adjoining finite direct sums of trivial two-term complexes on both sides.
theorem exists_away_iso_biprod_trivial_complexes
{R : Type u} [CommRing R] (p : Ideal R) [p.IsPrime]
(M N : CochainComplex (ModuleCat.{max v u} R) ℤ)
(hMbounded : ∃ a b : ℤ, M.IsStrictlyGE a ∧ M.IsStrictlyLE b)
(hNbounded : ∃ a b : ℤ, N.IsStrictlyGE a ∧ N.IsStrictlyLE b)
(hMterms : ∀ i, Module.Finite R (M.X i) ∧ Projective (M.X i))
(hNterms : ∀ i, Module.Finite R (N.X i) ∧ Projective (N.X i))
(hMN : Nonempty ((DerivedCategory.Q).obj M ≅ (DerivedCategory.Q).obj N)) :
∃ f : R, f ∉ p ∧
let S := Localization.Away f
let F := (ModuleCat.extendScalars.{u, u, max v u} (algebraMap R S)).mapHomologicalComplex
(ComplexShape.up ℤ)
let IsTrivialSum := fun P : CochainComplex (ModuleCat.{max v u} S) ℤ =>
∃ (n : ℕ) (degree : Fin n → ℤ),
Nonempty (P ≅ ∏ᶜ fun j => CochainComplex.mappingCone
(𝟙 ((CochainComplex.singleFunctor (ModuleCat.{max v u} S) (degree j)).obj
(ModuleCat.of S (ULift.{v} S)))))
∃ P Q : CochainComplex (ModuleCat.{max v u} S) ℤ,
IsTrivialSum P ∧ IsTrivialSum Q ∧ Nonempty (F.obj M ⊞ P ≅ F.obj N ⊞ Q)
Tag 0BCE, a lemma
Tag 0BCE in the Stacks Project.
StacksDraft.Perfect.exists_boundedAbove_finiteProjective_lift_representing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/NilpotentLifting.lean, line 267.
Stacks 0BCE. Let
(R, I)be a henselian pair and letKbe a pseudo-coherent object ofD(R). A bounded above complexEof finite projectiveR ⧸ I-modules representingK ⊗ᴸ[R] R ⧸ Ilifts to a bounded above complexPof finite projectiveR-modules representingKwithP ⊗[R] R ⧸ Iisomorphic toE. MoreoverPis free in every degree in whichEis free.
theorem exists_boundedAbove_finiteProjective_lift_representing
{R : Type u} [CommRing R] (I : Ideal R)
(K : DerivedCategory (ModuleCat.{max v u} R))
(E : CochainComplex (ModuleCat.{max v u} (R ⧸ I)) ℤ)
(hEbdd : ∃ b, E.IsStrictlyLE b)
(hEterms : ∀ i,
Module.Finite (R ⧸ I) (E.X i) ∧ Module.Projective (R ⧸ I) (E.X i))
(hErep : Nonempty
((DerivedCategory.Q).obj E ≅
(totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk I)).functor.obj K))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K)
(hI : HenselianPair R I) :
∃ P : CochainComplex (ModuleCat.{max v u} R) ℤ,
(∀ i, Module.Finite R (P.X i) ∧ Module.Projective R (P.X i)) ∧
(∃ b, P.IsStrictlyLE b) ∧
Nonempty
(((ModuleCat.extendScalars.{u, u, max v u} (Ideal.Quotient.mk I)).mapHomologicalComplex
(ComplexShape.up ℤ)).obj P ≅ E) ∧
Nonempty ((DerivedCategory.Q).obj P ≅ K) ∧
(∀ i, Module.Free (R ⧸ I) (E.X i) → Module.Free R (P.X i))
Sources
Section15.78 Splitting complexes#
Section 15.78 of the Stacks Project, Tag 0BCF. 6 tags here are carried by 6 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0BCG, a lemma
Tag 0BCG in the Stacks Project.
StacksDraft.ProjectiveAmplitude.hom_eq_zero_and_existsUnique_iso_biprod, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/ProjectiveAmplitude.lean, line 181.
Stacks 0BCG. If
Lhas projective amplitude in[a, b], then every morphism fromLto an object whose cohomology vanishes in all degrees≥ ais zero. A distinguished triangleK ⟶ M ⟶ L ⟶ K⟦1⟧has a splittingM ≅ K ⊞ Lcompatible with its maps as soon as the cohomology ofKvanishes in all degrees≥ a + 1; if it vanishes in all degrees≥ a, that compatible splitting is moreover unique.
theorem hom_eq_zero_and_existsUnique_iso_biprod
{R : Type u} [Ring R] (K L : DerivedCategory (ModuleCat.{v} R)) (a b : ℤ)
(hL : HasProjectiveAmplitude L a b) :
((∀ i : ℤ, a ≤ i → IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) →
∀ f : L ⟶ K, f = 0) ∧
((∀ i : ℤ, a + 1 ≤ i →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) →
∀ (M : DerivedCategory (ModuleCat.{v} R)) (f : K ⟶ M) (g : M ⟶ L)
(h : L ⟶ K⟦(1 : ℤ)⟧),
Triangle.mk f g h ∈ distTriang _ →
∃ e : M ≅ K ⊞ L, f ≫ e.hom = biprod.inl ∧ g = e.hom ≫ biprod.snd) ∧
((∀ i : ℤ, a ≤ i → IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{v} R) i).obj K)) →
∀ (M : DerivedCategory (ModuleCat.{v} R)) (f : K ⟶ M) (g : M ⟶ L)
(h : L ⟶ K⟦(1 : ℤ)⟧),
Triangle.mk f g h ∈ distTriang _ →
∃! e : M ≅ K ⊞ L, f ≫ e.hom = biprod.inl ∧ g = e.hom ≫ biprod.snd)
Tag 0A1U, a lemma
Tag 0A1U in the Stacks Project.
StacksDraft.Perfect.exists_localization_perfect_truncGE_and_iso_biprod, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/FibreCriterion/BaseChangeSurjective.lean, line 328.
Let
Rbe a ring,p ⊂ Ra prime andKa pseudo-coherent object ofD(R). If for somei ∈ ℤthe mapH^i(K) ⊗_R κ(p) → H^i(K ⊗_R^L κ(p))is surjective, then there isf ∈ R,f ∉ p, such thatτ_{≥ i+1}(K ⊗_R R_f)is a perfect object ofD(R_f)with Tor amplitude in[i + 1, ∞], together with a canonical isomorphismK ⊗_R R_f ≅ τ_{≤ i}(K ⊗_R R_f) ⊕ τ_{≥ i+1}(K ⊗_R R_f)inD(R_f).
theorem exists_localization_perfect_truncGE_and_iso_biprod
{R : Type u} [CommRing R] (p : Ideal R) [p.IsPrime]
(K : DerivedCategory (ModuleCat.{max u v} R))
(_hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K) (i : ℤ)
(hbase : CohomologyBaseChangeSurjective.{u, v} p K i) :
∃ f : R, f ∉ p ∧
let Kf := (PseudoCoherence.localizationAwayFunctorAux.{u, v} f).obj K
let upper := (DerivedCategory.TStructure.t.truncGE (i + 1)).obj Kf
let lower := (DerivedCategory.TStructure.t.truncLE i).obj Kf
IsPerfect upper ∧
(∃ (P : CochainComplex (ModuleCat.{max u v} (Localization.Away f)) ℤ) (b : ℤ),
P.IsStrictlyGE (i + 1) ∧ P.IsStrictlyLE b ∧
(∀ j : ℤ, Module.Finite (Localization.Away f) (P.X j)) ∧
(∀ j : ℤ, Module.Projective (Localization.Away f) (P.X j)) ∧
Nonempty (upper ≅ DerivedCategory.Q.obj P) ∧
∀ (M : ModuleCat.{max u v} (Localization.Away f)) (j : ℤ), j < i + 1 →
IsZero ((TorAmplitude.tensorComplex P M).homology j)) ∧
∃! e : Kf ≅ lower ⊞ upper,
(DerivedCategory.TStructure.t.truncLEι i).app Kf ≫ e.hom = biprod.inl ∧
(DerivedCategory.TStructure.t.truncGEπ (i + 1)).app Kf = e.hom ≫ biprod.snd
Tag 0A1V, a lemma
Tag 0A1V in the Stacks Project.
StacksDraft.Perfect.exists_localization_finite_free_homology_and_iso_biprod, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/FibreCriterion/ThreeTermSplitting.lean, line 615.
Let
Rbe a ring,p ⊂ Ra prime andKa pseudo-coherent object ofD(R). If for somei ∈ ℤboth mapsH^i(K) ⊗_R κ(p) → H^i(K ⊗_R^L κ(p))andH^{i-1}(K) ⊗_R κ(p) → H^{i-1}(K ⊗_R^L κ(p))are surjective, then there isf ∈ R,f ∉ p, such that
τ_{≥ i+1}(K ⊗_R R_f)is a perfect object ofD(R_f)with Tor amplitude in[i + 1, ∞],H^i(K)_fis a finite freeR_f-module, and- there is a canonical direct sum decomposition
K ⊗_R R_f ≅ τ_{≤ i-1}(K ⊗_R R_f) ⊕ H^i(K)_f[-i] ⊕ τ_{≥ i+1}(K ⊗_R R_f)inD(R_f).
theorem exists_localization_finite_free_homology_and_iso_biprod
{R : Type u} [CommRing R] (p : Ideal R) [p.IsPrime]
(K : DerivedCategory (ModuleCat.{max u v} R))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K) (i : ℤ)
(hbase_i : CohomologyBaseChangeSurjective.{u, v} p K i)
(hbase_prev : CohomologyBaseChangeSurjective.{u, v} p K (i - 1)) :
∃ f : R, f ∉ p ∧
let Rf := Localization.Away f
let Kf := (PseudoCoherence.localizationAwayFunctorAux.{u, v} f).obj K
let upper := (DerivedCategory.TStructure.t.truncGE (i + 1)).obj Kf
let lower := (DerivedCategory.TStructure.t.truncLE (i - 1)).obj Kf
let HiLocalized :=
(ModuleCat.extendScalars (algebraMap R Rf)).obj
((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) i).obj K)
let middle :=
(DerivedCategory.singleFunctor (ModuleCat.{max u v} Rf) i).obj HiLocalized
let comparison := (localizationAwayHomologyFunctorIso.{u, v} f i).app K
IsPerfect upper ∧
(∃ (P : CochainComplex (ModuleCat.{max u v} Rf) ℤ) (b : ℤ),
P.IsStrictlyGE (i + 1) ∧ P.IsStrictlyLE b ∧
(∀ j : ℤ, Module.Finite Rf (P.X j)) ∧
(∀ j : ℤ, Module.Projective Rf (P.X j)) ∧
Nonempty (upper ≅ DerivedCategory.Q.obj P) ∧
∀ (M : ModuleCat.{max u v} Rf) (j : ℤ), j < i + 1 →
IsZero ((TorAmplitude.tensorComplex P M).homology j)) ∧
Module.Finite Rf HiLocalized ∧ Module.Free Rf HiLocalized ∧
∃! e : Kf ≅ (lower ⊞ middle) ⊞ upper,
(DerivedCategory.TStructure.t.truncLEι (i - 1)).app Kf ≫ e.hom =
biprod.inl ≫ biprod.inl ∧
(DerivedCategory.TStructure.t.truncGEπ (i + 1)).app Kf =
e.hom ≫ biprod.snd ∧
(DerivedCategory.homologyFunctor (ModuleCat.{max u v} Rf) i).map e.hom ≫
(DerivedCategory.homologyFunctor (ModuleCat.{max u v} Rf) i).map biprod.fst ≫
(DerivedCategory.homologyFunctor (ModuleCat.{max u v} Rf) i).map biprod.snd ≫
(DerivedCategory.singleFunctorCompHomologyFunctorIso
(ModuleCat.{max u v} Rf) i).hom.app HiLocalized = comparison.hom
Tag 068U, a lemma
Tag 068U in the Stacks Project.
StacksDraft.Perfect.exists_localization_iso_biprod_truncGE_truncLE, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/FibreCriterion/FibreCohomologyVanishing.lean, line 708.
Let
Rbe a ring,p ⊂ Ra prime,i ∈ ℤand letKbe a pseudo-coherent object ofD(R)withH^i(K ⊗_R^L κ(p)) = 0. Then there isf ∈ R,f ∉ p, and a canonical direct sum decompositionK ⊗_R R_f = τ_{≥ i+1}(K ⊗_R R_f) ⊕ τ_{≤ i-1}(K ⊗_R R_f)inD(R_f), in whichτ_{≥ i+1}(K ⊗_R R_f)is a perfect complex with Tor amplitude in[i + 1, ∞].
theorem exists_localization_iso_biprod_truncGE_truncLE
{R : Type u} [CommRing R] (p : Ideal R) [p.IsPrime]
(K : DerivedCategory (ModuleCat.{max u v} R))
(_hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K) (i : ℤ)
(hfibre : FibreCohomologyVanishes.{u, v} p K i) :
∃ f : R, f ∉ p ∧
let Kf := (PseudoCoherence.localizationAwayFunctorAux.{u, v} f).obj K
let upper := (DerivedCategory.TStructure.t.truncGE (i + 1)).obj Kf
let lower := (DerivedCategory.TStructure.t.truncLE (i - 1)).obj Kf
IsPerfect upper ∧
(∃ (P : CochainComplex (ModuleCat.{max u v} (Localization.Away f)) ℤ) (b : ℤ),
P.IsStrictlyGE (i + 1) ∧ P.IsStrictlyLE b ∧
(∀ j : ℤ, Module.Finite (Localization.Away f) (P.X j)) ∧
(∀ j : ℤ, Module.Projective (Localization.Away f) (P.X j)) ∧
Nonempty (upper ≅ DerivedCategory.Q.obj P) ∧
∀ (M : ModuleCat.{max u v} (Localization.Away f)) (j : ℤ), j < i + 1 →
IsZero ((TorAmplitude.tensorComplex P M).homology j)) ∧
∃! e : Kf ≅ upper ⊞ lower,
(DerivedCategory.TStructure.t.truncGEπ (i + 1)).app Kf = e.hom ≫ biprod.fst ∧
(DerivedCategory.TStructure.t.truncLEι (i - 1)).app Kf ≫ e.hom = biprod.inr
Tag 0G97, a lemma
Tag 0G97 in the Stacks Project.
StacksDraft.ProjectiveAmplitude.existsUnique_iso_biprod_truncations_of_ext_map_injective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/ProjectiveAmplitude.lean, line 294.
Stacks 0G97. Let
Kbe a bounded above object ofD(R)and letabe an integer. Assume that for every injectiveR-module mapM ⟶ M'the induced mapExt^{-a}(K, M) ⟶ Ext^{-a}(K, M')is injective. Thenτ_{≥ a + 1}Khas projective amplitude in[a + 1, b]for someb, and there is a unique direct sum decompositionK ≅ τ_{≤ a}K ⊞ τ_{≥ a + 1}Kcompatible with the two canonical truncation maps.
theorem existsUnique_iso_biprod_truncations_of_ext_map_injective
{R : Type u} [Ring R] (K : DerivedCategory (ModuleCat.{max u v} R)) (a : ℤ)
(hK : ∃ n : ℤ, K.IsLE n)
(hExt : ∀ (M M' : ModuleCat.{max u v} R) (f : M ⟶ M'), Mono f →
Function.Injective (fun x : DerivedCategory.Ext K
((DerivedCategory.singleFunctor (ModuleCat.{max u v} R) 0).obj M) (-a) ↦
x.comp (ShiftedHom.mk₀ 0 rfl
((DerivedCategory.singleFunctor (ModuleCat.{max u v} R) 0).map f)) (zero_add _))) :
∃ b : ℤ,
HasProjectiveAmplitude
((DerivedCategory.TStructure.t.truncGE (a + 1)).obj K) (a + 1) b ∧
∃! e : K ≅
((DerivedCategory.TStructure.t.truncLE a).obj K ⊞
(DerivedCategory.TStructure.t.truncGE (a + 1)).obj K),
(DerivedCategory.TStructure.t.truncLEι a).app K ≫ e.hom = biprod.inl ∧
(DerivedCategory.TStructure.t.truncGEπ (a + 1)).app K =
e.hom ≫ biprod.snd
Tag 0G98, a lemma
Tag 0G98 in the Stacks Project.
StacksDraft.ProjectiveAmplitude.existsUnique_iso_biprod_truncations_of_ext_vanishing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/ProjectiveAmplitude.lean, line 401.
Stacks 0G98. Let
Kbe a bounded above object ofD(R)and letabe an integer. AssumeExt^{-a}(K, M) = 0for everyR-moduleM. Thenτ_{≥ a + 1}Khas projective amplitude in[a + 1, b]for someb, and there is a unique direct sum decompositionK ≅ τ_{≤ a - 1}K ⊞ τ_{≥ a + 1}Kcompatible with the two canonical truncation maps.
theorem existsUnique_iso_biprod_truncations_of_ext_vanishing
{R : Type u} [Ring R] (K : DerivedCategory (ModuleCat.{max u v} R)) (a : ℤ)
(hK : ∃ n : ℤ, K.IsLE n)
(hExt : ∀ M : ModuleCat.{max u v} R,
Subsingleton (DerivedCategory.Ext K
((DerivedCategory.singleFunctor (ModuleCat.{max u v} R) 0).obj M) (-a))) :
∃ b : ℤ,
HasProjectiveAmplitude
((DerivedCategory.TStructure.t.truncGE (a + 1)).obj K) (a + 1) b ∧
∃! e : K ≅
((DerivedCategory.TStructure.t.truncLE (a - 1)).obj K ⊞
(DerivedCategory.TStructure.t.truncGE (a + 1)).obj K),
(DerivedCategory.TStructure.t.truncLEι (a - 1)).app K ≫ e.hom = biprod.inl ∧
(DerivedCategory.TStructure.t.truncGEπ (a + 1)).app K =
e.hom ≫ biprod.snd
Sources
Section15.79 Recognizing perfect complexes#
Section 15.79 of the Stacks Project, Tag 0G99. 6 tags here are carried by 6 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0BYP, a lemma
Tag 0BYP in the Stacks Project.
StacksDraft.Perfect.exists_away_bounded_free_complex_representing_of_fibre_vanishing_below, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/MinimalRepresentative/PrincipalNeighbourhood.lean, line 756.
Stacks 0BYP. Let
Rbe a commutative ring,pa prime ofRandKa pseudo-coherent object ofD(R)which is bounded below. Setdᵢ = dim_{κ(p)} Hⁱ(K ⊗ᴸ_R κ(p)). Ifdᵢ = 0for alli < a, then there is anf ∈ Routsidepsuch thatK ⊗ᴸ_R R_fis perfect and is represented by a complex overR_fconcentrated in degrees[a, b]whose term in degreeiis free of rank exactlydᵢ.
theorem exists_away_bounded_free_complex_representing_of_fibre_vanishing_below
{R : Type u} [CommRing R] (p : Ideal R) [p.IsPrime]
(K : DerivedCategory (ModuleCat.{max v u} R))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K)
(hbounded : ∃ c : ℤ, K.IsGE c) (a : ℤ) :
let k := p.ResidueField
let H := fun i : ℤ =>
(DerivedCategory.homologyFunctor (ModuleCat.{max v u} k) i).obj
((totalDerivedExtensionScalars.{u, u, v} (algebraMap R k)).functor.obj K)
(∀ i : ℤ, i < a → IsZero (H i)) →
∃ f : R, f ∉ p ∧
let Kf := (totalDerivedExtensionScalars.{u, u, v}
(algebraMap R (Localization.Away f))).functor.obj K
IsPerfect Kf ∧
∃ (P : CochainComplex (ModuleCat.{max v u} (Localization.Away f)) ℤ) (b : ℤ),
P.IsStrictlyGE a ∧ P.IsStrictlyLE b ∧
(∀ i : ℤ, Nonempty (P.X i ≅ ModuleCat.of (Localization.Away f)
(ULift.{v} (Fin (Module.finrank k (H i)) → Localization.Away f)))) ∧
Nonempty (DerivedCategory.Q.obj P ≅ Kf)
Tag 068V, a lemma
Tag 068V in the Stacks Project.
StacksDraft.Perfect.isPerfect_and_torAmplitude_iff_fibreCohomologyVanishes, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Local.lean, line 854.
Let
Rbe a commutative ring, leta, b : ℤand letKbe a pseudo-coherent object of the derived category ofR-modules. ThenKis perfect of Tor amplitude in[a, b]if and only if the cohomology of the derived fibreK ⊗_R^L κ(p)vanishes outside[a, b]for every prime idealp, and it is enough to test this at the maximal ideals.Tor amplitude in
[a, b]is expressed, as in [stacks 0658], by the existence of a flat representative supported in[a, b]; by [stacks 0654] this is exactly Tor amplitude in[a, b], and the third clause spells that out: every bounded above flat representative ofK— which is what computesK ⊗_R^L M— has vanishing cohomology outside[a, b]after tensoring with an arbitrary module.
theorem isPerfect_and_torAmplitude_iff_fibreCohomologyVanishes {R : Type u} [CommRing R]
(K : DerivedCategory (ModuleCat.{max u v} R))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K) (a b : ℤ) :
let perfectWithTorAmplitude :=
IsPerfect K ∧ HasFlatRepresentative K a b ∧
∀ E : CochainComplex (ModuleCat.{max u v} R) ℤ, TorAmplitude.BoundedAbove E →
TorAmplitude.IsComplexOfFlats E → Nonempty (K ≅ DerivedCategory.Q.obj E) →
TorAmplitude.HasTorAmplitudeIn E a b
let primeVanishes := ∀ q : PrimeSpectrum R, ∀ i : ℤ, i < a ∨ b < i →
FibreCohomologyVanishes.{u, v} q.asIdeal K i
let maximalVanishes := ∀ m : MaximalSpectrum R, ∀ i : ℤ, i < a ∨ b < i →
FibreCohomologyVanishes.{u, v} m.asIdeal K i
(perfectWithTorAmplitude ↔ primeVanishes) ∧ (primeVanishes ↔ maximalVanishes)
Tag 068W, a lemma
Tag 068W in the Stacks Project.
StacksDraft.Perfect.isPerfect_iff_isPerfect_at_primes_of_isBoundedBelow_and_stalkwise_criteria, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Local.lean, line 1250.
Let
Rbe a commutative ring and letKbe a pseudo-coherent object of the derived category ofR-modules. ThenKperfect implies that every stalkK ⊗_R^L R_pis perfect; perfectness at all prime stalks, perfectness at all maximal stalks, and the vanishing of the cohomology of the derived fibreK ⊗_R^L κ(p)in all sufficiently low degrees at every prime or at every maximal ideal are equivalent; and ifKis bounded below these are also equivalent to perfectness ofKitself.The derived base change is the canonical one of [stacks 064H],
CochainComplex.DerivedExtensionScalars.totalDerivedExtensionScalars.
theorem isPerfect_iff_isPerfect_at_primes_of_isBoundedBelow_and_stalkwise_criteria
{R : Type u} [CommRing R] (K : DerivedCategory (ModuleCat.{max u v} R))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K) :
let perfect := IsPerfect K
let perfectAtPrimes := ∀ q : PrimeSpectrum R,
IsPerfect ((CochainComplex.DerivedExtensionScalars.totalDerivedExtensionScalars.{u, u, v}
(algebraMap R (Localization.AtPrime q.asIdeal))).functor.obj K)
let perfectAtMaximals := ∀ m : MaximalSpectrum R,
IsPerfect ((CochainComplex.DerivedExtensionScalars.totalDerivedExtensionScalars.{u, u, v}
(algebraMap R (Localization.AtPrime m.asIdeal))).functor.obj K)
let fibreVanishesBelowAtPrimes := ∀ q : PrimeSpectrum R,
∃ a : ℤ, ∀ i : ℤ, i < a →
IsZero ((DerivedCategory.homologyFunctor
(ModuleCat.{max u v} q.asIdeal.ResidueField) i).obj
((CochainComplex.DerivedExtensionScalars.totalDerivedExtensionScalars.{u, u, v}
(algebraMap R q.asIdeal.ResidueField)).functor.obj K))
let fibreVanishesBelowAtMaximals := ∀ m : MaximalSpectrum R,
∃ a : ℤ, ∀ i : ℤ, i < a →
IsZero ((DerivedCategory.homologyFunctor
(ModuleCat.{max u v} m.asIdeal.ResidueField) i).obj
((CochainComplex.DerivedExtensionScalars.totalDerivedExtensionScalars.{u, u, v}
(algebraMap R m.asIdeal.ResidueField)).functor.obj K))
(perfect → perfectAtPrimes) ∧
(perfectAtPrimes ↔ perfectAtMaximals) ∧
(perfectAtPrimes ↔ fibreVanishesBelowAtPrimes) ∧
(perfectAtMaximals ↔ fibreVanishesBelowAtMaximals) ∧
((∃ a : ℤ, K.IsGE a) → (perfect ↔ perfectAtPrimes))
Tag 0G9A, a lemma
Tag 0G9A in the Stacks Project.
StacksDraft.ProjectiveAmplitude.hasProjectiveAmplitude_iff_perfect_iff_ext_vanishing, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/ProjectiveAmplitude.lean, line 989.
Stacks 0G9A. Let
Kbe a pseudo-coherent object ofD(R)and leta, bbe integers. The following are equivalent: (1)Khas projective amplitude in[a, b]; (2)Kis perfect and has Tor amplitude in[a, b], recorded by the existence of a flat representative supported in[a, b]; (3)Ext^i(K, N) = 0for every finitely presentedR-moduleNand everyi ∉ [-b, -a]; (4)H^n(K) = 0forn > bandExt^i(K, N) = 0for every finitely presentedNand everyi > -a; (5)H^n(K) = 0forn ∉ [a - 1, b]andExt^{-a + 1}(K, N) = 0for every finitely presentedN.
theorem hasProjectiveAmplitude_iff_perfect_iff_ext_vanishing
{R : Type u} [CommRing R] (K : DerivedCategory (ModuleCat.{max u v} R))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K) (a b : ℤ) :
let moduleObject := fun N : ModuleCat.{max u v} R ↦
(DerivedCategory.singleFunctor (ModuleCat.{max u v} R) 0).obj N
let projectiveAmplitude := HasProjectiveAmplitude K a b
let perfectTorAmplitude := Perfect.IsPerfect K ∧ Perfect.HasFlatRepresentative K a b
let extOutsideVanishes := ∀ N : ModuleCat.{max u v} R, Module.FinitePresentation R N →
∀ i : ℤ, i ∉ Set.Icc (-b) (-a) →
Subsingleton (DerivedCategory.Ext K (moduleObject N) i)
let upperVanishing :=
(∀ n : ℤ, b < n →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) n).obj K)) ∧
∀ N : ModuleCat.{max u v} R, Module.FinitePresentation R N →
∀ i : ℤ, -a < i → Subsingleton (DerivedCategory.Ext K (moduleObject N) i)
let endpointVanishing :=
(∀ n : ℤ, n ∉ Set.Icc (a - 1) b →
IsZero ((DerivedCategory.homologyFunctor (ModuleCat.{max u v} R) n).obj K)) ∧
∀ N : ModuleCat.{max u v} R, Module.FinitePresentation R N →
Subsingleton (DerivedCategory.Ext K (moduleObject N) (-a + 1))
(projectiveAmplitude ↔ perfectTorAmplitude) ∧
(perfectTorAmplitude ↔ extOutsideVanishes) ∧
(extOutsideVanishes ↔ upperVanishing) ∧
(upperVanishing ↔ endpointVanishing)
Tag 068X, a lemma
Tag 068X in the Stacks Project.
StacksDraft.Perfect.isPerfect_and_torAmplitude_of_flat_of_fibre_globalDimension_le, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/FibreDescent.lean, line 530. References: SGA 6 III (4.4), “(ii), special case”.
Stacks 068X. Let
A → Bbe a flat map of commutative rings, leta, b : ℤand letd ≥ 0be an integer such that for every primepofAthe fibre ringB ⊗_A κ(p)has global dimension at mostd. LetKbe an object of the derived category ofB-modules which is pseudo-coherent as a complex ofB-modules and has Tor amplitude in[a, b]as a complex ofA-modules. ThenKis perfect as a complex ofB-modules with Tor amplitude in[a - d, b].Tor amplitude is recorded as in [stacks 068V]: by a flat representative supported in the window, which by [stacks 0654] is exactly Tor amplitude, together with the termwise condition on every bounded above flat representative. The hypothesis over
Ais the same condition for the complex ofA-modules underlyingK, andhasTorAmplitudeIn_flatRepresentative_of_hasTorAmplitudederives it from derived Tor amplitude against any certified derived tensor product.
theorem isPerfect_and_torAmplitude_of_flat_of_fibre_globalDimension_le [Module.Flat A B]
(a b : ℤ) (d : ℕ)
(hfibre : ∀ p : PrimeSpectrum A,
ringGlobalDimension (TensorProduct A B p.asIdeal.ResidueField) ≤ (d : ℕ))
(K : DerivedCategory (ModuleCat.{u} B))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K)
(hamp : ∀ F : CochainComplex (ModuleCat.{u} A) ℤ, TorAmplitude.BoundedAbove F →
TorAmplitude.IsComplexOfFlats F →
Nonempty ((ModuleCat.restrictScalars (algebraMap A B)).mapDerivedCategory.obj K ≅
DerivedCategory.Q.obj F) → TorAmplitude.HasTorAmplitudeIn F a b) :
IsPerfect K ∧ HasFlatRepresentative.{u, u} K (a - (d : ℤ)) b ∧
∀ E : CochainComplex (ModuleCat.{u} B) ℤ, TorAmplitude.BoundedAbove E →
TorAmplitude.IsComplexOfFlats E → Nonempty (K ≅ DerivedCategory.Q.obj E) →
TorAmplitude.HasTorAmplitudeIn E (a - (d : ℤ)) b
Tag 09PC, a lemma
Tag 09PC in the Stacks Project.
StacksDraft.Perfect.isPerfect_and_torAmplitude_of_flat_local_of_regular_closedFibre, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/FibreDescent.lean, line 620.
Stacks 09PC. Let
A → Bbe a flat local homomorphism of local rings, leta, b : ℤand letd ≥ 0be an integer such that the closed fibreB/m_A Bis regular of dimensiond. LetKbe an object of the derived category ofB-modules which is pseudo-coherent as a complex ofB-modules and whose derived fibreK ⊗_A^L κ(m_A)has cohomology only in the degrees[a, b]. ThenKis perfect as a complex ofB-modules with Tor amplitude in[a - d, b].The source states the hypothesis over
Aas Tor amplitude in[a, b]and remarks that the weaker condition on the derived fibre suffices; it is that weaker hypothesis which is used here. Tor amplitude in the conclusion is recorded as in [stacks 068V]: by a flat representative supported in the window, which by [stacks 0654] is exactly Tor amplitude, together with the termwise condition on every bounded above flat representative. The derived fibre overAis computed on a bounded above flat representative of the complex ofA-modules underlyingK, which is what the termwise tensor product withκ(m_A)of such a representative is.
theorem isPerfect_and_torAmplitude_of_flat_local_of_regular_closedFibre [IsLocalRing B]
[IsLocalHom (algebraMap A B)] [Module.Flat A B] (a b : ℤ) (d : ℕ)
[IsRegularLocalRing (B ⧸ Ideal.map (algebraMap A B) (maximalIdeal A))]
(hdim : ringKrullDim (B ⧸ Ideal.map (algebraMap A B) (maximalIdeal A)) = (d : WithBot ℕ∞))
(K : DerivedCategory (ModuleCat.{u} B))
(hK : StacksDraft.PseudoCoherence.IsPseudoCoherent K)
(hfibre : ∀ F : CochainComplex (ModuleCat.{u} A) ℤ, TorAmplitude.BoundedAbove F →
TorAmplitude.IsComplexOfFlats F →
Nonempty ((ModuleCat.restrictScalars (algebraMap A B)).mapDerivedCategory.obj K ≅
DerivedCategory.Q.obj F) →
∀ i : ℤ, (i < a ∨ b < i) →
IsZero ((TorAmplitude.tensorComplex F
(ModuleCat.of A (maximalIdeal A).ResidueField)).homology i)) :
IsPerfect K ∧ HasFlatRepresentative.{u, u} K (a - (d : ℤ)) b ∧
∀ E : CochainComplex (ModuleCat.{u} B) ℤ, TorAmplitude.BoundedAbove E →
TorAmplitude.IsComplexOfFlats E → Nonempty (K ≅ DerivedCategory.Q.obj E) →
TorAmplitude.HasTorAmplitudeIn E (a - (d : ℤ)) b
Sources
Section15.80 Characterizing perfect complexes#
Section 15.80 of the Stacks Project, Tag 07LQ. 5 tags here are carried by 5 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0ATI, a lemma
Tag 0ATI in the Stacks Project.
StacksDraft.Perfect.isPerfect_eq_triangEnvelope_singleton_regularModule, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Characterizing.lean, line 330.
Stacks 0ATI. The perfect objects of
D(R)form the smallest strictly full, saturated, triangulated subcategory containing the regular moduleRin degree zero. Equivalently,R[0]is a classical generator of the perfect derived category.
theorem isPerfect_eq_triangEnvelope_singleton_regularModule {R : Type u} [Ring R] :
(IsPerfect : ObjectProperty (DerivedCategory (ModuleCat.{u} R))) =
(ObjectProperty.singleton
((DerivedCategory.singleFunctor (ModuleCat.{u} R) 0).obj
(ModuleCat.of R R))).triangEnvelope
Tag 07LR, a lemma
Tag 07LR in the Stacks Project.
Stacks.MappingTelescope.isIso_colimHomComparison, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/DerivedCategory/HomColimit.lean, line 451.
Stacks 07LR. Let
Rbe a ring and letK ∈ D(R)be such that for every sequence(E_n)of objects ofD(R)with a coproduct, the canonical map⨁_n Hom_{D(R)}(K, E_n) → Hom_{D(R)}(K, ⨁_n E_n)is an isomorphism. Then for every system of complexes(L_n, t_n)overℕwith termwise colimitL, the canonical mapcolim_n Hom_{D(R)}(K, L_n) → Hom_{D(R)}(K, L)is an isomorphism.
theorem isIso_colimHomComparison (K : DMod R) (hK : CommutesWithCountableCoproducts K)
(L : System R) :
IsIso (colimHomComparison L K)
Tag 07LT, a proposition
Tag 07LT in the Stacks Project.
StacksDraft.Perfect.isPerfect_iff_isCompactObject, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/Characterizing.lean, line 1129.
Stacks 07LT. An object of the derived category of modules over a ring is perfect if and only if it is compact. Perfectness is thus intrinsic to the triangulated category
D(R)with its coproducts, referring neither to a representing complex nor to the ring.
theorem isPerfect_iff_isCompactObject
{R : Type u} [Ring R] (K : DerivedCategory (ModuleCat.{u} R)) :
IsPerfect K ↔ IsCompactObject.{u} K
Tag 07LU, a lemma
Tag 07LU in the Stacks Project.
StacksDraft.Perfect.isPerfect_of_isPerfect_mod_isNilpotent, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/NilpotentLifting.lean, line 884.
Stacks 07LU. An object of
D(R)whose derived reduction modulo a nilpotent idealIis perfect is itself perfect.A bounded complex of finite projective
R ⧸ I-modules representing the reduction lifts, by [stacks 09AR], to a bounded above complexPof projectiveR-modules representingK. Each term ofPis finite because its reduction is, by Nakayama for a nilpotent ideal (finite_of_finite_quotient_of_isNilpotent), andPvanishes below the lower bound of the given complex because a module with vanishing reduction modulo a nilpotent ideal vanishes.
public theorem isPerfect_of_isPerfect_mod_isNilpotent
{R : Type u} [CommRing R] (I : Ideal R)
(K : DerivedCategory (ModuleCat.{max v u} R))
(hK : IsPerfect
((totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk I)).functor.obj K))
(hI : IsNilpotent I) :
IsPerfect K
Tag 09AS, a lemma
Tag 09AS in the Stacks Project.
StacksDraft.Perfect.isPerfect_derivedReduction_mul, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Homology/Perfect/ProductOfIdeals.lean, line 621.
Stacks 09AS. Let
IandJbe ideals of a commutative ringRand letKbe an object of the derived category ofR-modules. If the derived reductions ofKmoduloIand moduloJare both perfect, then so is the derived reduction ofKmoduloI * J.Perfectness modulo
I ∩ Jfollows fromisPerfect_of_isPerfect_reductions, applied over the ringR/(I ∩ J)where the images ofIand ofJmeet in zero; andR/(I * J) → R/(I ∩ J)is surjective with nilpotent kernel, so perfectness descends along it.
theorem isPerfect_derivedReduction_mul (I J : Ideal R)
(K : DerivedCategory (ModuleCat.{max u v} R))
(hI : IsPerfect
((totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk I)).functor.obj K))
(hJ : IsPerfect
((totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk J)).functor.obj K)) :
IsPerfect
((totalDerivedExtensionScalars.{u, u, v} (Ideal.Quotient.mk (I * J))).functor.obj K)
Sources
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.