22.27 Obtaining triangulated… to 22.36 Characterizing compact…

Section22.27 Obtaining triangulated categories#

Section 22.27 of the Stacks Project, Tag 09P5. 17 tags here are carried by 43 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 09P6, a lemma

Tag 09P6 in the Stacks Project.

DifferentialGradedModule.connectingHom_gradedSplit, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/GradedSplitAdmissible.lean, line 143. The attribute's comment: “the connecting morphism of a graded splitting is the connecting homomorphism”.

The connecting homomorphism of the admissible sequence is the connecting morphism of the graded splitting. Both are π d(s): the Hom differential of the differential graded category is the graded commutator d ∘ s - s ∘ d, and its second term is killed by π ∘ s = 0.

theorem connectingHom_gradedSplit (z : Z.M) :
    (connectingHom (homOfCocycle A E.a) (homOfCocycle A E.b)
        (isAdmissibleShortExact_gradedSplit A E)
        (gradedSplitS A E) (gradedSplitPi A E)
        (gradedSplit_b_s A E) (gradedSplit_pi_a A E)
        (compatibleSplittings_gradedSplit A E).hker).val.toFun z =
      (DGCategory.GradedSplitShortExact.connectingHom E).1 z

CochainComplex.gradedSplitOfDegreewiseSplit, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/CochainComplexGradedSplit.lean, line 102. The attribute's comment: “a degreewise split short exact sequence of complexes”.

A degreewise split short complex of cochain complexes is a graded-split short exact sequence of the differential graded category of complexes.

def gradedSplitOfDegreewiseSplit :
    DGCategory.GradedSplitShortExact (A := dgCategory B) S.X₁ S.X₂ S.X₃

CochainComplex.connectingHom_gradedSplitOfDegreewiseSplit, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/CochainComplexGradedSplit.lean, line 163. The attribute's comment: “the connecting morphism of a degreewise split sequence of complexes”.

The connecting morphism of a degreewise split sequence of complexes is Mathlib's CochainComplex.cocycleOfDegreewiseSplit. The Hom differential of s is the graded commutator s ≫ d - d ≫ s, and its second term dies against π because π ∘ s = 0, leaving (σ p).s ≫ d ≫ (σ q).r.

theorem connectingHom_gradedSplitOfDegreewiseSplit :
    DGCategory.GradedSplitShortExact.connectingHom (gradedSplitOfDegreewiseSplit S σ) =
      (cocycleOfDegreewiseSplit S σ).1

CochainComplex.dgShiftComparisonData, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/CochainComplexShiftComparison.lean, line 111. The attribute's comment: “axiom (B)'s identification of Hom complexes, for complexes”.

Mathlib's shift supplies axiom (B)'s identification of Hom modules for the differential graded category of complexes. A degree k + n cochain X ⟶ Y is a degree k cochain X ⟶ Y[n]; the identification multiplies the Hom differential by (-1)^n and leaves composition on the right alone.

noncomputable def dgShiftComparisonData :
    DGCategory.ShiftComparisonData (dgCategory B)

DGCategory.GradedSplitShortExact.connectingHom, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 165. The attribute's comment: “the connecting morphism”.

The connecting morphism π d(s), as a homogeneous morphism of degree one.

public def connectingHom {x y z : A.Obj} (E : GradedSplitShortExact (A := A) x y z) :
    A.Hom z x 1

DGCategory.GradedSplitShortExact.connectingHom_eq_neg_d_comp, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 282. The attribute's comment: “alternative formula for the connecting morphism”.

The alternative formula δ = -d(π)s for the connecting morphism.

public theorem connectingHom_eq_neg_d_comp {x y z : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z) :
    connectingHom E =
      -A.comp (by omega : (0 + 1 : ℤ) + 0 = 1) (A.d E.π) E.s

DGCategory.GradedSplitShortExact.connectingHom_closed, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 290. The attribute's comment: “the connecting morphism is closed”.

The connecting morphism is a cocycle.

public theorem connectingHom_closed {x y z : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z) : A.d (connectingHom E) = 0

DGCategory.GradedSplitShortExact.comp_zero, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 300. The attribute's comment: “the first consecutive composite”.

The composite x ⟶ y ⟶ z is zero.

public theorem comp_zero {x y z : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z) :
    A.comp (by omega : (0 : ℤ) + 0 = 0) E.b.1 E.a.1 = 0

DGCategory.GradedSplitShortExact.comp_connectingHom, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 338. The attribute's comment: “the third consecutive composite”.

The composite z ⟶ x[1] ⟶ y[1] is the boundary d(s) before shifting.

public theorem comp_connectingHom {x y z : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z) :
    A.comp (by omega : (0 : ℤ) + 1 = 1) E.a.1 (connectingHom E) = A.d E.s

DGCategory.GradedSplitShortExact.connectingHom_comp, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 345. The attribute's comment: “the second consecutive composite”.

The composite y ⟶ z ⟶ x[1] is the boundary d(-π) before shifting.

public theorem connectingHom_comp {x y z : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z) :
    A.comp (by omega : (1 : ℤ) + 0 = 1) (connectingHom E) E.b.1 = A.d (-E.π)

DGCategory.GradedSplitShortExact.connecting_shift_closed, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 353. The attribute's comment: “closed connecting map into the shift”.

The degree-one connecting cocycle remains closed after conversion to a map into the shifted object.

public theorem connecting_shift_closed {x y z : A.Obj}
    (S : ShiftAxiomB A) (E : GradedSplitShortExact (A := A) x y z) :
    A.d ((S.toShift 1 z x 0) (connectingHom E)) = 0

DGCategory.GradedSplitShortExact.connectingCocycle, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 366. The attribute's comment: “the triangle's connecting arrow”.

The actual connecting arrow z ⟶ x[1] in Comp(A).

public def connectingCocycle {x y z : A.Obj}
    (S : ShiftAxiomB A) (E : GradedSplitShortExact (A := A) x y z) :
    A.Cocycle z ((S.shiftFunctor 1).obj x)

DGCategory.GradedSplitShortExact.associatedCompTriangle, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 384. The attribute's comment: “the associated triangle in the category of complexes”.

The associated triangle in the category of complexes, with the arrow z ⟶ x[1] given by π d(s).

public def associatedCompTriangle {x y z : A.Obj}
    (S : ShiftAxiomB A) (E : GradedSplitShortExact (A := A) x y z) :
    letI : HasShift A.Comp ℤ := S.compShift
    Pretriangulated.Triangle A.Comp

DGCategory.GradedSplitShortExact.associatedKTriangle, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 397. The attribute's comment: “the associated triangle in the homotopy category”.

The same triangle, regarded in the homotopy category.

public def associatedKTriangle {x y z : A.Obj}
    (S : ShiftAxiomB A) (E : GradedSplitShortExact (A := A) x y z) :
    letI : HasShift A.K ℤ := S.kShift
    Pretriangulated.Triangle A.K

DGCategory.GradedSplitShortExact.first_comp_zero_in_K, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 413. The attribute's comment: “first composite vanishes in the homotopy category”.

The first two arrows compose to zero in the homotopy category.

public theorem first_comp_zero_in_K {x y z : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z) :
    A.compK (Quotient.mk (A.homotopySetoid y z) E.b)
      (Quotient.mk (A.homotopySetoid x y) E.a) =
    Quotient.mk (A.homotopySetoid x z)
      (⟨0, A.d_zero⟩ : A.Cocycle x z)

DGCategory.GradedSplitShortExact.connecting_comp_zero_in_K, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 436. The attribute's comment: “second composite vanishes in the homotopy category”.

The composite y ⟶ z ⟶ x[1] is zero in K(A).

public theorem connecting_comp_zero_in_K {x y z : A.Obj}
    (S : ShiftAxiomB A)
    (E : GradedSplitShortExact (A := A) x y z) :
    A.compK (Quotient.mk (A.homotopySetoid z ((S.shiftFunctor 1).obj x))
        (connectingCocycle S E))
      (Quotient.mk (A.homotopySetoid y z) E.b) =
    Quotient.mk (A.homotopySetoid y ((S.shiftFunctor 1).obj x))
      (⟨0, A.d_zero⟩ : A.Cocycle y ((S.shiftFunctor 1).obj x))

DGCategory.GradedSplitShortExact.comp_connecting_zero_in_K, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 465. The attribute's comment: “third composite vanishes in the homotopy category”.

The composite z ⟶ x[1] ⟶ y[1] is zero in K(A).

public theorem comp_connecting_zero_in_K {x y z : A.Obj}
    (S : ShiftAxiomB A)
    (E : GradedSplitShortExact (A := A) x y z) :
    A.compK (Quotient.mk (A.homotopySetoid ((S.shiftFunctor 1).obj x)
        ((S.shiftFunctor 1).obj y)) ((S.shiftFunctor 1).mapCocycle E.a))
      (Quotient.mk (A.homotopySetoid z ((S.shiftFunctor 1).obj x))
        (connectingCocycle S E)) =
    Quotient.mk (A.homotopySetoid z ((S.shiftFunctor 1).obj y))
      (⟨0, A.d_zero⟩ : A.Cocycle z ((S.shiftFunctor 1).obj y))

DGCategory.GradedSplitShortExact.shifted_connecting_comp_zero_in_K, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Triangulated.lean, line 527. The attribute's comment: “rotated composite vanishes in the homotopy category”.

The rotated composite z[-1] ⟶ x ⟶ y is zero in K(A).

public theorem shifted_connecting_comp_zero_in_K {x y z : A.Obj}
    (S : ShiftAxiomB A)
    (E : GradedSplitShortExact (A := A) x y z) :
    A.compK (Quotient.mk (A.homotopySetoid x y) E.a)
      (Quotient.mk (A.homotopySetoid ((S.shiftFunctor (-1)).obj z) x)
        (shiftedConnecting S E)) =
    Quotient.mk (A.homotopySetoid ((S.shiftFunctor (-1)).obj z) y)
      (⟨0, A.d_zero⟩ : A.Cocycle ((S.shiftFunctor (-1)).obj z) y)
Tag 09QJ, a situation

Tag 09QJ in the Stacks Project.

DGCategory.ConeSituation, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ConeSituation.lean, line 37.

Axioms (A), (B), and (C) for a differential graded category. For every closed degree-zero arrow f : x ⟶ y, the sequence y ⟶ c(f) ⟶ x[1] is admissible and its connecting arrow x[1] ⟶ y[1] is f[1].

structure ConeSituation {R : Type w} [CommRing R] (A : DGCategory.{v, u} R)
Tag 09P7, a lemma

Tag 09P7 in the Stacks Project.

DGCategory.exists_coneTriangleMorphism, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ConeMorphism.lean, line 254.

A homotopy-commutative square of complexes induces a morphism of their cone triangles, whose cone component has a representative in the category of complexes.

theorem exists_coneTriangleMorphism (S : ConeSituation A)
    {x₁ y₁ x₂ y₂ : A.Obj}
    (f₁ : A.Cocycle x₁ y₁) (f₂ : A.Cocycle x₂ y₂)
    (a : A.Cocycle x₁ x₂) (b : A.Cocycle y₁ y₂)
    (hcomm : A.compK (Quotient.mk (A.homotopySetoid y₁ y₂) b)
        (Quotient.mk (A.homotopySetoid x₁ y₁) f₁) =
      A.compK (Quotient.mk (A.homotopySetoid x₂ y₂) f₂)
        (Quotient.mk (A.homotopySetoid x₁ x₂) a)) :
    ∃ c : A.Cocycle (S.cone f₁) (S.cone f₂),
      (A.compK
          (Quotient.mk (A.homotopySetoid (S.cone f₁) (S.cone f₂)) c)
          (Quotient.mk (A.homotopySetoid y₁ (S.cone f₁)) (S.coneSequence f₁).a) =
        A.compK
          (Quotient.mk (A.homotopySetoid y₂ (S.cone f₂)) (S.coneSequence f₂).a)
          (Quotient.mk (A.homotopySetoid y₁ y₂) b)) ∧
      (A.compK
          (Quotient.mk (A.homotopySetoid (S.cone f₂)
            ((S.shift.shiftFunctor 1).obj x₂)) (S.coneSequence f₂).b)
          (Quotient.mk (A.homotopySetoid (S.cone f₁) (S.cone f₂)) c) =
        A.compK
          (Quotient.mk (A.homotopySetoid ((S.shift.shiftFunctor 1).obj x₁)
            ((S.shift.shiftFunctor 1).obj x₂))
            ((S.shift.shiftFunctor 1).mapCocycle a))
          (Quotient.mk (A.homotopySetoid (S.cone f₁)
            ((S.shift.shiftFunctor 1).obj x₁)) (S.coneSequence f₁).b))
Tag 09QK, a lemma

Tag 09QK in the Stacks Project.

DGCategory.id_cone_homotopic_zero, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ConeMorphism.lean, line 404.

The identity of the cone of an identity morphism is homotopic to zero.

theorem id_cone_homotopic_zero (S : ConeSituation A) (x : A.Obj) :
    let c := S.cone (⟨A.id x, A.d_id x⟩ : A.Cocycle x x)
    A.Homotopic (⟨A.id c, A.d_id c⟩ : A.Cocycle c c) (⟨0, A.d_zero⟩ : A.Cocycle c c)
Tag 09QL, a lemma

Tag 09QL in the Stacks Project.

DGCategory.exists_rectification_of_isAdmissibleMono, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Rectification.lean, line 66. The attribute's comment: “adjust_right”.

Rectify the right arrow of a homotopy-commutative square along an admissible monomorphism.

theorem exists_rectification_of_isAdmissibleMono {x y z w : A.Obj}
    (f : A.Cocycle x y) (a : A.Cocycle x z) (b : A.Cocycle y w) (g : A.Cocycle z w)
    (hcomm : A.Homotopic (A.compCocycle b f) (A.compCocycle g a))
    (hf : IsAdmissibleMono f) :
    ∃ b' : A.Cocycle y w,
      A.Homotopic b b' ∧ A.compCocycle b' f = A.compCocycle g a

DGCategory.exists_rectification_left, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Rectification.lean, line 87. The attribute's comment: “adjust_left”.

Rectify the left arrow of a homotopy-commutative square along an admissible epimorphism, presented by a degree-zero section of its lower horizontal arrow.

theorem exists_rectification_left (C : ConeSituation A) (S : HomotopyCommutativeSquare C)
    (hg : ∃ s : A.Hom S.w S.z 0,
      A.comp (show (0 : ℤ) + 0 = 0 by omega) S.g.1 s = A.id S.w) :
    ∃ a' : A.Cocycle S.x S.z,
      A.Homotopic S.a a' ∧ A.compCocycle S.g a' = A.compCocycle S.b S.f
Tag 09QM, a lemma

Tag 09QM in the Stacks Project.

DGCategory.exists_admissibleMono_factorization, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/AdmissibleMonoFactorization.lean, line 351.

Every morphism in the category of complexes factors through an admissible monomorphism followed by a retraction admitting a strict section and a homotopy inverse.

public theorem exists_admissibleMono_factorization
    {R : Type w} [CommRing R] {A : DGCategory.{v, u} R}
    (S : ConeSituation A) {x y : A.Obj} (α : A.Cocycle x y) :
    ∃ (y' z : A.Obj) (E : GradedSplitShortExact (A := A) x y' z)
      (π : A.Cocycle y' y) (s : A.Cocycle y y'),
      (A.compCocycle π E.a = α) ∧
      (A.compCocycle π s = (⟨A.id y, A.d_id y⟩ : A.Cocycle y y)) ∧
      A.Homotopic (A.compCocycle s π)
        (⟨A.id y', A.d_id y'⟩ : A.Cocycle y' y')
Tag 09QN, a lemma

Tag 09QN in the Stacks Project.

DGCategory.exists_admissibleMono_sequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/AdmissibleMonoFactorization.lean, line 515.

A finite chain of maps in the category of complexes has a commuting replacement by admissible monomorphisms, with a homotopy equivalence at every vertex.

public theorem exists_admissibleMono_sequence {R : Type w} [CommRing R]
    (A : DGCategory.{v, u} R) (S : ConeSituation A) (n : ℕ)
    (x : Fin (n + 1) → A.Comp)
    (f : ∀ i : Fin n, x i.castSucc ⟶ x i.succ) :
    ∃ (y : Fin (n + 1) → A.Comp)
      (g : ∀ i : Fin n, y i.castSucc ⟶ y i.succ)
      (p : ∀ i : Fin (n + 1), y i ⟶ x i),
      (∀ i : Fin n,
        ∃ z : A.Obj, ∃ E : GradedSplitShortExact (A := A)
          (y i.castSucc) (y i.succ) z, E.a = g i) ∧
      (∀ i : Fin (n + 1), IsIso ((A.compToK).map (p i))) ∧
      (∀ i : Fin n, g i ≫ p i.succ = p i.castSucc ≫ f i)
Tag 09QP, a lemma

Tag 09QP in the Stacks Project.

DGCategory.comp_homotopic_zero_of_gradedSplitShortExact, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/AdmissibleNullHomotopy.lean, line 109.

Two morphisms whose composites with opposite sides of an admissible short exact sequence vanish up to homotopy have null-homotopic composite.

theorem comp_homotopic_zero_of_gradedSplitShortExact {x y z y₁ y₃ : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z)
    (b : A.Cocycle y₁ y) (b' : A.Cocycle y y₃)
    (hb : A.Homotopic (A.compCocycle E.b b) ⟨0, A.d_zero⟩)
    (hb' : A.Homotopic (A.compCocycle b' E.a) ⟨0, A.d_zero⟩) :
    A.Homotopic (A.compCocycle b' b) ⟨0, A.d_zero⟩
Tag 09QQ, a lemma

Tag 09QQ in the Stacks Project.

DGCategory.associatedKTriangle_eq_of_same_sequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/TriangleIndependence.lean, line 139.

Changing the graded splitting of an admissible short exact sequence does not change its associated triangle in the homotopy category.

theorem associatedKTriangle_eq_of_same_sequence {x y z : A.Obj} (S : ShiftAxiomB A)
    (E E' : GradedSplitShortExact (A := A) x y z) (ha : E.a = E'.a) (hb : E.b = E'.b) :
    GradedSplitShortExact.associatedKTriangle S E =
      GradedSplitShortExact.associatedKTriangle S E'
Tag 09QR, a lemma

Tag 09QR in the Stacks Project.

DGCategory.associatedCompTriangle_coneSequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/RotatedConeTriangle.lean, line 60. The attribute's comment: “the statement in Comp(A): the triangle associated to the cone sequence of f is the triangle on y, c(f), x[1] whose first two arrows are that sequence's inclusion and projection and whose connecting arrow is f[1]. The homotopy-category form is associatedKTriangle_coneSequence; neither covers the comparison with the cone triangle of f (Tag 09QU) nor the rotation of this triangle (Tag 09QS)”.

Let f : x ⟶ y be a morphism in Comp(𝒜). The triangle (y, c(f), x[1], i, p, f[1]) is the triangle associated to the admissible short exact sequence y ⟶ c(f) ⟶ x[1].

theorem associatedCompTriangle_coneSequence (C : ConeSituation A) {x y : A.Obj}
    (f : A.Cocycle x y) :
    letI : HasShift A.Comp ℤ := C.shift.compShift
    GradedSplitShortExact.associatedCompTriangle C.shift (C.coneSequence f) =
      Pretriangulated.Triangle.mk
        ((C.coneSequence f).a : (show A.Comp from y) ⟶ (show A.Comp from C.cone f))
        ((C.coneSequence f).b :
          (show A.Comp from C.cone f) ⟶
            (show A.Comp from (C.shift.shiftFunctor 1).obj x))
        (((C.shift.shiftFunctor 1).mapCocycle f :
            (show A.Comp from (C.shift.shiftFunctor 1).obj x) ⟶
              (show A.Comp from (C.shift.shiftFunctor 1).obj y)) ≫
          eqToHom (congrArg (fun F : A.Comp ⥤ A.Comp => F.obj y)
            (C.shift.compShift_functor 1)).symm)

DGCategory.associatedKTriangle_coneSequence, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/RotatedConeTriangle.lean, line 86. The attribute's comment: “the statement in K(A): the triangle associated to the cone sequence of f is the triangle on y, c(f), x[1] whose first two arrows are the homotopy classes of that sequence's inclusion and projection and whose connecting arrow is the class of f[1]. The form in Comp(A) is associatedCompTriangle_coneSequence; neither covers the comparison with the cone triangle of f (Tag 09QU) nor the rotation of this triangle (Tag 09QS)”.

The same identification in the homotopy category: the triangle (y, c(f), x[1], i, p, f[1]) is the triangle associated to the admissible short exact sequence y ⟶ c(f) ⟶ x[1].

theorem associatedKTriangle_coneSequence (C : ConeSituation A) {x y : A.Obj}
    (f : A.Cocycle x y) :
    letI : HasShift A.K ℤ := C.shift.kShift
    GradedSplitShortExact.associatedKTriangle C.shift (C.coneSequence f) =
      Pretriangulated.Triangle.mk
        (Quotient.mk (A.homotopySetoid y (C.cone f)) (C.coneSequence f).a)
        (Quotient.mk (A.homotopySetoid (C.cone f) ((C.shift.shiftFunctor 1).obj x))
          (C.coneSequence f).b)
        ((Quotient.mk (A.homotopySetoid ((C.shift.shiftFunctor 1).obj x)
              ((C.shift.shiftFunctor 1).obj y))
            ((C.shift.shiftFunctor 1).mapCocycle f)) ≫
          eqToHom (congrArg (fun F : A.K ⥤ A.K => F.obj y)
            (C.shift.kShift_functor 1)).symm)
Tag 09QS, a lemma

Tag 09QS in the Stacks Project.

DGCategory.rotatedAssociatedTriangle_iso_connectingConeTriangle, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/RotatedConeTriangle.lean, line 308.

The rotated triangle of an admissible sequence is isomorphic to the cone triangle of its desuspended connecting map.

theorem rotatedAssociatedTriangle_iso_connectingConeTriangle
    (C : ConeSituation A) {x y z : A.Obj}
    (E : GradedSplitShortExact (A := A) x y z) :
    letI : HasShift A.K ℤ := C.shift.kShift
    Nonempty (rotatedAssociatedTriangle C E ≅ connectingConeTriangle C E)
Tag 09QT, a lemma

Tag 09QT in the Stacks Project.

DGCategory.isIso_cone_of_isIso_source_target, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ConeHomotopyEquivalence.lean, line 293.

In a morphism of cone triangles, homotopy equivalences on the source and target induce a homotopy equivalence on the cones.

public theorem isIso_cone_of_isIso_source_target
    (S : ConeSituation A)
    {x₁ y₁ x₂ y₂ : A.Obj} (f₁ : A.Cocycle x₁ y₁) (f₂ : A.Cocycle x₂ y₂)
    (φ :
      letI : HasShift A.K ℤ := S.shift.kShift
      coneTriangle S f₁ ⟶ coneTriangle S f₂) :
    letI : HasShift A.K ℤ := S.shift.kShift
    IsIso φ.hom₁ → IsIso φ.hom₂ → IsIso φ.hom₃
Tag 09QU, a lemma

Tag 09QU in the Stacks Project.

DGCategory.coneTriangleIsoOfShortExact, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ConeTriangleComparison.lean, line 713. The attribute's comment: “part (1)”. References: SGA 4 XVII (1.1.1), “DG category setting”.

An admissible short exact sequence identifies its quotient with the cone of its first arrow, compatibly with the two triangles and the identity on their first two terms.

public theorem coneTriangleIsoOfShortExact (S : ConeSituation A)
    {x y z : A.Obj} (E : GradedSplitShortExact (A := A) x y z) :
    letI : HasShift A.K ℤ := S.shift.kShift
    ∃ φ : negativeConeTriangle S E.a ⟶ GradedSplitShortExact.associatedKTriangle S.shift E,
      φ.hom₁ = 𝟙 _ ∧ φ.hom₂ = 𝟙 _ ∧ IsIso φ.hom₃

DGCategory.shortExactTriangleIsoOfFactorization, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ConeTriangleComparison.lean, line 864. The attribute's comment: “part (2)”. References: SGA 4 XVII (1.1.1), “DG cat. with cone situat”.

The admissible sequence in a factorization of a closed arrow gives a triangle isomorphic to the cone triangle of that arrow, by the identity on the source and the factorization's homotopy equivalence on the target.

public theorem shortExactTriangleIsoOfFactorization (S : ConeSituation A)
    {x y y' z : A.Obj} (α : A.Cocycle x y)
    (E : GradedSplitShortExact (A := A) x y' z)
    (π : A.Cocycle y' y) (hπα : A.compCocycle π E.a = α)
    (s : A.Cocycle y y')
    (hπs : A.compCocycle π s = (⟨A.id y, A.d_id y⟩ : A.Cocycle y y))
    (hsπ : A.Homotopic (A.compCocycle s π)
      (⟨A.id y', A.d_id y'⟩ : A.Cocycle y' y')) :
    letI : HasShift A.K ℤ := S.shift.kShift
    ∃ φ : GradedSplitShortExact.associatedKTriangle S.shift E ⟶ negativeConeTriangle S α,
      φ.hom₁ = 𝟙 _ ∧
      φ.hom₂ = Quotient.mk (A.homotopySetoid y' y) π ∧
      IsIso φ.hom₃
Tag 09QW, a lemma

Tag 09QW in the Stacks Project.

DGCategory.homotopyPretriangulated, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/HomotopyCategoryTriangulated.lean, line 1406. The attribute's comment: “the pre-triangulated structure”. References: SGA 4½ Etat 0 (1.2.2), “TR1, TR2, TR3”.

The homotopy category with the triangles of admissible short exact sequences as its distinguished triangles is pretriangulated.

public noncomputable def homotopyPretriangulated :
    letI : Preadditive A.K := homotopyPreadditive A
    letI : HasZeroObject A.K := homotopyHasZeroObject A T
    letI : HasShift A.K ℤ := T.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor A.K n).Additive := fun n => homotopyShiftAdditive A T n
    Pretriangulated A.K

DGCategory.distinguishedTriangles_homotopyPretriangulated, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/HomotopyCategoryTriangulated.lean, line 1417. The attribute's comment: “its distinguished triangles”. References: SGA 4½ Etat 0 (1.2.2), “more general”.

The distinguished triangles of the pretriangulated structure on K(A) are exactly the triangles isomorphic to that of an admissible short exact sequence.

public theorem distinguishedTriangles_homotopyPretriangulated :
    letI : Preadditive A.K := homotopyPreadditive A
    letI : HasZeroObject A.K := homotopyHasZeroObject A T
    letI : HasShift A.K ℤ := T.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor A.K n).Additive := fun n => homotopyShiftAdditive A T n
    (homotopyPretriangulated A T).distinguishedTriangles =
      {U | IsDistinguishedTriangle A T U}
Tag 09QX, a lemma

Tag 09QX in the Stacks Project.

DGCategory.admissibleMonomorphisms_octahedron, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/Octahedron.lean, line 761.

The octahedral diagram associated to two composable admissible monomorphisms. The input exact sequences witness admissibility and fix the two quotient objects.

theorem admissibleMonomorphisms_octahedron
    (S : ConeSituation A)
    {x y z q₁ q₃ : A.Obj}
    (E₁ : GradedSplitShortExact (A := A) x y q₁)
    (E₃ : GradedSplitShortExact (A := A) y z q₃) :
    letI : HasShift A.K ℤ := S.shift.kShift
    let T₁ := GradedSplitShortExact.associatedKTriangle S.shift E₁
    let T₃ := GradedSplitShortExact.associatedKTriangle S.shift E₃
    ∃ (q₂ : A.Obj)
      (E₂ : GradedSplitShortExact (A := A) x z q₂)
      (E₄ : GradedSplitShortExact (A := A) q₁ q₂ q₃),
      let T₂ := GradedSplitShortExact.associatedKTriangle S.shift E₂
      let T₄ := GradedSplitShortExact.associatedKTriangle S.shift E₄
      (E₂.a.1 = A.comp (by rfl : (0 : ℤ) + 0 = 0) E₃.a.1 E₁.a.1) ∧
      (T₁.mor₁ ≫ T₃.mor₁ = T₂.mor₁) ∧
      (T₁.mor₂ ≫ T₄.mor₁ = T₃.mor₁ ≫ T₂.mor₂) ∧
      (T₄.mor₁ ≫ T₂.mor₃ = T₁.mor₃) ∧
      (T₂.mor₂ ≫ T₄.mor₂ = T₃.mor₂) ∧
      (T₂.mor₃ ≫ T₁.mor₁⟦1⟧' = T₄.mor₂ ≫ T₃.mor₃) ∧
      (T₄.mor₃ = T₃.mor₃ ≫ T₁.mor₂⟦1⟧')
Tag 09QY, a proposition

Tag 09QY in the Stacks Project.

DGCategory.homotopyCategory_isTriangulated, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/HomotopyCategoryTriangulated.lean, line 1431. References: SGA 4½ Etat 0 (1.2.2); SGA 4 Vbis (2.5.1), “more general”.

The homotopy category of a differential graded category satisfying axioms (A), (B) and (C), with the translation functors of axiom (B) and the triangles of admissible short exact sequences as distinguished triangles, is a triangulated category.

public theorem homotopyCategory_isTriangulated :
    letI : Preadditive A.K := homotopyPreadditive A
    letI : HasZeroObject A.K := homotopyHasZeroObject A T
    letI : HasShift A.K ℤ := T.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor A.K n).Additive := fun n => homotopyShiftAdditive A T n
    letI : Pretriangulated A.K := homotopyPretriangulated A T
    IsTriangulated A.K
Tag 0FQF, a lemma

Tag 0FQF in the Stacks Project.

SheafOfModules.DifferentialGradedModule.isTriangulated_onK, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Category/ModuleCat/Sheaf/DifferentialGradedCrossSiteExact.lean, line 149. The attribute's comment: “the induced functor on homotopy categories is exact, across two ringed sites”.

A differential graded functor across two ringed sites commuting with the shift is exact on the homotopy categories, which is [Stacks, Tag 0FQF] in the generality the derived pullback and the derived pushforward of a sheaf of differential graded modules need. The triangulated structures are the ones of [Stacks, Tag 0FS7]: restriction of scalars to ℤ changes neither the homotopy categories, nor their cones, nor their admissible short exact sequences, so the cone situation here is the one that puts the triangulated structure on K(Mod(A, d)).

theorem isTriangulated_onK
    {F : DGCategory.DGFunctor (dgCategoryOverInt.{u, v, w} A) (dgCategoryOverInt.{u, v, w} B)}
    (hF : F.CommShiftB (coneSituationOverInt.{u, v, w} A).shift
      (coneSituationOverInt.{u, v, w} B).shift) :
    letI : Preadditive (dgCategoryOverInt.{u, v, w} A).K :=
      DGCategory.homotopyPreadditive _
    letI : HasZeroObject (dgCategoryOverInt.{u, v, w} A).K :=
      DGCategory.homotopyHasZeroObject _ (coneSituationOverInt.{u, v, w} A)
    letI : HasShift (dgCategoryOverInt.{u, v, w} A).K ℤ :=
      (coneSituationOverInt.{u, v, w} A).shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor (dgCategoryOverInt.{u, v, w} A).K n).Additive := fun n =>
      DGCategory.homotopyShiftAdditive _ (coneSituationOverInt.{u, v, w} A) n
    letI : Pretriangulated (dgCategoryOverInt.{u, v, w} A).K :=
      DGCategory.homotopyPretriangulated _ (coneSituationOverInt.{u, v, w} A)
    letI : Preadditive (dgCategoryOverInt.{u, v, w} B).K :=
      DGCategory.homotopyPreadditive _
    letI : HasZeroObject (dgCategoryOverInt.{u, v, w} B).K :=
      DGCategory.homotopyHasZeroObject _ (coneSituationOverInt.{u, v, w} B)
    letI : HasShift (dgCategoryOverInt.{u, v, w} B).K ℤ :=
      (coneSituationOverInt.{u, v, w} B).shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor (dgCategoryOverInt.{u, v, w} B).K n).Additive := fun n =>
      DGCategory.homotopyShiftAdditive _ (coneSituationOverInt.{u, v, w} B) n
    letI : Pretriangulated (dgCategoryOverInt.{u, v, w} B).K :=
      DGCategory.homotopyPretriangulated _ (coneSituationOverInt.{u, v, w} B)
    letI : F.onK.CommShift ℤ := commShift_onK A B hF
    F.onK.IsTriangulated

DGCategory.DGFunctor.CommShiftB.isDistinguishedTriangle_mapTriangleK, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ExactFunctor.lean, line 427. The attribute's comment: “distinguished triangles are carried to distinguished triangles”.

Tag 0FQF. The functor induced by F on homotopy categories carries the distinguished triangles of K(A) to the distinguished triangles of K(B), the third arrow of the image triangle being formed with the comparison isomorphism F(x[1]) = F(x)[1].

theorem isDistinguishedTriangle_mapTriangleK (CA : ConeSituation A) (CB : ConeSituation B)
    (hF : F.CommShiftB CA.shift CB.shift) :
    letI : HasShift A.K ℤ := CA.shift.kShift
    letI : HasShift B.K ℤ := CB.shift.kShift
    ∀ T : Pretriangulated.Triangle A.K, IsDistinguishedTriangle A CA T →
      IsDistinguishedTriangle B CB (hF.mapTriangleK.obj T)

DGCategory.DGFunctor.CommShiftK.commShift, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ExactFunctor.lean, line 523. The attribute's comment: “the induced functor commutes with the translations”.

Tag 0FQF. The induced functor K(A) ⥤ K(B) commutes with the translation functors.

def commShift (hF : F.CommShiftK SA SB) :
    letI : HasShift A.K ℤ := SA.kShift
    letI : HasShift B.K ℤ := SB.kShift
    F.onK.CommShift ℤ

DGCategory.DGFunctor.CommShiftK.isTriangulated, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ExactFunctor.lean, line 544. The attribute's comment: “the induced functor on homotopy categories is exact, from the translation coherences as data”. References: SGA 4 Vbis (2.5.1), “more general”.

Tag 0FQF. A functor F : A ⥤ B of differential graded categories over R between categories satisfying axioms (A), (B) and (C), which commutes with the shift, induces an exact functor K(A) ⥤ K(B) of triangulated categories.

The commutation is asked for here as a CommShiftK, that is, together with the two coherences of the comparison isomorphisms with the ℤ-action data of the translations. Under the source's hypothesis F(x[1]) = F(x)[1] alone those two are DGCategory.DGFunctor.CommShiftK.ofCommShiftB away, as soon as the translations of the homotopy categories are strict; DGCategory.DGFunctor.CommShiftB.isTriangulated is that form.

theorem isTriangulated (CA : ConeSituation A) (CB : ConeSituation B)
    (hF : F.CommShiftK CA.shift CB.shift) :
    letI : Preadditive A.K := homotopyPreadditive A
    letI : HasZeroObject A.K := homotopyHasZeroObject A CA
    letI : HasShift A.K ℤ := CA.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor A.K n).Additive := fun n => homotopyShiftAdditive A CA n
    letI : Pretriangulated A.K := homotopyPretriangulated A CA
    letI : Preadditive B.K := homotopyPreadditive B
    letI : HasZeroObject B.K := homotopyHasZeroObject B CB
    letI : HasShift B.K ℤ := CB.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor B.K n).Additive := fun n => homotopyShiftAdditive B CB n
    letI : Pretriangulated B.K := homotopyPretriangulated B CB
    letI : F.onK.CommShift ℤ := hF.commShift
    F.onK.IsTriangulated

DGCategory.DGFunctor.CommShiftB.isTriangulated, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ExactFunctor.lean, line 580. The attribute's comment: “the induced functor on homotopy categories is exact, from F(x[1]) = F(x)[1]”. References: SGA 4 Vbis (2.5.1), “more general”.

Tag 0FQF. A functor F : A ⥤ B of differential graded categories over R between categories satisfying axioms (A), (B) and (C) and such that F(x[1]) = F(x)[1] induces an exact functor K(A) ⥤ K(B) of triangulated categories.

The hypothesis on F is exactly the source's, namely CommShiftB; what is assumed besides is not about F but about the two axiom (B) data, namely that the translations they put on the homotopy categories are the strict ones of the source (DGCategory.ShiftAxiomB.IsStrictKShift). That is what makes the two coherences of DGCategory.DGFunctor.CommShiftK — the agreement of the comparison isomorphisms with shiftFunctorZero and shiftFunctorAdd, which Mathlib's Functor.CommShift demands and which F(x[1]) = F(x)[1] does not imply for an arbitrary translation — available, by DGCategory.DGFunctor.CommShiftK.ofCommShiftB.

theorem isTriangulated (CA : ConeSituation A) (CB : ConeSituation B)
    (hA : CA.shift.IsStrictKShift) (hB : CB.shift.IsStrictKShift)
    (hF : F.CommShiftB CA.shift CB.shift) :
    letI : Preadditive A.K := homotopyPreadditive A
    letI : HasZeroObject A.K := homotopyHasZeroObject A CA
    letI : HasShift A.K ℤ := CA.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor A.K n).Additive := fun n => homotopyShiftAdditive A CA n
    letI : Pretriangulated A.K := homotopyPretriangulated A CA
    letI : Preadditive B.K := homotopyPreadditive B
    letI : HasZeroObject B.K := homotopyHasZeroObject B CB
    letI : HasShift B.K ℤ := CB.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor B.K n).Additive := fun n => homotopyShiftAdditive B CB n
    letI : Pretriangulated B.K := homotopyPretriangulated B CB
    letI : F.onK.CommShift ℤ := (CommShiftK.ofCommShiftB hF hA hB).commShift
    F.onK.IsTriangulated

DGCategory.DGFunctor.CommShiftB.isTriangulated_strictify, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/ExactFunctor.lean, line 637. The attribute's comment: “the induced functor on homotopy categories is exact, from F(x[1]) = F(x)[1] alone”. References: SGA 4 Vbis (2.5.1), “more general”.

Tag 0FQF, with nothing assumed but the source's hypothesis. A functor F : A ⥤ B of differential graded categories over R between categories satisfying axioms (A), (B) and (C) and such that F(x[1]) = F(x)[1] induces an exact functor K(A) ⥤ K(B) of triangulated categories, for the triangulated structures attached to the strictifications of the two axiom bundles.

Passing to the strictifications changes nothing about the differential graded categories, their shifts, their cones or the distinguished triangles of Tag 09QW: it only replaces the HasShift field of axiom (B), whose functors kShift_functor already pins down, by the one whose coherence isomorphisms are the canonical ones. So this is Tag 0FQF with no hypothesis beyond the source's F(x[1]) = F(x)[1], and DGCategory.DGFunctor.CommShiftB.isTriangulated is the form in which the strictness is left as a hypothesis, for a caller who already knows it of the translations in hand.

theorem isTriangulated_strictify (CA : ConeSituation A) (CB : ConeSituation B)
    (hF : F.CommShiftB CA.shift CB.shift) :
    letI : Preadditive A.K := homotopyPreadditive A
    letI : HasZeroObject A.K := homotopyHasZeroObject A CA.strictify
    letI : HasShift A.K ℤ := CA.strictify.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor A.K n).Additive := fun n =>
      homotopyShiftAdditive A CA.strictify n
    letI : Pretriangulated A.K := homotopyPretriangulated A CA.strictify
    letI : Preadditive B.K := homotopyPreadditive B
    letI : HasZeroObject B.K := homotopyHasZeroObject B CB.strictify
    letI : HasShift B.K ℤ := CB.strictify.shift.kShift
    letI : ∀ n : ℤ, (shiftFunctor B.K n).Additive := fun n =>
      homotopyShiftAdditive B CB.strictify n
    letI : Pretriangulated B.K := homotopyPretriangulated B CB.strictify
    letI : F.onK.CommShift ℤ := (CommShiftK.ofCommShiftB hF.strictify
      CA.isStrictKShift_strictify CB.isStrictKShift_strictify).commShift
    F.onK.IsTriangulated
Sources

Section22.28 Bimodules#

Section 22.28 of the Stacks Project, Tag 0FQG. 5 tags here are carried by 8 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 0FQH, a definition

Tag 0FQH in the Stacks Project.

DifferentialGraded.Bimodule, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Endomorphism/BimoduleDefs.lean, line 51. The attribute's comment: “(3): a differential graded (A, B)-bimodule, presented as in Tag 0FQI by a right differential graded B-module together with a left differential graded A-action on its underlying complex whose homogeneous multiplications are right B-linear; the grading, the differential and the two Leibniz rules are those of the right module and of the left action. Its underlying graded bimodule, part (2), is DifferentialGraded.Bimodule.toGradedBimodule”.

A differential graded (A, B)-bimodule, presented as a right differential graded B-module with a compatible left differential graded A-action.

structure Bimodule

AlgebraBimodule, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/GradedBimodule.lean, line 99. The attribute's comment: “(1): an (A, B)-bimodule, bundled as a carrier together with the Mathlib classes that discharge the source's clauses — Module A M and Module Bᵐᵒᵖ M (clause (a) by mul_smul, clause (c) by one_smul), SMulCommClass A Bᵐᵒᵖ M (clause (b)), and Module R M with the two IsScalarTowers (R-bilinearity of the two actions)”.

An (A, B)-bimodule over a commutative ring R, for R-algebras A and B: an R-module M with an R-bilinear left A-action and an R-bilinear right B-action which commute.

All of the source's clauses are discharged by the Mathlib classes listed as fields, so the only data is the carrier: mul_smul of the two module structures is clause (a), SMulCommClass is clause (b), one_smul is clause (c), and the two IsScalarTower fields together with the R-module structure are the R-bilinearity of the two actions.

structure AlgebraBimodule (R : Type u) [CommRing R] (A : Type u) [Ring A] [Algebra R A]
    (B : Type u) [Ring B] [Algebra R B]

GradedBimodule, a structure in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/GradedBimodule.lean, line 133. The attribute's comment: “(2): a graded (A, B)-bimodule, an AlgebraBimodule (part (1), the parent projection toAlgebraBimodule) together with a grading by R-submodules which decomposes the module and satisfies Aⁿ Mᵐ ⊆ Mⁿ⁺ᵐ and Mⁿ Bᵐ ⊆ Mⁿ⁺ᵐ”.

A graded (A, B)-bimodule over a commutative ring R, for ℤ-graded R-algebras 𝒜 and ℬ: an (A, B)-bimodule M with a grading M = ⨁ Mⁿ such that Aⁿ Mᵐ ⊆ Mⁿ⁺ᵐ and Mⁿ Bᵐ ⊆ Mⁿ⁺ᵐ.

The underlying (A, B)-bimodule of part (1) is the parent projection GradedBimodule.toAlgebraBimodule.

structure GradedBimodule {R : Type u} [CommRing R] {A : Type u} [Ring A] [Algebra R A]
    (𝒜 : ℤ → Submodule R A) [GradedAlgebra 𝒜] {B : Type u} [Ring B] [Algebra R B]
    (ℬ : ℤ → Submodule R B) [GradedAlgebra ℬ] extends AlgebraBimodule R A B

DifferentialGraded.Bimodule.toGradedBimodule, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/GradedBimodule.lean, line 176. The attribute's comment: “the graded (A, B)-bimodule underlying a differential graded one, which is what makes part (3) a refinement of part (2); the three parts themselves are tagged with stacks_fixed, which plain @[stacks] cannot carry on a structure”.

The graded (A, B)-bimodule underlying a differential graded (A, B)-bimodule: the right differential graded B-module with its grading, the left A-action totalized from the left differential graded action, and the differential forgotten.

This is what makes the three parts of [Stacks, Tag 0FQH] one definition rather than three unrelated ones: part (3), DifferentialGraded.Bimodule, refines part (2), GradedBimodule, which in turn extends part (1), AlgebraBimodule.

noncomputable def Bimodule.toGradedBimodule (M : Bimodule.{u, u} A B) :
    GradedBimodule A.grading B.grading
Tag 0FQI, a lemma

Tag 0FQI in the Stacks Project.

DifferentialGradedModule.bimoduleStructureEquivRightLinearEndomorphismHom, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Endomorphism/Bimodule.lean, line 82.

Compatible left differential graded actions on a fixed right differential graded B-module correspond bijectively to homomorphisms into its right B-linear endomorphism differential graded algebra. The specified equation makes the correspondence canonical on every homogeneous element.

noncomputable def bimoduleStructureEquivRightLinearEndomorphismHom :
    { e : BimoduleStructure A B M ≃ RightLinearEndomorphismHom A B M //
      ∀ (L : BimoduleStructure A B M) (n : ℤ) (a : A.grading n),
        (endomorphismDGA M.toCochainComplex).cochainEquiv n
          ⟨(e L).1.toAlgebraHom a, (e L).1.map_grading n a a.property⟩ = L.1.action n a }
Tag 0FQJ, a lemma

Tag 0FQJ in the Stacks Project.

DifferentialGraded.Bimodule.tensorEquivalence, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Endomorphism/BimoduleTensorEquivalence.lean, line 466.

A differential graded (A, B)-bimodule is canonically a right differential graded module over the graded tensor product of the graded opposite of A with B, and this is an equivalence of categories.

noncomputable def tensorEquivalence : TensorEquivalence A B
Tag 0FQK, a lemma

Tag 0FQK in the Stacks Project.

DifferentialGraded.Bimodule.exists_propertyP_resolution, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Endomorphism/BimodulePropertyP.lean, line 110.

Stacks 0FQK. "Let R be a ring. Let (A, d) and (B, d) be differential graded R-algebras. Let M be a differential graded (A, B)-bimodule. There exists a homomorphism P → M of differential graded (A, B)-bimodules which is a quasi-isomorphism such that P has property (P)."

Property (P) of the resolving bimodule is recorded as a property-(P) filtration of the right differential graded Aᵒᵖ ⊗_R B-module it is by Tag 0FQJ, and being a quasi-isomorphism is Mathlib's QuasiIso on the cochain complex underlying the homomorphism of right B-modules.

theorem exists_propertyP_resolution (A B : DifferentialGradedAlgebra.{u, u} R)
    (M : Bimodule A B) :
    ∃ (P : Bimodule A B) (f : P ⟶ M),
      QuasiIso ((DifferentialGradedModule.forgetToCochainComplex B).map f.rightHom) ∧
        Nonempty (DifferentialGradedModule.PropertyPFiltration (toTensorModule A B P))
Tag 0FQL, a lemma

Tag 0FQL in the Stacks Project.

DifferentialGraded.Bimodule.exists_admissible_telescope, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Endomorphism/BimoduleTelescope.lean, line 117.

Stacks 0FQL. "Let R be a ring. Let (A, d) and (B, d) be differential graded R-algebras. Let P be a differential graded (A, B)-bimodule having property (P) with corresponding filtration F_•, then we obtain a short exact sequence 0 → ⨁ F_iP → ⨁ F_iP → P → 0 of differential graded (A, B)-bimodules which is split as a sequence of graded (A, B)-bimodules."

Property (P) is read on the right differential graded Aᵒᵖ ⊗_R B-module of Tag 0FQJ, and the stages of the filtration are brought back to bimodules through the same construction. The direct sum is recorded by its universal property, the second map is the sum of the inclusions F_iP → P, and the first map is, on the summand F_iP, the identity minus the inclusion F_iP → F_{i+1}P.

theorem exists_admissible_telescope (P : Bimodule A B)
    (F : DifferentialGradedModule.PropertyPFiltration (toTensorModule A B P)) :
    ∃ (S : Bimodule A B) (ι : ∀ i : ℕ, ofTensorModule A B (F.F i) ⟶ S) (α : S ⟶ S) (β : S ⟶ P),
      (∀ (T : Bimodule A B) (g : ∀ i : ℕ, ofTensorModule A B (F.F i) ⟶ T),
          ∃! h : S ⟶ T, ∀ i : ℕ, ι i ≫ h = g i) ∧
        (∀ (i : ℕ) (x : (F.F i).M),
          β.rightHom.toFun ((ι i).rightHom.toFun x) = (F.ι i).toFun x) ∧
        (∀ (i : ℕ) (x : (F.F i).M), α.rightHom.toFun ((ι i).rightHom.toFun x) =
          (ι i).rightHom.toFun x - (ι (i + 1)).rightHom.toFun ((F.incl i).toFun x)) ∧
        IsAdmissibleShortExact A B α β
Sources

Section22.29 Bimodules and tensor product#

Section 22.29 of the Stacks Project, Tag 0FQM. 2 tags here are carried by 5 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 09LM, a lemma

Tag 09LM in the Stacks Project.

DifferentialGraded.Bimodule.tensorDGFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensor.lean, line 1264. The attribute's comment: “the DG functor”.

Stacks 09LM. Tensoring with a differential graded (A, B)-bimodule is a functor of differential graded categories.

noncomputable def tensorDGFunctor (N : Bimodule A B) : TensorDGFunctorData N

DifferentialGraded.Bimodule.tensorCompFunctor, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensor.lean, line 1270. The attribute's comment: “the ordinary functor”.

Stacks 09LM. The induced functor on the categories of differential graded modules.

noncomputable abbrev tensorCompFunctor (N : Bimodule A B) :
    DifferentialGradedModule A ⥤ DifferentialGradedModule B

DifferentialGraded.Bimodule.tensorHomotopyFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensor.lean, line 1277. The attribute's comment: “the homotopy functor”.

Stacks 09LM. The induced functor on the homotopy categories.

noncomputable def tensorHomotopyFunctor (N : Bimodule A B) :
    HomotopyCategory A ⥤ HomotopyCategory B

DifferentialGraded.Bimodule.tensorCompFunctor_quotient, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensor.lean, line 1298. The attribute's comment: “compatibility with the quotient”.

Stacks 09LM. Passing the ordinary tensor functor to homotopy classes yields the tensor functor on the homotopy categories.

noncomputable def tensorCompFunctor_quotient (N : Bimodule A B) :
    (tensorCompFunctor N ⋙ toHomotopyCategory B) ≅
      (toHomotopyCategory A ⋙ tensorHomotopyFunctor N)
Tag 0FQN, a remark

Tag 0FQN in the Stacks Project.

DifferentialGraded.Bimodule.tensorShiftIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorShift.lean, line 229.

Stacks 0FQN. The canonical, sign-free identification (M ⊗_A N)[k] ≅ M[k] ⊗_A N: it sends each pure tensor to the same pure tensor.

noncomputable def tensorShiftIso (N : Bimodule A B) (M : DifferentialGradedModule A) (k : ℤ) :
    { e : shift ((tensorDGFunctor N).functor.obj M) k ≅
        (tensorDGFunctor N).functor.obj (shift M k) //
      ∀ (x : M.M) (y : N.rightModule.M),
        e.hom.toFun (((tensorDGFunctor N).pure M).toLinearMap x y) =
          ((tensorDGFunctor N).pure (shift M k)).toLinearMap x y }
Sources

Section22.30 Bimodules and internal hom#

Section 22.30 of the Stacks Project, Tag 0FQP. 3 tags here are carried by 12 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 0FQQ, a lemma

Tag 0FQQ in the Stacks Project.

DifferentialGradedModule.homHomotopyDescent, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 561. The attribute's comment: “descent of the functor on DG modules”.

The internal hom functor on homotopy categories is the descent of the internal hom functor on differential graded modules: both send P to the chosen presentation of Hom^•_B(N, P) and a homotopy class to the class of the postcomposition.

def homHomotopyDescent (N : DifferentialGradedModule B) (L : BimoduleStructure A B N) :
    toHomotopyCategory B ⋙ homHomotopyCategoryFunctor A B N L ≅
      homModuleFunctor A B N L ⋙ toHomotopyCategory A

DifferentialGradedModule.homDGFunctorData, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHomFunctor.lean, line 315. The attribute's comment: “the DG functor”.

Stacks 0FQQ. The internal hom functor of a differential graded bimodule, as a functor of differential graded categories.

noncomputable def homDGFunctorData : HomDGFunctorData A B N L

DifferentialGradedModule.homModuleFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHomFunctor.lean, line 477. The attribute's comment: “the functor on DG modules”.

Stacks 0FQQ. The internal hom functor on the categories of differential graded modules.

noncomputable def homModuleFunctor :
    DifferentialGradedModule B ⥤ DifferentialGradedModule A

DifferentialGradedModule.homHomotopyCategoryFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHomFunctor.lean, line 485. The attribute's comment: “the functor on homotopy categories”.

Stacks 0FQQ. The internal hom functor on the homotopy categories of differential graded modules.

noncomputable def homHomotopyCategoryFunctor :
    HomotopyCategory B ⥤ HomotopyCategory A
Tag 0FQR, a remark

Tag 0FQR in the Stacks Project.

DifferentialGradedModule.shiftHomIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/BimoduleHomShift.lean, line 1116.

The canonical, sign-free isomorphism Hom_B^gr(N,P)[k] ≅ Hom_B^gr(N,P[k]) of right DG A-modules. The equality says that the associated homogeneous maps have the same value on each homogeneous element of N.

public theorem shiftHomIso (k : ℤ) :
    ∃ (H : HomDGModulePresentation A B N P L)
      (Hk : HomDGModulePresentation A B N (DifferentialGradedModule.shift P k) L)
      (e : DifferentialGradedModule.shift H.module k ≅ Hk.module),
      ∀ (n p : ℤ) (f : (DifferentialGradedModule.shift H.module k).grading n)
        (x : N.grading p),
        ((Hk.homogeneousEquiv n (e.hom.gradedMap n f)).1 x : P.M) =
          (H.homogeneousEquiv (n + k)
            ⟨(f.1 : H.module.M), by
              simpa only [DifferentialGradedModule.shift_grading] using f.property⟩).1 x

DifferentialGradedModule.shiftHomModuleIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHom.lean, line 515.

Stacks 0FQR. The canonical, sign-free isomorphism Hom^•_B(N, P)[k] ≅ Hom^•_B(N, P[k]) of right differential graded A-modules. The displayed equation says that the homogeneous maps associated with corresponding elements take the same value on every homogeneous element of N.

theorem shiftHomModuleIso (k : ℤ) :
    ∃ (H : HomModuleData A B N P L)
      (Hk : HomModuleData A B N (shift P k) L)
      (e : shift H.module k ≅ Hk.module),
      ∀ (n p : ℤ) (f : (shift H.module k).grading n) (x : N.grading p),
        ((Hk.homogeneousEquiv n (e.hom.gradedMap n f)).1 x : P.M) =
          (H.homogeneousEquiv (n + k)
            ⟨(f.1 : H.module.M), by
              simpa only [shift_grading] using f.property⟩).1 x
Tag 09LN, a lemma

Tag 09LN in the Stacks Project.

Bimod.tensorHomEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Category/ModuleCat/Bimod/TensorHom.lean, line 132. The attribute's comment: “ordinary_tensor_hom”. References: SGA 4 IV (12.14), “punctual topos”.

Stacks 09LN, ordinary tensor--hom. For a right A-module M, an (A,B)-bimodule N, and a right B-module P, B-linear maps from M ⊗_A N to P are canonically the same as A-balanced maps from M into the B-linear maps from N to P.

public noncomputable def tensorHomEquiv {A B : Mon (ModuleCat.{u} R)}
    (M : Bimod (𝟙_ (Mon (ModuleCat.{u} R))) A) (N : Bimod A B)
    (P : Bimod (𝟙_ (Mon (ModuleCat.{u} R))) B) :
    rightLinearMaps (M.tensorBimod N) P ≃ₗ[R] balancedRightLinearMaps M N P

Bimod.tensorHomEquiv_apply, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Category/ModuleCat/Bimod/TensorHom.lean, line 254. The attribute's comment: “ordinary_tensor_hom”.

The forward tensor-hom correspondence is evaluation on pure tensors.

public theorem tensorHomEquiv_apply {A B : Mon (ModuleCat.{u} R)}
    (M : Bimod (𝟙_ (Mon (ModuleCat.{u} R))) A) (N : Bimod A B)
    (P : Bimod (𝟙_ (Mon (ModuleCat.{u} R))) B)
    (f : rightLinearMaps (M.tensorBimod N) P) (m : M.X) (n : N.X) :
    (tensorHomEquiv M N P f).1 m n =
      f.1 (CategoryTheory.Limits.coequalizer.π
        (M.actRight ▷ N.X) ((α_ M.X A.X N.X).hom ≫ (M.X ◁ N.actLeft)) |>.hom
        (m ⊗ₜ[R] n))

DifferentialGraded.Bimodule.tensorCompFunctor_adj_homModuleFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorHom.lean, line 535. The attribute's comment: “the differential graded case in degree zero”.

Stacks 09LN, the differential graded case. Tensoring with a differential graded (A, B)-bimodule N is left adjoint to the internal hom out of N, as functors between the categories of differential graded modules: Hom_{Mod^{dg}_{(B,d)}}(M ⊗_A N, P) = Hom_{Mod^{dg}_{(A,d)}}(M, Hom^•_B(N, P)), naturally in M and P.

This is the degree-zero part of the source's isomorphism of Hom complexes — the bijection of the morphism groups of the two categories of differential graded modules — which is why the tag is part-qualified.

def tensorCompFunctor_adj_homModuleFunctor (N : Bimodule A B) :
    tensorCompFunctor N ⊣ homModuleFunctor A B N.rightModule N.leftAction

DifferentialGraded.Bimodule.tensorHomEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorHom.lean, line 550. The attribute's comment: “the differential graded case in degree zero, as a bijection”.

Stacks 09LN, the differential graded case, as the bijection of morphism groups Hom_{Mod^{dg}_{(B,d)}}(M ⊗_A N, P) = Hom_{Mod^{dg}_{(A,d)}}(M, Hom^•_B(N, P)). It is natural in M and P, being the hom-set bijection of DifferentialGraded.Bimodule.tensorCompFunctor_adj_homModuleFunctor.

def tensorHomEquiv (N : Bimodule A B) (M : DifferentialGradedModule A)
    (P : DifferentialGradedModule B) :
    ((tensorCompFunctor N).obj M ⟶ P) ≃
      (M ⟶ (homModuleFunctor A B N.rightModule N.leftAction).obj P)

DifferentialGraded.Bimodule.tensorHomotopyFunctor_adj_homHomotopyCategoryFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorHom.lean, line 569. The attribute's comment: “the differential graded case in degree zero, on the homotopy categories”. References: SGA 5 IIIB (5.2), “partial”.

Stacks 09LN for differential graded modules, on the homotopy categories. Tensoring with a differential graded (A, B)-bimodule N is left adjoint to the internal hom out of N as functors K(A, d) ⥤ K(B, d) and K(B, d) ⥤ K(A, d).

This is the adjunction on the categories of differential graded modules, descended along the passage to homotopy classes: both functors are compatible with it, by Tag 09LM (DifferentialGraded.Bimodule.tensorCompFunctor_quotient) and Tag 0FQQ (DifferentialGradedModule.homHomotopyDescent), and an adjunction descends to a quotient category by CategoryTheory.Quotient.adjunctionOfSquares.

def tensorHomotopyFunctor_adj_homHomotopyCategoryFunctor (N : Bimodule A B) :
    tensorHomotopyFunctor N ⊣ homHomotopyCategoryFunctor A B N.rightModule N.leftAction

DifferentialGraded.Bimodule.exists_tensorHomComplexIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorHom.lean, line 981. The attribute's comment: “the differential graded case in every degree, as an isomorphism of Hom complexes”.

Stacks 09LN, in every degree. For a right differential graded A-module M, a differential graded (A, B)-bimodule N and a right differential graded B-module P the two Hom complexes

Hom^•_{Mod^{dg}_{(B, d)}}(M ⊗_A N, P) and Hom^•_{Mod^{dg}_{(A, d)}}(M, Hom^•_B(N, P))

are isomorphic as complexes of R-modules: in each degree n the homogeneous right-B-linear maps M ⊗_A N → P of degree n correspond R-linearly to the homogeneous right-A-linear maps M → Hom^•_B(N, P) of degree n, by restriction to the pure tensors, and the correspondence commutes with the differentials of the two Hom complexes.

The correspondence is pinned by its value on pure tensors, which is what the first displayed property says: the homogeneous map that the image of ψ at a homogeneous x presents sends y to ψ (x ⊗ y). That property determines it, since the pure tensors generate M ⊗_A N.

The degree-zero part is DifferentialGraded.Bimodule.tensorHomEquiv, which is the bijection of morphism groups of the two categories of differential graded modules; the statement here is the isomorphism of Hom complexes that the source asserts, of which that bijection is the part given by the closed elements of degree zero.

theorem exists_tensorHomComplexIso (N : Bimodule A B) (M : DifferentialGradedModule A)
    (P : DifferentialGradedModule B) :
    ∃ e : ∀ n : ℤ, HomogeneousMap B (tensorObj N M) P n ≃ₗ[R]
        HomogeneousMap A M (homPresentation N P).module n,
      (∀ (n p : ℤ) (ψ : HomogeneousMap B (tensorObj N M) P n) (x : M.M)
          (hx : x ∈ M.grading p) (y : N.rightModule.M),
        ((homPresentation N P).homogeneousEquiv (p + n)
            ⟨(e n ψ).1 x, (e n ψ).2.1 p x hx⟩).1 y =
          ψ.1 (((tensorDGFunctor N).pure M).toLinearMap x y)) ∧
        ∀ (n : ℤ) (ψ : HomogeneousMap B (tensorObj N M) P n),
          e (n + 1) (homogeneousMapDifferential B ψ) =
            homogeneousMapDifferential A (e n ψ)
Sources

Section22.31 Derived Hom#

Section 22.31 of the Stacks Project, Tag 09LF. 6 tags here are carried by 16 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 09LG, an equation

Tag 09LG in the Stacks Project.

DifferentialGradedModule.homModuleFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHomFunctor.lean, line 477. The attribute's comment: “the induced functor Mod_(B,d) → Mod_(A,d)”.

Stacks 0FQQ. The internal hom functor on the categories of differential graded modules.

noncomputable def homModuleFunctor :
    DifferentialGradedModule B ⥤ DifferentialGradedModule A
Tag 09LH, a lemma

Tag 09LH in the Stacks Project.

DifferentialGradedModule.homHomotopyCategoryFunctor_isTriangulated, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHomCommShift.lean, line 577.

Stacks 09LH. The internal hom functor out of a differential graded bimodule is an exact functor of the homotopy categories, for the commutation with the translation of Tag 0FQR.

instance homHomotopyCategoryFunctor_isTriangulated :
    (homHomotopyCategoryFunctor A B N L).IsTriangulated
Tag 09LI, a lemma

Tag 09LI in the Stacks Project.

DifferentialGradedModule.derivedHomData, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomFunctor.lean, line 223.

Stacks 09LI. The right derived functor of F exists; we denote it RHom(N, -) : D(B, d) ⥤ D(A, d). Here F is internal Hom out of the differential graded (A, B)-bimodule N read on homotopy categories and followed by localization (DifferentialGradedModule.homToDerivedCategory), and a right derived functor of it, with its comparison map and the everywhere-definedness of Tag 05SV, is exactly a DifferentialGradedModule.DerivedHomData; so the source's assertion that the derived functor exists is the construction of one such datum, which this is.

It is DifferentialGradedModule.DerivedHomData.ofPropertyIResolutions — the Stacks proof, Tag 06XN applied to the modules with property (I), whose orthogonality to the acyclic modules is Tag 09KS — fed the existence of the resolutions, Tag 09KU (DifferentialGradedModule.exists_propertyI_resolution). Nothing is assumed.

The functor is determined by this up to the canonical isomorphism DifferentialGradedModule.DerivedHomData.functorIso, so a consumer that only needs some RHom(N, -) should take an arbitrary datum rather than this one.

def derivedHomData (A B : DifferentialGradedAlgebra R) (N : DifferentialGradedModule B)
    (L : BimoduleStructure A B N) : DerivedHomData A B N L
Tag 0BYV, a lemma

Tag 0BYV in the Stacks Project.

DifferentialGraded.Bimodule.derivedPrecomp, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomPrecomposition.lean, line 114. The attribute's comment: “the natural transformation”.

Precomposition with a homomorphism f : M ⟶ N of differential graded (A, B)-bimodules induces a natural transformation RHom(N, -) ⟹ RHom(M, -) of derived Hom functors D(B, d) ⥤ D(A, d).

def derivedPrecomp (f : M ⟶ N) : DN.functor ⟶ DM.functor

DifferentialGraded.Bimodule.derivedPrecomp_comparison, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomPrecomposition.lean, line 122. The attribute's comment: “compatibility with the comparison maps”.

The derived transformation is compatible with the canonical comparison maps from ordinary internal hom to derived Hom.

theorem derivedPrecomp_comparison (f : M ⟶ N) :
    DN.comparison ≫
        Functor.whiskerLeft (quasiIsomorphisms' B).Q (derivedPrecomp DN DM f) =
      precompToDerivedNatTrans f ≫ DM.comparison

DifferentialGraded.Bimodule.derivedPrecomp_isIso, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomPrecompositionIso.lean, line 141. The attribute's comment: “quasi-isomorphisms induce natural isomorphisms”.

Stacks 0BYV, the last assertion. If a homomorphism f : M ⟶ N of differential graded (A, B)-bimodules is a quasi-isomorphism of the underlying right differential graded B-modules, then the induced transformation RHom(N, -) ⟹ RHom(M, -) of derived Hom functors is an isomorphism.

Nothing is assumed: DN and DM range over all right derived functors of internal Hom out of the two bimodules, of which the ones of Tag 09LI (DifferentialGradedModule.derivedHomData) are instances.

theorem derivedPrecomp_isIso
    (DN : DerivedHomData A B N.rightModule N.leftAction)
    (DM : DerivedHomData A B M.rightModule M.leftAction)
    (f : M ⟶ N) (hf : QuasiIso ((forgetToCochainComplex B).map f.rightHom)) :
    IsIso (derivedPrecomp DN DM f)
Tag 0CS5, a lemma

Tag 0CS5 in the Stacks Project.

DifferentialGradedModule.extIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomExtIso.lean, line 161. The attribute's comment: “the identification of the cohomology of derived Hom with Ext”.

Degree-n cohomology of derived Hom out of N is Ext^n_{D(B,d)}(N, -) = Hom_{D(B,d)}(N, (-)[n]), as functors on D(B, d).

def extIso (D : DerivedHomData A B N L) (n : ℤ) :
    D.functor ⋙ extCohomologyFunctor A n ≅ extFunctor B N n

DifferentialGradedModule.extLinearEquiv_naturality, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomExtIso.lean, line 225. The attribute's comment: “the identification is natural in the target”.

The identification DifferentialGradedModule.extLinearEquiv is natural in the target: a cohomology class of derived Hom pushed forward along g is sent to the Ext-class followed by the n-shift of g.

theorem extLinearEquiv_naturality (D : DerivedHomData A B N L) (n : ℤ)
    {M M' : derivedCategory' B} (g : M ⟶ M')
    (x : (degreeZeroCohomologyOnLocalization' A).obj ((D.functor.obj M)⟦n⟧)) :
    extLinearEquiv A B N L D n M'
        ((degreeZeroCohomologyOnLocalization' A).map ((D.functor.map g)⟦n⟧') x) =
      extLinearEquiv A B N L D n M x ≫ g⟦n⟧'

DifferentialGraded.Bimodule.extLinearEquiv_derivedPrecomp, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomExtIsoPrecomp.lean, line 374. The attribute's comment: “the identification is natural in the bimodule, with respect to Tag 0BYV”.

Stacks 0CS5, the clause asserting compatibility with Tag 0BYV. For a homomorphism f : M ⟶ N of differential graded (A, B)-bimodules, the identification of Tag 0CS5 carries the pullback along f of a degree-n cohomology class of derived Hom out of N — the transformation of Tag 0BYV, DifferentialGraded.Bimodule.derivedPrecomp — to the Ext-class of N composed with the image of f in D(B, d).

Together with DifferentialGradedModule.extIso and DifferentialGradedModule.extLinearEquiv_naturality this completes Tag 0CS5.

theorem extLinearEquiv_derivedPrecomp (DN : DerivedHomData A B N.rightModule N.leftAction)
    (DM : DerivedHomData A B M.rightModule M.leftAction) (f : M ⟶ N) (n : ℤ)
    (P : derivedCategory' B)
    (x : (degreeZeroCohomologyOnLocalization' A).obj ((DN.functor.obj P)⟦n⟧)) :
    extLinearEquiv A B M.rightModule M.leftAction DM n P
        ((degreeZeroCohomologyOnLocalization' A).map
          (((derivedPrecomp DN DM f).app P)⟦n⟧') x) =
      (quasiIsomorphisms' B).Q.map ((toHomotopyCategory B).map f.rightHom) ≫
        extLinearEquiv A B N.rightModule N.leftAction DN n P x

DifferentialGradedModule.General.homComplexExtEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/HomComplexExtGeneral.lean, line 437. The attribute's comment: “the cohomology of ordinary differential graded Hom is Ext out of a module orthogonal to the acyclics, at independent universes”.

H^n(Hom^•_{(A, d)}(L, M)) = Ext^n_{D(A, d)}(L, M), at independent universes, for L orthogonal on the left to the acyclic modules.

This is the content that Tag 0CS5 and Tag 0BYW together provide, in the form Tag 0CS6 asks for: Tag 09LC identifies the cohomology of the Hom complex with the morphism groups of K(A, d) (DifferentialGradedModule.General.homComplexHomologyEquiv), and the localization functor is bijective on the morphisms out of a left-orthogonal object (DifferentialGradedModule.General.bijective_q_map_of_leftOrthogonal), which is the mechanism of Tag 09KY; the shift is moved across the localization by its commutation with the translation.

With Ext^n_{D(A, d)}(L, M) = Hom_{D(A, d)}(L, M[n]), as everywhere in Tag 0CS6, the right-hand side is that Ext-group.

def homComplexExtEquiv (n : ℤ)
    (hL : (acyclic.{u, v, w} A).leftOrthogonal ((toHomotopyCategory A).obj L)) :
    ↥((homComplex A L M).homology n) ≃+
      ((quasiIsomorphisms.{u, v, w} A).Q.obj ((toHomotopyCategory A).obj L) ⟶
        ((quasiIsomorphisms.{u, v, w} A).Q.obj ((toHomotopyCategory A).obj M))⟦n⟧)
Tag 0BYW, a lemma

Tag 0BYW in the Stacks Project.

DifferentialGradedModule.DerivedHomData.isIso_comparison_of_bijective_q_map, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomLeftOrthogonal.lean, line 217. The attribute's comment: “the comparison under the Hom hypothesis”.

If Hom_{D(B,d)}(N, N') = Hom_{K(Mod_{(B,d)})}(N, N') for all N' ∈ K(B, d), then RHom(N, M) = Hom_{Mod^{dg}_{(B,d)}}(N, M) functorially in M in D(B, d).

The equality of morphism modules is the hypothesis hN, that the localization Q : K(B, d) ⥤ D(B, d) is bijective on the morphisms out of N. The functorial equality of the conclusion is the invertibility of the comparison natural transformation of Tag 09LI, from ordinary differential graded Hom out of N read in D(A, d) to derived Hom precomposed with the localization; DifferentialGradedModule.DerivedHomData.comparisonNatIso is the resulting isomorphism of functors.

Under the hypothesis the functor being derived already inverts the quasi-isomorphisms (DifferentialGradedModule.isInvertedBy_homToDerivedCategory_of_bijective_q_map), and the comparison of any right derived functor of a functor that inverts them is invertible.

theorem isIso_comparison_of_bijective_q_map (D : DerivedHomData A B N L)
    (hN : ∀ P : HomotopyCategory B, Function.Bijective
      ((quasiIsomorphisms' B).Q.map : ((toHomotopyCategory B).obj N ⟶ P) → _)) :
    IsIso D.comparison

DifferentialGradedModule.DerivedHomData.isIso_comparison_of_propertyP, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomLeftOrthogonal.lean, line 232. The attribute's comment: “the property-(P) sufficient condition”.

A differential graded (A, B)-bimodule whose underlying B-module has property (P) computes derived Hom by ordinary differential graded Hom, canonically and naturally in the second argument.

A module with property (P) is orthogonal on the left to the acyclic modules, which is Tag 09KM, and the localization is bijective on the morphisms out of such a module, which is the mechanism of Tag 09KY; so the hypothesis of the previous statement holds.

theorem isIso_comparison_of_propertyP (D : DerivedHomData A B N L)
    (hN : Nonempty (PropertyPFiltration N)) :
    IsIso D.comparison

DifferentialGradedModule.DerivedHomData.comparisonNatIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomLeftOrthogonal.lean, line 242. The attribute's comment: “as an identification of functors”.

RHom(N, -) = Hom_{Mod^{dg}_{(B,d)}}(N, -) as functors. Ordinary differential graded Hom out of N, read in D(A, d), is derived Hom out of N precomposed with the localization, by the comparison map of Tag 09LI and naturally in the second argument.

def comparisonNatIso (D : DerivedHomData A B N L)
    (hN : ∀ P : HomotopyCategory B, Function.Bijective
      ((quasiIsomorphisms' B).Q.map : ((toHomotopyCategory B).obj N ⟶ P) → _)) :
    homToDerivedCategory A B N L ≅ (quasiIsomorphisms' B).Q ⋙ D.functor

DifferentialGradedModule.General.homComplexExtEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/HomComplexExtGeneral.lean, line 437. The attribute's comment: “ordinary differential graded Hom out of a left-orthogonal module computes derived Hom, read on cohomology, at independent universes”.

H^n(Hom^•_{(A, d)}(L, M)) = Ext^n_{D(A, d)}(L, M), at independent universes, for L orthogonal on the left to the acyclic modules.

This is the content that Tag 0CS5 and Tag 0BYW together provide, in the form Tag 0CS6 asks for: Tag 09LC identifies the cohomology of the Hom complex with the morphism groups of K(A, d) (DifferentialGradedModule.General.homComplexHomologyEquiv), and the localization functor is bijective on the morphisms out of a left-orthogonal object (DifferentialGradedModule.General.bijective_q_map_of_leftOrthogonal), which is the mechanism of Tag 09KY; the shift is moved across the localization by its commutation with the translation.

With Ext^n_{D(A, d)}(L, M) = Hom_{D(A, d)}(L, M[n]), as everywhere in Tag 0CS6, the right-hand side is that Ext-group.

def homComplexExtEquiv (n : ℤ)
    (hL : (acyclic.{u, v, w} A).leftOrthogonal ((toHomotopyCategory A).obj L)) :
    ↥((homComplex A L M).homology n) ≃+
      ((quasiIsomorphisms.{u, v, w} A).Q.obj ((toHomotopyCategory A).obj L) ⟶
        ((quasiIsomorphisms.{u, v, w} A).Q.obj ((toHomotopyCategory A).obj M))⟦n⟧)

DifferentialGradedModule.General.homComplexExtEquivOfPropertyP, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/HomComplexExtGeneral.lean, line 457. The attribute's comment: “the property-(P) sufficient condition, read on cohomology, at independent universes”.

H^n(Hom^•_{(A, d)}(L, M)) = Ext^n_{D(A, d)}(L, M) for L with property (P), at independent universes.

A differential graded module with property (P) is orthogonal on the left to the acyclic modules, which is Tag 09KM at independent universes (DifferentialGradedModule.General.leftOrthogonal_acyclic_of_propertyP), so the previous identification applies. This is the source's own sufficient condition in Tag 0BYW.

def homComplexExtEquivOfPropertyP {L M : DifferentialGradedModule.{u, v, max v w} A} (n : ℤ)
    (hL : Nonempty (PropertyPFiltration L)) :
    ↥((homComplex A L M).homology n) ≃+
      ((quasiIsomorphisms.{u, v, max v w} A).Q.obj ((toHomotopyCategory A).obj L) ⟶
        ((quasiIsomorphisms.{u, v, max v w} A).Q.obj ((toHomotopyCategory A).obj M))⟦n⟧)

DifferentialGradedModule.propertyPModelExtEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/PropertyPDerivedModel.lean, line 173. The attribute's comment: “the cohomology of the differential graded Hom complex of chosen property-(P) representatives is Ext between the objects they represent, at independent universes”.

H^n(Hom^•_{(A, d)}(P_M, P_N)) = Ext^n_{D(A, d)}(M, N) for arbitrary M, N in D(A, d), where P_M and P_N are the chosen property-(P) representatives.

This is the content of Tag 0BYW with no hypothesis on M or N: the property-(P) reduction is performed by the choice of representative rather than assumed. On the representatives it is DifferentialGradedModule.General.homComplexExtEquivOfPropertyP, and the two isomorphisms DifferentialGradedModule.propertyPModelIso transport the Ext-group from the representatives to the objects, the shift being moved across by the commutation of the shift functor with an isomorphism.

def propertyPModelExtEquiv (M N : derivedCategory.{u, v, max v w} A) (n : ℤ) :
    ↥((General.homComplex A (propertyPModel.{u, v, w} A M)
        (propertyPModel.{u, v, w} A N)).homology n) ≃+ (M ⟶ N⟦n⟧)
Sources

Section22.32 Variant of derived Hom#

Section 22.32 of the Stacks Project, Tag 09LJ. 1 tag here is carried by 12 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 09LK, a lemma

Tag 09LK in the Stacks Project.

CochainComplex.homComplexesFunctorCommShift, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomCommShift.lean, line 88. The attribute's comment: “the functor Hom(K, -) being derived commutes with the translation: the shift comparisons Hom(K, X[n]) = Hom(K, X)[n] are natural in X and compatible with shiftFunctorZero and shiftFunctorAdd, which is the coherence Functor.mapTriangle is formed with”.

Hom(K, -) commutes with the translation. The shift comparisons Hom(K, X[n]) ≅ Hom(K, X)[n] of Tag 09LE are natural in X and compatible with CategoryTheory.shiftFunctorZero and CategoryTheory.shiftFunctorAdd, so they make Hom(K, -) : CochainComplex B ℤ ⥤ Mod_{(E, d)} a functor commuting with the shift by ℤ.

noncomputable instance homComplexesFunctorCommShift :
    (homComplexesFunctor B K).CommShift ℤ

DifferentialGradedModule.derivedForgetData, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomData.lean, line 136. The attribute's comment: “the forgetful functor D(E, d) ⥤ D(Ab) of the conclusion, together with the identification of its value on an ordinary differential graded module with the underlying complex of that module, which is the phrase on taking associated complexes”.

The forgetful functor datum of Tag 09LK exists, with no hypothesis beyond a differential graded algebra over a commutative ring and a chosen derived category of complexes of modules over that ring.

The functor is DifferentialGradedModule.derivedForget, the underlying-complex functor descended through the quotient by homotopy and then through the localization at the quasi-isomorphisms, and the identification is the composite of those two descents, DifferentialGradedModule.derivedForgetFactorization and DifferentialGradedModule.forgetHomotopyToDerivedCategoryIso.

def derivedForgetData : DerivedForgetData A

CochainComplex.homHomotopyFunctor_isTriangulated, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomExactness.lean, line 219. The attribute's comment: “the differential graded Hom functor Hom(K, -) : K(B) ⥤ K(E, d) is exact as a functor of triangulated categories -- it commutes with the translation and carries distinguished triangles to distinguished triangles, which is the exactness of the functor being derived read on the homotopy categories”.

Stacks 09LK, the exactness of Hom(K, -) on the homotopy categories. The differential graded Hom functor Hom(K, -) : K(B) ⥤ K(E, d) of Tag 09LE is exact as a functor of triangulated categories: it commutes with the translation, which is CochainComplex.homHomotopyFunctorCommShift, and it carries distinguished triangles to distinguished triangles.

This is the exactness asserted by Tag 09LK of the functor being derived, read on the homotopy categories. It is obtained from the exactness of the descent of Hom(K, -) along the quotient by homotopy, transported along CochainComplex.homHomotopyFunctorLiftIso.

noncomputable instance homHomotopyFunctor_isTriangulated :
    (homHomotopyFunctor B K).IsTriangulated

CochainComplex.homToDerivedCategory_isTriangulated, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomExactness.lean, line 231. The attribute's comment: “the functor Hom(K, -) : K(B) ⥤ D(E, d) being right derived is exact as a functor of triangulated categories”.

Stacks 09LK, the exactness of the functor being right derived. The functor Hom(K, -) : K(B) ⥤ D(E, d) of Tag 09LK — the differential graded Hom functor followed by the localization of the differential graded E-modules at the quasi-isomorphisms — is exact as a functor of triangulated categories, the localization functor being exact.

noncomputable instance homToDerivedCategory_isTriangulated :
    (homToDerivedCategory B K).IsTriangulated

CochainComplex.derivedHomReflectorFunctor, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomFunctorAssembly.lean, line 232. The attribute's comment: “the functor itself: R Hom(K, -) : D(A) ⥤ D(E, d), for E the endomorphism differential graded category of K”.

The functor R Hom(K, -) : D(A) ⥤ D(E, d) of [Stacks, Tag 09LK], for E = C(K, K) the endomorphism differential graded category of K in Comp^dg(A): the reflector-and-descend functor DGCategory.phiReflector of steps 1 and 2, taken at the chosen witnesses CochainComplex.derivedHomReflectorL and CochainComplex.derivedHomReflector_isZero.

Deliberately an abbrev: the exactness and shift compatibility of DGCategory.phiReflector (DGCategory.phiReflectorCommShift, DGCategory.phiReflector_isTriangulated) and the identification (*) and step 3 at an arbitrary reflector all apply to it after reduction, so nothing has to be re-registered or restated at the chosen witnesses — and in particular no second CommShift term competes with the canonical one.

abbrev derivedHomReflectorFunctor : DerivedCategory A ⥤
    DGCategory.RightModule.derivedCategory
      (DGCategory.endDGCategory (CochainComplex.dgCategory A) K)

CochainComplex.homHomotopyFunctorCommShift, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomHomotopyCommShift.lean, line 195. The attribute's comment: “the differential graded Hom functor Hom(K, -) : K(B) ⥤ K(E, d) commutes with the translation, the shift comparisons of 09LE descending along the quotient by homotopy”.

Hom(K, -) : K(B) ⥤ K(E, d) commutes with the translation.

noncomputable instance homHomotopyFunctorCommShift :
    (homHomotopyFunctor B K).CommShift ℤ

CochainComplex.homToDerivedCategoryCommShift, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomHomotopyCommShift.lean, line 202. The attribute's comment: “the functor Hom(K, -) : K(B) ⥤ D(E, d) being right derived commutes with the translation”.

The functor being right derived in Tag 09LK commutes with the translation.

noncomputable instance homToDerivedCategoryCommShift :
    (homToDerivedCategory B K).CommShift ℤ

CochainComplex.isDistinguishedTriangle_homComplexesFunctor_triangleOfDegreewiseSplit, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomTriangles.lean, line 213. The attribute's comment: “the functor Hom(K, -) carries the triangle of a degreewise split short exact sequence of complexes to a distinguished triangle of K(E, d) -- preservation of distinguished triangles for the functor being derived”.

Hom(K, -) carries the triangle of a degreewise split short exact sequence of complexes to a distinguished triangle of K(E, d). This is the triangle half of the exactness clause of Tag 09LK for the functor being derived.

theorem isDistinguishedTriangle_homComplexesFunctor_triangleOfDegreewiseSplit :
    IsDistinguishedTriangle (DGCategory.endAlgebra (dgCategory B) K)
      (Pretriangulated.Triangle.mk
        ((toHomotopyCategory _).map ((homComplexesFunctor B K).map S.f))
        ((toHomotopyCategory _).map ((homComplexesFunctor B K).map S.g))
        ((toHomotopyCategory _).map (homComplexesConnecting B K S σ) ≫
          eqToHom (CategoryTheory.Quotient.functor_obj_shift
            (homotopyRel (DGCategory.endAlgebra (dgCategory B) K)) ℤ
            (DGCategory.representableModule (dgCategory B) K S.X₁) 1).symm))

CochainComplex.exists_isDistinguishedTriangle_homComplexesFunctor, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomTriangles.lean, line 242. The attribute's comment: “the functor Hom(K, -) being derived preserves distinguished triangles: every distinguished triangle of K(B) is the triangle of a degreewise split short exact sequence of complexes, and its image, with the third arrow read through the shift comparison Hom(K, X[1]) = Hom(K, X)[1], is a distinguished triangle of K(E, d)”. References: SGA 4½ Etat 0 (1.2.4).

Hom(K, -) preserves distinguished triangles. Every distinguished triangle of K(B) is isomorphic to the triangle of a degreewise split short exact sequence of complexes, and the image of that triangle under Hom(K, -) — with its third arrow corrected by the shift comparison Hom(K, X[1]) ≅ Hom(K, X)[1] — is a distinguished triangle of K(E, d).

This is the preservation of distinguished triangles asserted by Tag 09LK of the functor being derived. It is stated for a presentation of the triangle by a degreewise split sequence rather than as CategoryTheory.Functor.IsTriangulated; the CategoryTheory.Functor.CommShift ℤ that the latter also requires is CochainComplex.homComplexesFunctorCommShift, whose degree-one component is the comparison appearing here.

theorem exists_isDistinguishedTriangle_homComplexesFunctor [HasZeroObject B]
    [HasBinaryBiproducts B]
    (T : Pretriangulated.Triangle (HomotopyCategory B (ComplexShape.up ℤ)))
    (hT : T ∈ Pretriangulated.distinguishedTriangles
      (C := HomotopyCategory B (ComplexShape.up ℤ))) :
    ∃ (S : ShortComplex (CochainComplex B ℤ))
      (σ : ∀ n, (S.map (eval B (ComplexShape.up ℤ) n)).Splitting),
      Nonempty (T ≅ trianglehOfDegreewiseSplit S σ) ∧
        IsDistinguishedTriangle (DGCategory.endAlgebra (dgCategory B) K)
          (Pretriangulated.Triangle.mk
            ((toHomotopyCategory _).map ((homComplexesFunctor B K).map S.f))
            ((toHomotopyCategory _).map ((homComplexesFunctor B K).map S.g))
            ((toHomotopyCategory _).map (homComplexesConnecting B K S σ) ≫
              eqToHom (CategoryTheory.Quotient.functor_obj_shift
                (homotopyRel (DGCategory.endAlgebra (dgCategory B) K)) ℤ
                (DGCategory.representableModule (dgCategory B) K S.X₁) 1).symm))

DGCategory.derivedHomForgetPhiReflectorBetaIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomUnitAppIdCore.lean, line 593. The attribute's comment: “the reduction clause: the functor REDUCES TO THE USUAL R Hom(K, -) on taking associated complexes of abelian groups, under the source's own hypothesis h and the reflector data of steps 1 and 2”.

R Hom(K, -) ≅ R̃ ⋙ U, with nothing owed.

def derivedHomForgetPhiReflectorBetaIso :
    CochainComplex.derivedHomForgetFunctor A K h ≅ phiReflectorForget A K L hΦ

DGCategory.phiReflectorCommShift, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/RightModule/DerivedHomPhiReflectorExact.lean, line 98. The attribute's comment: “half of exactness as a functor of TRIANGULATED categories: the translation compatibility of R Hom(K, -) : D(A) ⥤ D(E, d), relative to which the exactness below is stated”.

R̃ : D(A) ⥤ D(E) commutes with the translations. The comparison isomorphisms are those of the composite J ⋙ ev_K: on the first factor they come from CategoryTheory.Functor.commShiftOfLocalization at the localization DGCategory.phiComparisonLocalization, on the second from the derived evaluation functor.

This names the term global instance search already produces for this goal; it is deliberately not itself registered as an instance, since CategoryTheory.Functor.CommShift is data and a second registration would be a diamond.

def phiReflectorCommShift : (phiReflector A K L hΦ).CommShift ℤ

DGCategory.phiReflector_isTriangulated, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/DifferentialGraded/RightModule/DerivedHomPhiReflectorExact.lean, line 106. The attribute's comment: “the other half: R Hom(K, -) : D(A) ⥤ D(E, d) is EXACT -- it carries distinguished triangles to distinguished triangles, for the translation compatibility above”.

R̃ : D(A) ⥤ D(E) is exact. It is the composite of the descent J of step 1 through the localization q of K(Comp^dg(A)) at the complexes Φ⁻¹ N, which is exact by DGCategory.isTriangulated_derivedReflectorDescent, with evaluation at K on the derived categories; both factors are exact, hence so is R̃.

instance phiReflector_isTriangulated : (phiReflector A K L hΦ).IsTriangulated
Sources

Section22.33 Derived tensor product#

Section 22.33 of the Stacks Project, Tag 09LP. 10 tags here are carried by 50 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 09LQ, an equation

Tag 09LQ in the Stacks Project.

DifferentialGraded.Bimodule.tensorCompFunctor, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensor.lean, line 1270. The attribute's comment: “the functor Mod_(A,d) -> Mod_(B,d), M |-> M (x)_A N”.

Stacks 09LM. The induced functor on the categories of differential graded modules.

noncomputable abbrev tensorCompFunctor (N : Bimodule A B) :
    DifferentialGradedModule A ⥤ DifferentialGradedModule B
Tag 09LR, a lemma

Tag 09LR in the Stacks Project.

DifferentialGraded.Bimodule.tensorHomotopyFunctor_isTriangulated', a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorTriangulated.lean, line 660.

Stacks 09LR. Tensoring with a differential graded (A, B)-bimodule is an exact functor from the homotopy category of differential graded A-modules to that of differential graded B-modules: it commutes with translation and carries distinguished triangles to distinguished triangles.

theorem tensorHomotopyFunctor_isTriangulated' (N : Bimodule A B) :
    ∃ h : (tensorHomotopyFunctor N).CommShift ℤ,
      letI := h
      (tensorHomotopyFunctor N).IsTriangulated
Tag 09LS, a lemma

Tag 09LS in the Stacks Project.

DifferentialGraded.Bimodule.tensorFunctorToDerivedCategory_isLeftDerivable, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorFunctor.lean, line 110. The attribute's comment: “existence in the pro-object sense”.

Stacks Tag 09LS, in the source's own sense. Tensoring with the bimodule N, followed by localization of the target, is left derivable with respect to the quasi-isomorphisms: its left derived functor is defined at every object of K(A, d), meaning that the pro-object Qis(A)/X ⥤ D(B, d) is essentially constant (Tag 05SV).

theorem tensorFunctorToDerivedCategory_isLeftDerivable (N : Bimodule A B) :
    (tensorFunctorToDerivedCategory N).IsLeftDerivable (quasiIsomorphisms' A)

DifferentialGraded.Bimodule.tensorFunctorToDerivedCategory_hasLeftDerivedFunctor, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorFunctor.lean, line 120. The attribute's comment: “existence of the total left derived functor”.

Stacks Tag 09LS, in Mathlib's Kan extension sense. Tensoring with the bimodule N, followed by localization of the target, has a total left derived functor: a right Kan extension along the localization of K(A, d) at the quasi-isomorphisms. This is what names - ⊗_A^𝐋 N as a functor on D(A, d).

theorem tensorFunctorToDerivedCategory_hasLeftDerivedFunctor (N : Bimodule A B) :
    (tensorFunctorToDerivedCategory N).HasLeftDerivedFunctor (quasiIsomorphisms' A)

DifferentialGraded.Bimodule.derivedTensorFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorFunctor.lean, line 128. The attribute's comment: “the derived tensor functor”.

The derived tensor product - ⊗_A^𝐋 N : D(A, d) ⥤ D(B, d) of Stacks Tag 09LS: the total left derived functor of tensoring with N followed by localization.

def derivedTensorFunctor (N : Bimodule A B) : derivedCategory' A ⥤ derivedCategory' B

DifferentialGraded.Bimodule.derivedTensorFunctor_isLeftDerivedFunctor, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorFunctor.lean, line 149. The attribute's comment: “universal property”.

The universal property of Stacks Tag 09LS: the comparison DifferentialGraded.Bimodule.derivedTensorFunctorCounit exhibits - ⊗_A^𝐋 N as the left derived functor of tensoring with N followed by localization, with respect to the quasi-isomorphisms.

instance derivedTensorFunctor_isLeftDerivedFunctor (N : Bimodule A B) :
    (derivedTensorFunctor N).IsLeftDerivedFunctor
      (derivedTensorFunctorCounit N) (quasiIsomorphisms' A)
Tag 09S3, a lemma

Tag 09S3 in the Stacks Project.

DifferentialGraded.Bimodule.derivedTensorNatTrans, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorBimoduleMap.lean, line 299. The attribute's comment: “the natural transformation 1 (x) f”.

Stacks 09S3, the morphism of functors. A homomorphism f : N ⟶ N' of differential graded (A, B)-bimodules induces 1 ⊗ f : - ⊗_A^𝐋 N ⟶ - ⊗_A^𝐋 N', a natural transformation of the derived tensor functors of Tag 09LS on D(A, d).

It is the descent of DifferentialGraded.Bimodule.ordinaryTensorNatTrans along the localization: - ⊗_A^𝐋 N' is a right Kan extension of ordinary tensoring with N', so the transformation is the unique one compatible with the two comparisons of Tag 09LS (DifferentialGraded.Bimodule.derivedTensorNatTrans_counit).

def derivedTensorNatTrans {N N' : Bimodule A B} (f : N ⟶ N') :
    derivedTensorFunctor N ⟶ derivedTensorFunctor N'

DifferentialGraded.Bimodule.isIso_derivedTensorNatTrans_app_shift_regularModule, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorQuasiIsoDevissage.lean, line 198. The attribute's comment: “the second assertion at the shifts A[k] of the algebra, where the quasi-isomorphism hypothesis enters”.

Clause (3) of the dévissage of Stacks 0FQE for 1 ⊗ f: for a homomorphism f : N ⟶ N' of differential graded (A, B)-bimodules which is a quasi-isomorphism of right differential graded B-modules, the transformation 1 ⊗ f : - ⊗_A^𝐋 N ⟶ - ⊗_A^𝐋 N' is invertible at the class of every shift A[k] of the regular module.

The shift A[k] is orthogonal on the left to the acyclic modules by Tag 09K1, so both comparisons of Tag 09LS are invertible there and 1 ⊗ f becomes the ordinary map A[k] ⊗_A N ⟶ A[k] ⊗_A N', which is the quasi-isomorphism f[k].

theorem isIso_derivedTensorNatTrans_app_shift_regularModule {N N' : Bimodule A B} (f : N ⟶ N')
    (hf : QuasiIso ((forgetToCochainComplex B).map f.rightHom)) (k : ℤ) :
    IsIso ((derivedTensorNatTrans f).app
      (((toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj (regularModule A))⟦k⟧))

DifferentialGraded.Bimodule.isIso_derivedTensorNatTrans_app_sigma, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorQuasiIsoDevissage.lean, line 237. The attribute's comment: “the second assertion at a direct sum, from the summands”.

Clause (1) of the dévissage of Stacks 0FQE for 1 ⊗ f: the transformation 1 ⊗ f : - ⊗_A^𝐋 N ⟶ - ⊗_A^𝐋 N' is invertible at a direct sum of objects of D(A, d) at which it is invertible.

Both functors are left adjoints by Tag 09LT, hence preserve direct sums, so the component of 1 ⊗ f at ⨁ᵢ Kᵢ is the comparison of the two colimit cocones induced by its components at the Kᵢ.

theorem isIso_derivedTensorNatTrans_app_sigma {N N' : Bimodule A B} (f : N ⟶ N')
    {ι : Type u} (K : ι → derivedCategory' A)
    (h : ∀ i, IsIso ((derivedTensorNatTrans f).app (K i))) :
    IsIso ((derivedTensorNatTrans f).app (∐ K))

DifferentialGraded.Bimodule.derivedTensorTwoOutOfThree, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorQuasiIsoDevissage.lean, line 268. The attribute's comment: “the second assertion along a distinguished triangle, two out of three”.

Clause (2) of the dévissage of Stacks 0FQE for the transformations 1 ⊗ f. The derived tensor functors are exact and 1 ⊗ f commutes with the translation, so its components form a morphism of distinguished triangles, to which the five lemma of Tag 014A applies.

theorem derivedTensorTwoOutOfThree (A B : DifferentialGradedAlgebra.{u, u} R) :
    DerivedTensorTwoOutOfThree A B

DifferentialGraded.Bimodule.quasiIsoInvertsDerivedTensor, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorQuasiIsoDevissage.lean, line 299. The attribute's comment: “the second assertion”.

The second assertion of Stacks 09S3. A homomorphism f : N ⟶ N' of differential graded (A, B)-bimodules that is a quasi-isomorphism of right differential graded B-modules induces an isomorphism 1 ⊗ f : - ⊗_A^𝐋 N ⟶ - ⊗_A^𝐋 N' of functors D(A, d) ⥤ D(B, d).

theorem quasiIsoInvertsDerivedTensor (A B : DifferentialGradedAlgebra.{u, u} R) :
    QuasiIsoInvertsDerivedTensor A B
Tag 0GZ2, a lemma

Tag 0GZ2 in the Stacks Project.

DifferentialGraded.Bimodule.LeftPropertyP, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorLeftPropertyP.lean, line 104. The attribute's comment: “the hypothesis: property (P) as a left differential graded A-module”.

The differential graded (A, B)-bimodule N has property (P) as a left differential graded A-module: the left differential graded A-module underlying it, read as a right differential graded A^{opp}-module through the equivalence of Tag 0FQ0, carries a property-(P) filtration in the sense of Tag 09KK.

def LeftPropertyP (N : Bimodule A B) : Prop

DifferentialGraded.Bimodule.isIso_derivedTensorFunctorCounit_app_of_leftPropertyP', a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorLeftPropertyPProof.lean, line 156.

For a differential graded (A, B)-bimodule N with property (P) as a left differential graded A-module and every differential graded A-module M, the comparison M ⊗_A^𝐋 N ⟶ M ⊗_A N of Tag 09LS is an isomorphism in D(B, d).

theorem isIso_derivedTensorFunctorCounit_app_of_leftPropertyP' (N : Bimodule A B)
    (hP : LeftPropertyP N) (M : DifferentialGradedModule A) :
    IsIso ((derivedTensorFunctorCounit N).app ((toHomotopyCategory A).obj M))

DifferentialGraded.Bimodule.derivedTensorIsoOfLeftPropertyP', a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorLeftPropertyPProof.lean, line 165. The attribute's comment: “as an isomorphism of functors”.

For a differential graded (A, B)-bimodule N with property (P) as a left differential graded A-module, the isomorphism - ⊗_A^𝐋 N ≅ - ⊗_A N of functors D(A, d) ⥤ D(B, d).

def derivedTensorIsoOfLeftPropertyP' (N : Bimodule A B) (hP : LeftPropertyP N) :
    (quasiIsomorphisms' A).Q ⋙ derivedTensorFunctor N ≅ tensorFunctorToDerivedCategory N
Tag 09LT, a lemma

Tag 09LT in the Stacks Project.

DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedHomFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorHomAdjunction.lean, line 240. References: SGA 5 IIIB (5.2), “5.2.3”.

Stacks 09LT. The derived tensor product - ⊗_A^𝐋 N : D(A, d) ⥤ D(B, d) of Tag 09LS is a left adjoint to derived Hom RHom(N, -) : D(B, d) ⥤ D(A, d) of Tag 09LI, for a differential graded (A, B)-bimodule N. Nothing is assumed.

This is DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedHom with both of its hypotheses supplied: Tag 09LN by DifferentialGraded.Bimodule.tensorHomotopyFunctor_adj_homHomotopyCategoryFunctor, and Tag 09KU by DifferentialGradedModule.exists_propertyI_resolution, which also pins the derived Hom functor to that of DifferentialGradedModule.derivedHomData.

The degree-zero scope of the Tag 09LN input does not limit this. What is proved of Tag 09LN for differential graded modules is the bijection of the morphism groups of the two categories, not the isomorphism of Hom complexes in all degrees that the source also states there. But Tag 09LT asserts an adjunction of functors between the derived categories — a bijection of morphism groups, natural in both variables — and it is deduced from an adjunction of functors between the homotopy categories, which is again a bijection of morphism groups. The all-degrees half of Tag 09LN is neither used nor needed, so this is Tag 09LT in full and the tag is bare.

def derivedTensorFunctor_adj_derivedHomFunctor (N : Bimodule A B) :
    derivedTensorFunctor N ⊣ (derivedHomData A B N.rightModule N.leftAction).functor

DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedHomFunctor_homEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorHomAdjunction.lean, line 250. The attribute's comment: “as a bijection of morphism groups”.

Stacks 09LT, as the bifunctorial identification of morphism groups Hom_{D(B,d)}(M ⊗_A^𝐋 N, P) ≃ Hom_{D(A,d)}(M, RHom(N, P)) that Stacks 0BYX, Example 22.33.2 uses. Nothing is assumed: it is the hom-set bijection of DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedHomFunctor.

def derivedTensorFunctor_adj_derivedHomFunctor_homEquiv (N : Bimodule A B)
    (M : derivedCategory' A) (P : derivedCategory' B) :
    ((derivedTensorFunctor N).obj M ⟶ P) ≃
      (M ⟶ (derivedHomData A B N.rightModule N.leftAction).functor.obj P)
Tag 0BYX, an example

Tag 0BYX in the Stacks Project.

DifferentialGraded.Bimodule.tensorRegularRightNatIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorRegularRight.lean, line 255. The attribute's comment: “restriction of scalars is tensoring with the regular bimodule, on differential graded modules”.

Stacks 0BYX, the tensor half, on differential graded modules. Restriction of scalars along ψ : C → B is tensoring with the regular (B, C)-bimodule, naturally in the module.

Naturality is an equality of two homomorphisms out of a tensor product, so it is checked on pure tensors, where both sides send x ⊗ b to f(x) b.

def tensorRegularRightNatIso (ψ : C.Hom B) :
    tensorCompFunctor (regularRight ψ) ≅ restrictScalarsFunctor ψ

DifferentialGraded.Bimodule.derivedTensorRegularRightIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorRegularRight.lean, line 300. The attribute's comment: “restriction of scalars is tensoring with the regular bimodule, on derived categories”.

Stacks 0BYX, the tensor half, on derived categories. Derived restriction of scalars along ψ : C → B is the derived tensor product with the regular (B, C)-bimodule.

Tensoring with the regular bimodule already inverts the quasi-isomorphisms, so by the construction of the derived tensor product in the proof of Tag 09LS it computes the derived tensor product; and it descends to derived restriction of scalars through the localizations.

def derivedTensorRegularRightIso (ψ : C.Hom B) :
    derivedTensorFunctor (regularRight ψ) ≅ derivedRestriction ψ

DifferentialGradedModule.regularHomFactorization, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomFunctor.lean, line 242. The attribute's comment: “the factorization of derived Hom out of the regular bimodule”.

Stacks 0BYX. Internal Hom out of the regular differential graded (A, B)-bimodule, followed by localization of the target, factors through the derived category of B as derived restriction of scalars along φ.

This is the composite of the identification of internal Hom out of the regular bimodule with restriction of scalars (DifferentialGradedModule.homHomotopyFunctorRegularIso) and the defining factorisation of derived restriction (DifferentialGradedModule.derivedRestrictionFactorization).

def regularHomFactorization (φ : A.Hom B) :
    (quasiIsomorphisms' B).Q ⋙ derivedRestriction φ ≅
      homToDerivedCategory A B (regularModule B) (regularBimoduleStructure φ)

DifferentialGradedModule.DerivedHomData.regular, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomFunctor.lean, line 261. The attribute's comment: “derived Hom out of the regular bimodule, as a right derived functor”.

Stacks 0BYX, and Stacks 09LI for the regular bimodule. Derived Hom out of the regular differential graded (A, B)-bimodule of a homomorphism φ : A → B, as a right derived functor of internal Hom — unconditionally, with the derived functor being the already-constructed DifferentialGradedModule.derivedRestriction.

No resolutions are used: the hypothesis of DifferentialGradedModule.DerivedHomData.ofResolutions — the existence of property (I) resolutions, Tag 09KU — does not appear, because internal Hom out of the regular bimodule is restriction of scalars, which does not change the underlying complex and therefore already inverts the quasi-isomorphisms.

def regular (φ : A.Hom B) :
    DerivedHomData A B (regularModule B) (regularBimoduleStructure φ)

DifferentialGradedModule.DerivedHomData.functorIsoDerivedRestriction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedHomFunctor.lean, line 273. The attribute's comment: “RHom(B, -) is restriction of scalars, for any derived Hom datum”.

Stacks 0BYX, Example 22.33.2. RHom(B, -) = (-)_A: the functor of any right derived functor of Hom out of the regular differential graded (A, B)-bimodule is canonically derived restriction of scalars along φ.

def functorIsoDerivedRestriction (φ : A.Hom B)
    (D : DerivedHomData A B (regularModule B) (regularBimoduleStructure φ)) :
    D.functor ≅ derivedRestriction φ

DifferentialGradedModule.regularBimoduleStructure, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 203. The attribute's comment: “the regular bimodule structure”.

A homomorphism φ : A → B of differential graded algebras makes the regular right differential graded B-module into a differential graded (A, B)-bimodule: A acts on the left by multiplication through φ, and that action is right B-linear by associativity.

def regularBimoduleStructure (φ : A.Hom B) : BimoduleStructure A B (regularModule B)

DifferentialGradedModule.regularHomogeneousEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 271. The attribute's comment: “evaluation at one, degreewise”.

Evaluation at one. The degree-n homogeneous right B-linear maps out of the regular differential graded B-module are the degree-n elements of the target, by evaluation at the unit. This is the degreewise half of Example 22.33.2.

def regularHomogeneousEquiv (P : DifferentialGradedModule B) (n : ℤ) :
    P.grading n ≃ₗ[R] HomogeneousMap B (regularModule B) P n

DifferentialGradedModule.restrictScalarsFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 309. The attribute's comment: “restriction of scalars as a functor”. References: EGA II (2.8.6), “more general”.

Restriction of scalars along φ, as a functor between the categories of differential graded modules. A homomorphism is unchanged: a B-linear map is A-linear through φ.

def restrictScalarsFunctor (φ : A.Hom B) :
    DifferentialGradedModule B ⥤ DifferentialGradedModule A

DifferentialGradedModule.restrictScalarsHomotopyFunctor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 369. The attribute's comment: “restriction of scalars on homotopy categories”.

Restriction of scalars along φ on the homotopy categories: it descends through the homotopy quotient because it preserves homotopies.

def restrictScalarsHomotopyFunctor (φ : A.Hom B) : HomotopyCategory B ⥤ HomotopyCategory A

DifferentialGradedModule.derivedRestriction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 416. The attribute's comment: “restriction of scalars on derived categories”.

Restriction of scalars along φ on the derived categories, obtained by descending restriction on the homotopy categories through the localization at the quasi-isomorphisms. This is the functor R Hom(B, -) : D(B, d) ⥤ D(A, d) of Example 22.33.2, whose identification with derived Hom out of the regular bimodule is the content of that example.

def derivedRestriction (φ : A.Hom B) : derivedCategory' B ⥤ derivedCategory' A

DifferentialGradedModule.derivedRestrictionFactorization, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 423. The attribute's comment: “the factorization of derived restriction”.

Derived restriction of scalars is restriction of scalars read through the localizations: the square of homotopy and derived categories commutes up to this canonical isomorphism.

def derivedRestrictionFactorization (φ : A.Hom B) :
    (quasiIsomorphisms' B).Q ⋙ derivedRestriction φ ≅
      restrictScalarsHomotopyFunctor φ ⋙ (quasiIsomorphisms' A).Q

DifferentialGradedModule.regularHomModuleData, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 465. The attribute's comment: “restriction of scalars presents the internal hom”. References: EGA III (7.2.2), “more general”.

Restriction of scalars along φ presents the internal hom out of the regular differential graded (A, B)-bimodule: its degree-n part is the degree-n homogeneous right B-linear maps B → P, by evaluation at the unit, and the right A-action matches precomposition with multiplication through φ.

def regularHomModuleData (φ : A.Hom B) (P : DifferentialGradedModule B) :
    HomModuleData A B (regularModule B) P (regularBimoduleStructure φ)

DifferentialGradedModule.homModuleRegularIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 491. The attribute's comment: “evaluation at one”.

Evaluation at the unit identifies the internal hom out of the regular differential graded (A, B)-bimodule with restriction of scalars along φ.

def homModuleRegularIso (φ : A.Hom B) (P : DifferentialGradedModule B) :
    (regularHomFunctor φ).obj P ≅ (restrictScalarsFunctor φ).obj P

DifferentialGradedModule.homModuleFunctorRegularIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 532. The attribute's comment: “evaluation at one is natural”.

Evaluation at one is natural: the internal hom functor out of the regular differential graded (A, B)-bimodule is restriction of scalars along φ.

def homModuleFunctorRegularIso (φ : A.Hom B) :
    regularHomFunctor φ ≅ restrictScalarsFunctor φ

DifferentialGradedModule.homHomotopyFunctorRegularIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 586. The attribute's comment: “evaluation at one on homotopy categories”.

Evaluation at one on homotopy categories: the internal hom functor out of the regular differential graded (A, B)-bimodule is restriction of scalars along φ. This is the identification R Hom(B, -) = (-)_A of Example 22.33.2, before localizing.

def homHomotopyFunctorRegularIso (φ : A.Hom B) :
    homHomotopyCategoryFunctor A B (regularModule B) (regularBimoduleStructure φ) ≅
      restrictScalarsHomotopyFunctor φ

DifferentialGradedModule.quasiIsomorphisms_isInvertedBy_homToDerivedCategory_regular, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 598. The attribute's comment: “derived Hom out of the regular bimodule needs no resolutions”.

The functor whose right derived functor is derived Hom out of the regular differential graded (A, B)-bimodule already inverts the quasi-isomorphisms: it is restriction of scalars followed by localization, and restriction does not change the underlying complex.

theorem quasiIsomorphisms_isInvertedBy_homToDerivedCategory_regular (φ : A.Hom B) :
    (quasiIsomorphisms' B).IsInvertedBy
      (homToDerivedCategory A B (regularModule B) (regularBimoduleStructure φ))

DifferentialGraded.Bimodule.regular, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestriction.lean, line 618. The attribute's comment: “the regular bimodule”.

The regular differential graded (A, B)-bimodule of a homomorphism φ : A → B of differential graded algebras: B itself, with B acting on the right by multiplication and A acting on the left through φ. Tensoring with it is the extension of scalars - ⊗_A B : D(A, d) ⥤ D(B, d) of Example 22.33.2.

def regular (φ : A.Hom B) : Bimodule A B

DifferentialGradedModule.derivedHom_comparison_eq_evaluationAtOne, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedRestrictionEvaluation.lean, line 143. The attribute's comment: “the comparison of derived Hom out of the regular bimodule is evaluation at one”.

Stacks 0BYX, Example 22.33.2. The identification of derived Hom out of the regular differential graded (A, B)-bimodule with derived restriction of scalars is pinned by evaluation at the unit: on the class of a differential graded B-module N, the canonical comparison of the derived functor with internal Hom, followed by the identification with derived restriction and the factorisation of derived restriction, is the localisation of the evaluation morphism Hom^•_B(B, N) → N_A, f ↦ f(1), transported along the identification DifferentialGradedModule.homHomotopyFunctorRegularIso of the two source objects.

The transport is not optional: internal Hom out of the regular bimodule is isomorphic to restriction of scalars and not equal to it, so the two morphisms have different sources.

theorem derivedHom_comparison_eq_evaluationAtOne (φ : A.Hom B)
    (D : DerivedHomData A B (regularModule B) (regularBimoduleStructure φ))
    (N : DifferentialGradedModule B) :
    D.comparison.app ((toHomotopyCategory B).obj N) ≫
        (DerivedHomData.functorIsoDerivedRestriction φ D).hom.app
          ((quasiIsomorphisms' B).Q.obj ((toHomotopyCategory B).obj N)) ≫
        (derivedRestrictionFactorization φ).hom.app ((toHomotopyCategory B).obj N) =
      (quasiIsomorphisms' A).Q.map
          ((homHomotopyFunctorRegularIso φ).hom.app ((toHomotopyCategory B).obj N)) ≫
        (quasiIsomorphisms' A).Q.map
          ((toHomotopyCategory A).map ((evaluationAtOne φ).evaluation N))

DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedRestriction, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorHomAdjunction.lean, line 279. The attribute's comment: “the adjunction Hom_{D(A,d)}(M, N_A) = Hom_{D(B,d)}(M ⊗_A^𝐋 B, N), bifunctorially”. References: SGA 5 IIIB (5.2), “5.2.3 for F = B”.

Stacks 0BYX, Example 22.33.2. For a homomorphism φ : (A, d) → (B, d) of differential graded algebras, derived extension of scalars - ⊗_A^𝐋 B : D(A, d) ⥤ D(B, d) — tensoring with the regular bimodule, DifferentialGraded.Bimodule.regular — is left adjoint to derived restriction of scalars (-)_A : D(B, d) ⥤ D(A, d). Nothing is assumed.

This is the displayed formula of the example, Hom_{D(A,d)}(M, N_A) = Hom_{D(B,d)}(M ⊗_A^𝐋 B, N), bifunctorially in M and N: an CategoryTheory.Adjunction is exactly a bijection of the two morphism groups together with its naturality in both variables, so the bifunctoriality the source asserts is carried by this statement and needs no separate lemma. The bijection on its own is DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedRestriction_homEquiv.

The two inputs are the two steps the example takes. The adjunction with derived Hom out of the regular bimodule on the right is Tag 09LT, DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedHomFunctor; and DifferentialGradedModule.DerivedHomData.functorIsoDerivedRestriction is the example's identification RHom(B, -) = (-)_A, which comes from Hom_{Mod^{dg}_B}(B, N) ≅ N_A, f ↦ f(1), naturally in N. Transporting the right adjoint along that isomorphism replaces RHom(B, -) by restriction of scalars, which is the example's conclusion.

def derivedTensorFunctor_adj_derivedRestriction (φ : A.Hom B) :
    derivedTensorFunctor (Bimodule.regular φ) ⊣ derivedRestriction φ

DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedRestriction_homEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorHomAdjunction.lean, line 293. The attribute's comment: “the displayed formula Hom_{D(A,d)}(M, N_A) = Hom_{D(B,d)}(M ⊗_A^𝐋 B, N)”.

Stacks 0BYX, Example 22.33.2, the displayed formula itself: Hom_{D(A,d)}(M, N_A) = Hom_{D(B,d)}(M ⊗_A^𝐋 B, N).

It is the hom-set bijection of DifferentialGraded.Bimodule.derivedTensorFunctor_adj_derivedRestriction, so the bifunctoriality in M and N that the source asserts is the naturality carried by that adjunction; it is not restated here.

def derivedTensorFunctor_adj_derivedRestriction_homEquiv (φ : A.Hom B)
    (M : derivedCategory' A) (N : derivedCategory' B) :
    (M ⟶ (derivedRestriction φ).obj N) ≃
      ((derivedTensorFunctor (Bimodule.regular φ)).obj M ⟶ N)

DifferentialGradedModule.evaluationAtOne, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/EvaluationAtOne.lean, line 95. The attribute's comment: “evaluation_at_one”.

Evaluation at the unit identifies the graded Hom from B with restriction to A, naturally in the differential graded B-module.

public noncomputable def evaluationAtOne (φ : A.Hom B) :
    EvaluationAtOneData φ

DifferentialGradedModule.restrictScalars, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/Restriction.lean, line 60. The attribute's comment: “restriction_notation”. References: EGA II (2.8.6), “more general”.

Restrict a right differential graded B-module to A along a homomorphism of differential graded algebras.

def restrictScalars (φ : A.Hom B) (N : DifferentialGradedModule B) :
    DifferentialGradedModule A

Dualizing.derivedExtensionToDGA_adj, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Dualizing/DifferentialGradedResolutionExtension.lean, line 87. The attribute's comment: “extension of scalars along R -> E is left adjoint to forgetting the action”.

Stacks 0BYX for the structure homomorphism of E, read on D(R). Derived extension of scalars - ⊗_R^𝐋 E : D(R) ⥤ D(E, d) is left adjoint to the forgetful functor D(E, d) ⥤ D(R).

The adjunction of Tag 0BYX is between derived extension and derived restriction of scalars along R → E; transporting its right adjoint along Dualizing.derivedRestrictBaseForgetIso, which identifies derived restriction read on D(R) with the forgetful functor, gives the statement in the form Situation 0BZB uses.

def derivedExtensionToDGA_adj (E : DifferentialGradedAlgebra.{u, u} R) :
    derivedExtensionToDGA E ⊣ derivedForget E

Dualizing.derivedTensorResolvingBimoduleForgetIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Dualizing/DifferentialGradedResolutionForget.lean, line 150. The attribute's comment: “forgetting the action is derived tensoring with the regular (E, R)-bimodule”.

The tensor half of Stacks 0BYX for the structure homomorphism of E. Derived tensoring with the resolving bimodule E, read in the derived category of R-modules through the degree-zero equivalence, is the forgetful functor D(E, d) ⥤ D(R): forgetting the E-action is restriction of scalars along R → E, which is tensoring with the regular (E, R)-bimodule.

def derivedTensorResolvingBimoduleForgetIso (E : DifferentialGradedAlgebra.{u, u} R) :
    Bimodule.derivedTensorFunctor (resolvingBimodule E) ⋙
        (degreeZeroDerivedEquivalence (R := R) (A := R)).functor ≅ derivedForget E

Dualizing.DGAResolution.derivedTensorResolvingBimoduleIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Dualizing/DifferentialGradedResolutionForget.lean, line 166. The attribute's comment: “forgetting the action of the resolving algebra is derived tensoring with its regular (E, R)-bimodule”.

The tensor half of Stacks 0BYX at the resolving algebra of Situation 0BZB. Derived tensoring with the resolving bimodule of E, read in the derived category of R-modules, is the forgetful functor D(E, d) ⥤ D(R).

def derivedTensorResolvingBimoduleIso (S : Dualizing.DGAResolution R A) :
    Bimodule.derivedTensorFunctor (Dualizing.resolvingBimodule S.E) ⋙
        (degreeZeroDerivedEquivalence (R := R) (A := R)).functor ≅
      DifferentialGradedModule.derivedForget S.E
Tag 09R9, a lemma

Tag 09R9 in the Stacks Project.

DifferentialGraded.Bimodule.derivedTensorFunctor_fullyFaithful, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorFullyFaithful.lean, line 431.

Stacks 09R9. Let (A, d) and (B, d) be differential graded algebras over a commutative ring R and let N be a differential graded (A, B)-bimodule. Assume

  1. the class of N in D(B, d) is a compact object, and
  2. the canonical map H^k(A) → Hom_{D(B,d)}(N, N[k]) of DifferentialGraded.Bimodule.cohomologyEndomorphismComparison is bijective for every k : ℤ.

Then the derived tensor product - ⊗_A^𝐋 N : D(A, d) ⥤ D(B, d) of Tag 09LS is fully faithful.

Full faithfulness is data — a chosen inverse to the action on morphism groups — so this is a definition. It is Tag 07RB applied to the adjunction of Tag 09LT, whose unit is invertible by DifferentialGraded.Bimodule.isIso_unit_derivedTensorFunctor_adj_derivedHomFunctor.

def derivedTensorFunctor_fullyFaithful (N : Bimodule A B)
    [IsCompactObject.{u} ((toHomotopyCategory B ⋙ (quasiIsomorphisms' B).Q).obj N.rightModule)]
    (h2 : ∀ k : ℤ, Function.Bijective (N.cohomologyEndomorphismComparison k)) :
    (derivedTensorFunctor N).FullyFaithful
Tag 0BYZ, a lemma

Tag 0BYZ in the Stacks Project.

DifferentialGraded.Bimodule.derivedBaseChangeFunctor_isLeftDerivedFunctor, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChange.lean, line 224. The attribute's comment: “part (1) only, with the functor being derived presented as M |-> M (x)_A A': the identification c_M with the source's M |-> M (x)_R R' is baseChangeTensorIso over R' and baseChangeTensorAlgebraIso over A'. Corrected: the source says "right derived functor", but base change is a tensor product and so is LEFT derived, as Tag 09LS has it. Parts (2) and (3) are elsewhere, per the docstrings; nothing of Tag 0BYZ remains uncovered”.

Stacks 0BYZ, part (1). The derived tensor product - ⊗_A^𝐋 A' with the base change A' = A ⊗_R R' is the total left derived functor of base change K(A, d) → K(A', d), M ↦ M ⊗_R R', followed by localization.

The functor derived here is M ↦ M ⊗_A A'; it is base change M ↦ M ⊗_R R' by the canonical map c_M of the source's proof, which is DifferentialGraded.Bimodule.baseChangeTensorIso as an isomorphism of differential graded R'-modules and DifferentialGraded.Bimodule.baseChangeTensorAlgebraIso as one of differential graded A'-modules. Part (3) is DifferentialGraded.Bimodule.isIso_derivedBaseChangeCounit_app_of_kFlat of StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeRepresents.lean and part (2) is DifferentialGraded.Bimodule.derivedBaseChangeRestrictionSquare of StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeRestrictionSquare.lean.

theorem derivedBaseChangeFunctor_isLeftDerivedFunctor :
    (derivedBaseChangeFunctor A R').IsLeftDerivedFunctor
      (derivedBaseChangeCounit A R') (quasiIsomorphisms' A)

DifferentialGraded.Bimodule.baseChangeTensorAlgebraIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeAbsoluteTensor.lean, line 559. The attribute's comment: “the A'-linearity of the canonical map c_M of the PROOF, NOT any of parts (1), (2), (3): M (x)_A A' is M (x)_R R' as differential graded A'-modules, the right action on M (x)_R R' being (m (x) t)(a (x) s) = (m a) (x) (t s). With this nothing of Tag 0BYZ is left unformalized; the module docstring says where the three parts and the R'-only form baseChangeTensorIso are, and how this A'-module restricts to that R'-module”.

The A'-linearity of the canonical map c_M in the proof of Stacks 0BYZ. Let R → R' be a map of commutative rings, let (A, d) be a differential graded R-algebra and let A' = A ⊗_R R' be its base change. For a differential graded A-module M the base change M ⊗_A A' is M ⊗_R R' as a differential graded A'-module, the right action of a ⊗ s on M ⊗_R R' being (m ⊗ t) · (a ⊗ s) = (m · a) ⊗ (t s) (DifferentialGradedModule.baseChange_smul_tmul).

The isomorphism is the source's c_M, read in the direction out of the relative tensor product: it sends the pure tensor x ⊗ (a ⊗ s) to (x · a) ⊗ s (DifferentialGraded.Bimodule.baseChangeTensorForward_pure), and its inverse — the source's c_M itself — sends x ⊗ s to x ⊗ (1 ⊗ s).

def baseChangeTensorAlgebraIso :
    baseChangeRelativeTensor A R' M ≅ baseChangeAbsoluteTensor M R'

DifferentialGraded.Bimodule.isIso_derivedBaseChangeCounit_app_of_kFlat, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeRepresents.lean, line 138. The attribute's comment: “part (3): M K-flat as a complex of R-modules implies that the ordinary base change represents M (x)_A^L A'. The representing object is spelled M (x)_A A'; it is the source's differential graded A'-module M (x)_R R' by baseChangeTensorIso over R' and by baseChangeTensorAlgebraIso of BaseChangeAbsoluteTensor.lean over A'. Part (2) is derivedBaseChangeRestrictionSquare of BaseChangeRestrictionSquare.lean”.

Let R → R' be a ring map, (A, d) a differential graded R-algebra which is K-flat as a complex of R-modules, and A' = A ⊗_R R'. For a differential graded A-module M which is K-flat as a complex of R-modules, the comparison from the derived base change M ⊗_A^𝐋 A' to the ordinary base change M ⊗_A A' is an isomorphism at M, so M ⊗_A A' represents M ⊗_A^𝐋 A'. Nothing is asked of R'.

theorem isIso_derivedBaseChangeCounit_app_of_kFlat
    (hA : CochainComplex.KFlat.{u, u} (regularModule A).toCochainComplex)
    (M : DifferentialGradedModule.{u, u, u} A)
    (hM : CochainComplex.KFlat.{u, u} M.toCochainComplex) :
    IsIso ((derivedBaseChangeCounit A R').app ((toHomotopyCategory A).obj M))

DifferentialGraded.Bimodule.derivedBaseChangeRestrictionSquare, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeRestrictionSquare.lean, line 395. The attribute's comment: “part (2): the square of restriction and derived base change commutes. The left column is restriction along the structure homomorphism R -> A, the right column restriction along r' |-> 1 (x) r', and the bottom edge derived base change of R in degree zero read in D(R', d) through the unitor R (x)_R R' = R' of degreeZeroBaseChangeUnitor. Parts (1) and (3) are derivedBaseChangeFunctor_isLeftDerivedFunctor and isIso_derivedBaseChangeCounit_app_of_kFlat”.

Stacks 0BYZ, part (2). "Let R → R' be a ring map, let (A, d) be a differential graded R-algebra, let (A', d) be the base change A ⊗_R R'. If A is K-flat as a complex of R-modules, then the diagram

D(A, d) --- - ⊗_A^𝐋 A' ---> D(A', d)
   |                           |
restriction                restriction
   v                           v
 D(R)  --- - ⊗_R^𝐋 R' --->   D(R')
commutes."

The two columns are restriction of scalars along the structure homomorphism R → A of DifferentialGradedAlgebra.baseHom and along r' ↦ 1 ⊗ r'; the bottom edge is derived base change of the base ring in degree zero, read in D(R', d) through DifferentialGradedAlgebra.degreeZeroBaseChangeUnitor, whose derived restriction is the equivalence DifferentialGradedModule.degreeZeroBaseChangeEquivalence.

Both composites are left derived functors of the same functor K(A, d) ⥤ D(R', d), M ↦ M ⊗_R R': the comparison c_M of the plain functors is an isomorphism for every M (DifferentialGraded.Bimodule.isIso_baseChangeStructureTensorTrans_app), and the left-hand composite's own comparison is invertible at the modules with property (P) — which is where the K-flatness of A is used, through DifferentialGradedModule.kFlat_toCochainComplex_of_propertyPFiltration and part (3) in the form DifferentialGraded.Bimodule.isIso_derivedTensorBimoduleCounit_app_of_kFlat. So the square commutes by the uniqueness of a left derived functor.

def derivedBaseChangeRestrictionSquare
    (hA : CochainComplex.KFlat.{u, u} (regularModule A).toCochainComplex) :
    derivedBaseChangeFunctor A R' ⋙
        derivedRestriction (tensorIncludeRightHom A (degreeZero R R')) ≅
      derivedRestriction (baseHom A) ⋙
        derivedBaseChangeFunctor (degreeZero R R) R' ⋙
          derivedRestriction (tensorIncludeRightHom (degreeZero R R) (degreeZero R R'))

DifferentialGraded.Bimodule.baseChangeTensorIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleTensorRestrictRight.lean, line 232. The attribute's comment: “the canonical map c_M of the PROOF, over R' — NOT any of parts (1), (2), (3). It is what identifies the functor derived in part (1), derivedBaseChangeFunctor_isLeftDerivedFunctor of BaseChange.lean, with the source's M |-> M (x)_R R'. Part (2) is derivedBaseChangeRestrictionSquare, part (3) isIso_derivedBaseChangeCounit_app_of_kFlat. The A'-linear form of this map, which is what the source states, is baseChangeTensorAlgebraIso”.

The canonical map c_M in the proof of Stacks 0BYZ, over R'. Let R → R' be a ring map, let (A, d) be a differential graded R-algebra and let A' = A ⊗_R R' be its base change. For a differential graded A-module M the differential graded R'-module underlying the base change M ⊗_A A' is M ⊗_R R'.

The source's c_M : M ⊗_R R' → M ⊗_A A' is a map of differential graded A'-modules; this is that map after restricting the right action from A' to R', which is where its content lies: restricting the right action does not change the relative tensor product (DifferentialGraded.Bimodule.tensorCompFunctorRestrictRightIso), and over R' the base-change bimodule is the one for which M ⊗_A (A ⊗_R R') = M ⊗_R R' is already proved (DifferentialGraded.absBalanceIso). The A'-linear statement, which needs M ⊗_R R' built as a differential graded A ⊗_R R'-module and is proved by the universal property rather than by this transfer, is DifferentialGraded.Bimodule.baseChangeTensorAlgebraIso in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeAbsoluteTensor.lean.

def baseChangeTensorIso (M : DifferentialGradedModule.{u, u, u} A) :
    (restrictScalarsFunctor (tensorIncludeRightHom A (degreeZero R R'))).obj
        ((tensorCompFunctor (baseChange A R')).obj M) ≅
      M.absoluteTensor (degreeZero R R')

DifferentialGradedModule.kFlat_toCochainComplex_of_propertyPFiltration, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/PropertyPKFlat.lean, line 95. The attribute's comment: “the K-flatness half of the claim in the PROOF — a differential graded A-module with property (P) is K-flat as a complex of R-modules. Not any of parts (1), (2), (3); part (1) is DifferentialGraded.Bimodule.derivedBaseChangeFunctor_isLeftDerivedFunctor”.

A differential graded module with property (P) over a differential graded algebra which is K-flat as a complex of R-modules is itself K-flat as a complex of R-modules. This is the K-flatness half of the claim in the proof of Stacks 0BYZ.

The induction is DifferentialGradedModule.propertyPFiltration_induction; its five obligations are, in order, that K-flatness is invariant under isomorphism, that it holds on a direct sum of shifts of A, that it is stable under countable direct sums, and the two directions of two-out-of-three along an admissible short exact sequence. The hypothesis on A enters only in the second.

theorem kFlat_toCochainComplex_of_propertyPFiltration
    (hA : CochainComplex.KFlat.{u, u} (regularModule A).toCochainComplex)
    {P : DifferentialGradedModule A} (F : PropertyPFiltration P) :
    CochainComplex.KFlat.{u, u} P.toCochainComplex
Tag 0BZ0, a lemma

Tag 0BZ0 in the Stacks Project.

DifferentialGraded.Bimodule.homDualBimodule, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHomBimodule.lean, line 254. The attribute's comment: “the (B, A)-bimodule structure on S = Hom(T, B)”.

Stacks 0BZ0, first assertion. For a differential graded (A, B)-bimodule T, the internal hom S = Hom_{Mod^{dg}_{(B, d)}}(T, B) is a differential graded (B, A)-bimodule: the right A-action is precomposition with the left action of A on T, and the left B-action is postcomposition with left multiplication on B.

def homDualBimodule (T : Bimodule A B) : Bimodule B A

DifferentialGraded.Bimodule.derivedTensorHomDualFunctorIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/InternalHomTensorIso.lean, line 402. The attribute's comment: “the second assertion: the functorial isomorphism N ⊗_B^L S ≅ RHom(T, N)”.

Stacks 0BZ0, second assertion. Let R be a ring, let (A, d) and (B, d) be differential graded R-algebras and let T be a differential graded (A, B)-bimodule. Assume

  1. T defines a compact object of D(B, d), and
  2. S = Hom_{Mod^{dg}_{(B, d)}}(T, B) represents R Hom(T, B) in D(A, d), that is, the comparison of Tag 09LI is invertible at the regular module.

Then there is an isomorphism N ⊗_B^𝐋 S ⟶ R Hom(T, N) functorial in N in D(B, d): the differential graded (B, A)-bimodule structure on S is DifferentialGraded.Bimodule.homDualBimodule, and the functorial isomorphism is an isomorphism of the two functors D(B, d) ⥤ D(A, d) of Tag 09LS and Tag 09LI.

The map itself is DifferentialGraded.Bimodule.derivedEvalNatTrans: the composition pairing of Tag 09LC, read on differential graded modules and descended to the derived category, lifted along the localization K(B, d) ⥤ D(B, d).

def derivedTensorHomDualFunctorIso (T : Bimodule A B)
    (h1 : IsCompactObject.{u}
      ((toHomotopyCategory B ⋙ (quasiIsomorphisms' B).Q).obj T.rightModule))
    (h2 : IsIso ((derivedHomData A B T.rightModule T.leftAction).comparison.app
      ((toHomotopyCategory B).obj (regularModule B)))) :
    derivedTensorFunctor (homDualBimodule T) ≅
      (derivedHomData A B T.rightModule T.leftAction).functor
Sources

Section22.34 Composition of derived tensor products#

Section 22.34 of the Stacks Project, Tag 0BZ1. 5 tags here are carried by 11 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 0BZ2, an equation

Tag 0BZ2 in the Stacks Project.

DifferentialGraded.Bimodule.derivedTensorFunctorCounit, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorFunctor.lean, line 138. The attribute's comment: “the canonical map from the derived to the plain tensor product”.

The canonical comparison from the derived tensor product to ordinary tensoring: the counit of the Kan extension defining - ⊗_A^𝐋 N. Its components are the maps P ⊗_A^𝐋 N → P ⊗_A N in D(B, d), which are isomorphisms exactly on the objects at which ordinary tensoring already computes the derived functor.

def derivedTensorFunctorCounit (N : Bimodule A B) :
    (quasiIsomorphisms' A).Q ⋙ derivedTensorFunctor N ⟶ tensorFunctorToDerivedCategory N
Tag 0BZ3, a lemma

Tag 0BZ3 in the Stacks Project.

DifferentialGraded.Bimodule.compTensor, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleComposition.lean, line 362. The attribute's comment: “the composite bimodule N'' = N (x)_B N' as an (A, C)-bimodule”.

Stacks Tag 0BZ3. The composite of a differential graded (A, B)-bimodule N with a differential graded (B, C)-bimodule N': the relative tensor product N ⊗_B N' of the right B-module underlying N with N', carrying the left A-action inherited from N. This is the bimodule N'' of Tag 0BZ3.

def compTensor (N : Bimodule A B) (N' : Bimodule B C) : Bimodule A C

DifferentialGraded.Bimodule.derivedTensorFunctorCompTensorIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorComposition.lean, line 291. The attribute's comment: “composition of the derived tensor functors”.

Stacks Tag 0BZ3. "Let R be a ring. Let (A, d), (B, d), and (C, d) be differential graded R-algebras. Let N be a differential graded (A, B)-bimodule. Let N' be a differential graded (B, C)-bimodule. Assume that (0BZ2) N_B ⊗_B^𝐋 N' ⟶ (N ⊗_B N')_C is an isomorphism. Then the composition D(A, d) → D(B, d) → D(C, d) of - ⊗_A^𝐋 N and - ⊗_B^𝐋 N' is isomorphic to - ⊗_A^𝐋 N'' where N'' = N ⊗_B N'."

The bimodule N'' is DifferentialGraded.Bimodule.compTensor N N', the relative tensor product with the left A-action inherited from N, exactly as in the source; the isomorphism is DifferentialGraded.Bimodule.derivedTensorCompNatTrans, the transformation attached to the associativity isomorphism of the plain tensor functors by the universal property of Tag 09LS.

def derivedTensorFunctorCompTensorIso (N : Bimodule A B) (N' : Bimodule B C)
    (hiso : IsIso ((derivedTensorFunctorCounit N').app
      ((toHomotopyCategory B).obj N.rightModule))) :
    derivedTensorFunctor N ⋙ derivedTensorFunctor N' ≅
      derivedTensorFunctor (compTensor N N')
Tag 0BZ4, an equation

Tag 0BZ4 in the Stacks Project.

DifferentialGraded.isIso_derivedTensorBaseChangeComparison_degreeZeroBase, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeUnitBaseAlgebra.lean, line 246. The attribute's comment: “the canonical map is an isomorphism when the first algebra is the base ring in degree zero”.

The canonical map of Stacks 0BZ4 is an isomorphism when the first algebra is the base ring in degree zero. For differential graded R-algebras (B, d) and (C, d), the map (R ⊗_R B)_B ⊗_B^𝐋 {}_B(B ⊗_R C)_C ⟶ (R ⊗_R B ⊗_R C)_C of D(C, d) is invertible, with nothing assumed about B or C.

By DifferentialGraded.Bimodule.isIso_derivedTensorBaseChangeComparison_iff the assertion is that the comparison of Tag 09LS from the derived to the plain tensor product with {}_B(B ⊗_R C)_C is invertible at the right differential graded B-module (R ⊗_R B)_B. That module is the regular module, by DifferentialGraded.unitBaseChangeIso, and the regular module is orthogonal on the left to the acyclic modules by Tag 09K1, where the plain tensor product already computes the derived one.

This is the hypothesis that Stacks 0BZ5 assumes and that Stacks 09S4 discharges from K-flatness of C; over the base ring no K-flatness is needed.

theorem isIso_derivedTensorBaseChangeComparison_degreeZeroBase
    (C : DifferentialGradedAlgebra.{u, u} R) :
    IsIso (derivedTensorBaseChangeComparison (degreeZero R R) B C)

DifferentialGraded.tripleTensorIso, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorAlgebraComparison.lean, line 574. The attribute's comment: “the identification of the plain tensor products”.

The identification (A ⊗_R B)_B ⊗_B {}_B(B ⊗_R C)_C = (A ⊗_R B ⊗_R C)_C: the plain relative tensor product of the two base-change bimodules is the triple tensor product, as right differential graded C-modules.

def tripleTensorIso : plainTensorObj A B C ≅ baseChangeModule (tensorProduct A B) C

DifferentialGraded.derivedTensorBaseChangeComparison, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorAlgebraComparison.lean, line 600. The attribute's comment: “the canonical map in D(C, d)”.

The canonical map (A ⊗_R B)_B ⊗_B^𝐋 {}_B(B ⊗_R C)_C ⟶ (A ⊗_R B ⊗_R C)_C in D(C, d). It is the comparison of the derived with the plain tensor product at the right differential graded B-module A ⊗_R B, followed by the identification of the plain tensor product (A ⊗_R B)_B ⊗_B {}_B(B ⊗_R C)_C with A ⊗_R B ⊗_R C.

def derivedTensorBaseChangeComparison :
    (Bimodule.derivedTensorFunctor (baseChangeBimodule B C)).obj
        ((quasiIsomorphisms' B).Q.obj ((toHomotopyCategory B).obj (baseChangeModule A B))) ⟶
      (quasiIsomorphisms' C).Q.obj
        ((toHomotopyCategory C).obj (baseChangeModule (tensorProduct A B) C))
Tag 0BZ5, a lemma

Tag 0BZ5 in the Stacks Project.

DifferentialGraded.Bimodule.derivedTensorFunctorCompIsoDegreeZeroBase, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeUnitBaseAlgebra.lean, line 271. The attribute's comment: “unconditionally when the first algebra is the base ring in degree zero”.

Stacks 0BZ5 when the first algebra is the base ring in degree zero, with nothing assumed. For a differential graded R-algebra (C, d), a differential graded (R, B)-bimodule N and a differential graded (B, C)-bimodule N', the composite of - ⊗_R^𝐋 N : D(R) ⥤ D(B, d) and - ⊗_B^𝐋 N' : D(B, d) ⥤ D(C, d) is the derived tensor functor of the differential graded (R, C)-bimodule N'' = Ñ ⊗_B Ñ' of Stacks 0BZ3.

This is DifferentialGraded.Bimodule.derivedTensorFunctorCompIsoOfBaseChange with its only hypothesis — the map of Tag 0BZ4, which Stacks 0BZ5 assumes to be an isomorphism — supplied by DifferentialGraded.isIso_derivedTensorBaseChangeComparison_degreeZeroBase. Here D(R) is the derived category of the base ring viewed as a differential graded algebra concentrated in degree zero, which is the derived category of R-modules by DifferentialGradedModule.degreeZeroDerivedEquivalence.

def derivedTensorFunctorCompIsoDegreeZeroBase
    (C : DifferentialGradedAlgebra.{u, u} R)
    (N : Bimodule (degreeZero R R) B) (N' : Bimodule B C) :
    derivedTensorFunctor N ⋙ derivedTensorFunctor N' ≅
      derivedTensorFunctor (compTensorResolution N N')

DifferentialGraded.Bimodule.compTensorResolution, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BimoduleComposition.lean, line 415. The attribute's comment: “the bimodule N'' described in the proof”.

The bimodule N'' of Stacks Tag 0BZ5. Given a differential graded (A, B)-bimodule N and a differential graded (B, C)-bimodule N', it is the composite Ñ ⊗_B Ñ' of their property-(P) replacements, viewed as a differential graded (A, C)-bimodule.

def compTensorResolution (N : Bimodule A B) (N' : Bimodule B C) : Bimodule A C

DifferentialGraded.Bimodule.derivedTensorFunctorCompIsoOfBaseChange, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorBaseChangeSecondVariable.lean, line 318. The attribute's comment: “the composite of the two derived tensor functors is the derived tensor functor of the composite bimodule, under the Tag 0BZ4 isomorphism that the source itself assumes”.

Stacks 0BZ5 with Tag 0BZ4 as its only hypothesis. For differential graded algebras (A, d), (B, d) and (C, d) over R such that the canonical map (A ⊗_R B)_B ⊗_B^𝐋 {}_B(B ⊗_R C)_C ⟶ (A ⊗_R B ⊗_R C)_C of Tag 0BZ4 is an isomorphism, the composite of - ⊗_A^𝐋 N and - ⊗_B^𝐋 N' is isomorphic to - ⊗_A^𝐋 N'' for the differential graded (A, C)-bimodule N'' = Ñ ⊗_B Ñ' of the source.

This is DifferentialGraded.Bimodule.derivedTensorFunctorCompIso with all four of its remaining inputs supplied: the second assertion of Tag 09S3 twice, Tag 0BZ3, and the dévissage of the present proof.

def derivedTensorFunctorCompIsoOfBaseChange
    (hiso : IsIso (derivedTensorBaseChangeComparison A B C))
    (N : Bimodule A B) (N' : Bimodule B C) :
    derivedTensorFunctor N ⋙ derivedTensorFunctor N' ≅
      derivedTensorFunctor (compTensorResolution N N')
Tag 09S4, a lemma

Tag 09S4 in the Stacks Project.

DifferentialGraded.Bimodule.isIso_derivedTensorBaseChangeComparison_of_kFlat, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/BaseChangeTensorKFlat.lean, line 1032. The attribute's comment: “the canonical map (0BZ4) is an isomorphism”.

Stacks Tag 09S4, first conclusion. "Let R be a ring. Let (A, d), (B, d), and (C, d) be differential graded R-algebras. If C is K-flat as a complex of R-modules, then (0BZ4) is an isomorphism."

The map of Tag 0BZ4 is DifferentialGraded.derivedTensorBaseChangeComparison, the canonical map (A ⊗_R B)_B ⊗_B^𝐋 {}_B(B ⊗_R C)_C ⟶ (A ⊗_R B ⊗_R C)_C in D(C, d), and K-flatness is CochainComplex.KFlat (Tag 06XZ) of the complex of R-modules underlying C.

The source's argument is followed: on underlying complexes, tensoring over B with {}_B(B ⊗_R C)_C is tensoring over R with C, so by Tag 06Y0 it carries quasi-isomorphisms to quasi-isomorphisms; hence the plain tensor functor already computes the derived one and the comparison of Tag 09LS is invertible everywhere, in particular at (A ⊗_R B)_B, which by DifferentialGraded.Bimodule.isIso_derivedTensorBaseChangeComparison_iff is the assertion.

theorem isIso_derivedTensorBaseChangeComparison_of_kFlat
    (A B C : DifferentialGradedAlgebra.{u, u} R)
    (hC : CochainComplex.KFlat.{u, u} (regularModule C).toCochainComplex) :
    IsIso (derivedTensorBaseChangeComparison A B C)

DifferentialGraded.Bimodule.derivedTensorFunctorCompIsoOfKFlatAlgebra, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/DerivedTensorBaseChangeSecondVariable.lean, line 344. The attribute's comment: “the conclusion of Stacks 0BZ5 is valid when C is K-flat as a complex of R-modules”.

Stacks Tag 09S4, second conclusion. "Let R be a ring. Let (A, d), (B, d), (C, d) be differential graded R-algebras. If C is K-flat as a complex of R-modules, then (0BZ4) is an isomorphism and the conclusion of Lemma 0BZ5 is valid." This is the second half: if C is K-flat as a complex of R-modules, then for every differential graded (A, B)-bimodule N and every differential graded (B, C)-bimodule N' the composite of - ⊗_A^𝐋 N and - ⊗_B^𝐋 N' is isomorphic to - ⊗_A^𝐋 N'' for the differential graded (A, C)-bimodule N'' = Ñ ⊗_B Ñ' of DifferentialGraded.Bimodule.compTensorResolution, which is the conclusion of Tag 0BZ5.

K-flatness of C is the only hypothesis, exactly as in the source. The first half of the tag, DifferentialGraded.Bimodule.isIso_derivedTensorBaseChangeComparison_of_kFlat, supplies the sole hypothesis of Tag 0BZ5 in the form DifferentialGraded.Bimodule.derivedTensorFunctorCompIsoOfBaseChange, whose own four inputs are discharged there by the second assertion of Tag 09S3 twice, Tag 0BZ3 and the dévissage above.

def derivedTensorFunctorCompIsoOfKFlatAlgebra
    (hC : CochainComplex.KFlat.{u, u} (regularModule C).toCochainComplex)
    (N : Bimodule A B) (N' : Bimodule B C) :
    derivedTensorFunctor N ⋙ derivedTensorFunctor N' ≅
      derivedTensorFunctor (compTensorResolution N N')
Sources

Section22.35 Variant of derived tensor product#

Section 22.35 of the Stacks Project, Tag 09LU. 6 tags here are carried by 20 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 09LV, a lemma

Tag 09LV in the Stacks Project.

AlgebraicGeometry.RingedSite.tensorWithComplexDG, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplex/TensorHomAdjunction.lean, line 998. The attribute's comment: “the differential graded tensor functor”.

Tensoring with K, as the DG left adjoint to the representable DG functor Hom(K, -).

public noncomputable def tensorWithComplexDG
    (K : CochainComplex (ModO.{u, v, w, t} X) ℤ) : TensorWithComplexData.{u, v, w, t, s, o} X R K

AlgebraicGeometry.RingedSite.tensorWithComplexDG_regular, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplex/TensorHomAdjunction.lean, line 1039. The attribute's comment: “the image of the regular module”.

Tensoring the regular endomorphism module with K returns K.

public noncomputable def tensorWithComplexDG_regular
    (K : CochainComplex (ModO.{u, v, w, t} X) ℤ) :
    letI : Category (CompDG.{u, v, w, t, s, o} X R).Obj := (CompDG.{u, v, w, t, s, o} X
      R).instCategoryComp
    (((tensorWithComplexDG.{u, v, w, t, s, o} X R K).functor.obj
      ((Rep.{u, v, w, t, s, o} X R K).functor.obj (liftComplex.{u, v, w, t, s} X K)) :
        (CompDG.{u, v, w, t, s, o} X R).Comp) ≅
      (liftComplex.{u, v, w, t, s} X K : (CompDG.{u, v, w, t, s, o} X R).Comp))

AlgebraicGeometry.RingedSite.tensorWithComplexDG_preservesCoproducts, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplex/TensorHomAdjunction.lean, line 1066. The attribute's comment: “preservation of direct sums”.

Tensoring with K commutes with all small direct sums.

public theorem tensorWithComplexDG_preservesCoproducts
    (K : CochainComplex (ModO.{u, v, w, t} X) ℤ) (I : Type i) :
    PreservesColimitsOfShape (Discrete I)
      (tensorWithComplexDG.{u, v, w, t, s, o} X R K).functor.onComp
Tag 09LW, a lemma

Tag 09LW in the Stacks Project.

AlgebraicGeometry.RingedSite.tensorWithComplexToDerivedCategory_negMor₃_distinguished, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexConeExactness.lean, line 50. The attribute's comment: “exactness against the cone triangles, up to the sign of the third arrow”.

The image in D(O) of a triangle isomorphic to a cone triangle of K(Mod_(E, d)) is distinguished once its third arrow is negated: that negation turns a cone triangle into the triangle of an admissible short exact sequence, which tensoring with K keeps distinguished.

theorem tensorWithComplexToDerivedCategory_negMor₃_distinguished
    (T : Triangle (DifferentialGradedModule.HomotopyCategory.{0, max u v w t s, max u v w t s}
      (Rep.{u, v, w, t, s, 0} X ℤ K).algebra))
    (hT : T ∈ distinguishedConeTriangles.{0, max u v w t s, max u v w t s}
      (A := (Rep.{u, v, w, t, s, 0} X ℤ K).algebra)) :
    (tensorWithComplexToDerivedCategory.{u, v, w, t, s, 0} X ℤ K).mapTriangle.obj
        (Triangle.mk T.mor₁ T.mor₂ (-T.mor₃)) ∈
      distTriang (DerivedCategory (TensorModO.{u, v, w, t, s} X))

AlgebraicGeometry.RingedSite.tensorWithComplexHomotopy, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexHomotopy.lean, line 102. The attribute's comment: “the induced functor on homotopy categories”.

Stacks 09LW. The functor K(Mod_(E, d)) ⥤ K(O) induced on homotopy categories by tensoring differential graded modules over the endomorphism differential graded algebra of K with K.

public noncomputable def tensorWithComplexHomotopy
    (K : CochainComplex (ModO.{u, v, w, t} X) ℤ) :
    DifferentialGradedModule.HomotopyCategory (Rep.{u, v, w, t, s, o} X R K).algebra ⥤
      _root_.HomotopyCategory (TensorModO.{u, v, w, t, s} X) (ComplexShape.up ℤ)

AlgebraicGeometry.RingedSite.tensorWithComplexHomotopy_spec, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexHomotopy.lean, line 118. The attribute's comment: “compatibility with the differential graded functor”.

The induced functor on homotopy categories is the lift, along the two quotient functors, of the ordinary functor on complexes attached to the differential graded tensor functor.

public theorem tensorWithComplexHomotopy_spec
    (K : CochainComplex (ModO.{u, v, w, t} X) ℤ) :
    DifferentialGradedModule.toHomotopyCategory (Rep.{u, v, w, t, s, o} X R K).algebra ⋙
        tensorWithComplexHomotopy.{u, v, w, t, s, o} X R K =
      DifferentialGradedModule.dgFunctorToComplexes
          (tensorWithComplexDG.{u, v, w, t, s, o} X R K).functor ⋙
        HomotopyCategory.quotient (TensorModO.{u, v, w, t, s} X) (ComplexShape.up ℤ)

AlgebraicGeometry.RingedSite.tensorWithComplexHomotopy_isTriangulated, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexHomotopy.lean, line 154. The attribute's comment: “exactness of the induced functor”.

Stacks 09LW. Tensoring with K is an exact functor of triangulated categories K(Mod_(E, d)) ⥤ K(O): it commutes with the translation and carries distinguished triangles to distinguished triangles.

public theorem tensorWithComplexHomotopy_isTriangulated
    (K : CochainComplex (ModO.{u, v, w, t} X) ℤ) :
    (tensorWithComplexHomotopy.{u, v, w, t, s, o} X R K).IsTriangulated
Tag 09LX, a lemma

Tag 09LX in the Stacks Project.

AlgebraicGeometry.RingedSite.tensorWithComplexToDerivedCategory_isLeftDerivable, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerived.lean, line 146. The attribute's comment: “existence in the pro-object sense”.

Stacks 09LX, in the source's own sense. The left derived functor of tensoring with K, followed by localization of the target, is defined at every object of K(Mod_(E, d)): the pro-object of its values along the quasi-isomorphisms into an object is essentially constant.

theorem tensorWithComplexToDerivedCategory_isLeftDerivable :
    (tensorWithComplexToDerivedCategory.{u, v, w, t, s, o} X R K).IsLeftDerivable
      (quasiIsomorphisms (Rep.{u, v, w, t, s, o} X R K).algebra)

AlgebraicGeometry.RingedSite.tensorWithComplexToDerivedCategory_hasLeftDerivedFunctor, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerived.lean, line 159. The attribute's comment: “existence of the total left derived functor”.

Stacks 09LX, in the Kan extension sense. Tensoring with K, followed by localization of the target, has a total left derived functor on D(E, d).

theorem tensorWithComplexToDerivedCategory_hasLeftDerivedFunctor :
    (tensorWithComplexToDerivedCategory.{u, v, w, t, s, o} X R K).HasLeftDerivedFunctor
      (quasiIsomorphisms (Rep.{u, v, w, t, s, o} X R K).algebra)

AlgebraicGeometry.RingedSite.tensorWithComplexDerived, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerived.lean, line 170. The attribute's comment: “the derived tensor functor”.

Stacks 09LX. The derived tensor product - ⊗_E^𝐋 K : D(E, d) ⥤ D(O): the total left derived functor of tensoring with K followed by localization of the target.

def tensorWithComplexDerived :
    DifferentialGradedModule.derivedCategory (Rep.{u, v, w, t, s, o} X R K).algebra ⥤
      DerivedCategory (TensorModO.{u, v, w, t, s} X)

AlgebraicGeometry.RingedSite.tensorWithComplexDerived_isLeftDerivedFunctor, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerived.lean, line 192. The attribute's comment: “universal property”.

The universal property of Stacks 09LX: the comparison exhibits - ⊗_E^𝐋 K as the left derived functor of tensoring with K followed by localization of the target.

instance tensorWithComplexDerived_isLeftDerivedFunctor :
    (tensorWithComplexDerived.{u, v, w, t, s, o} X R K).IsLeftDerivedFunctor
      (tensorWithComplexDerivedCounit.{u, v, w, t, s, o} X R K)
      (quasiIsomorphisms (Rep.{u, v, w, t, s, o} X R K).algebra)
Tag 0CS6, a lemma

Tag 0CS6 in the Stacks Project.

AlgebraicGeometry.RingedSite.tensorWithComplexDerivedExtMap, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerived.lean, line 343. The attribute's comment: “the induced maps on Ext”.

Stacks 0CS6. The maps Ext^n_{D(E, d)}(M, N) → Ext^n_{D(𝒪)}(M ⊗_E^𝐋 K^•, N ⊗_E^𝐋 K^•) induced by the functor - ⊗_E^𝐋 K^•. With Ext^n_{D(C)}(X, Y) = Hom_{D(C)}(X, Y[n]), the map induced by a functor is its action on morphisms followed by its commutation with the translation, here that of AlgebraicGeometry.RingedSite.tensorWithComplexDerivedCommShift.

def tensorWithComplexDerivedExtMap
    {M N : DifferentialGradedModule.derivedCategory (Rep.{u, v, w, t, s, o} X R K).algebra} (n : ℤ)
    (f : M ⟶ N⟦n⟧) :
    (tensorWithComplexDerived.{u, v, w, t, s, o} X R K).obj M ⟶
      ((tensorWithComplexDerived.{u, v, w, t, s, o} X R K).obj N)⟦n⟧

AlgebraicGeometry.RingedSite.tensorWithComplexDerivedExtMap_q, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerived.lean, line 378. The attribute's comment: “the maps on Ext are those induced by tensoring with K”.

Stacks 0CS6, the maps on Ext are those induced by tensoring with K. On a class coming from K(Mod_(E, d)), the map induced by - ⊗_E^𝐋 K agrees, through the comparison - ⊗_E^𝐋 K → - ⊗_E K of Tag 09LX, with the map induced by the differential graded tensor functor of Tag 09LV read on homotopy categories. This is the compatibility of that comparison with the translation.

theorem tensorWithComplexDerivedExtMap_q
    {P Y : DifferentialGradedModule.HomotopyCategory.{o, max u v w t s, max u v w t s}
      (Rep.{u, v, w, t, s, o} X R K).algebra} (n : ℤ) (f : P ⟶ Y⟦n⟧) :
    (tensorWithComplexDerivedCounit.{u, v, w, t, s, o} X R K).app P ≫
        tensorWithComplexToDerivedCategoryExtMap.{u, v, w, t, s, o} X R K n f =
      tensorWithComplexDerivedExtMap.{u, v, w, t, s, o} X R K n
          ((quasiIsomorphisms (Rep.{u, v, w, t, s, o} X R K).algebra).Q.map f ≫
            (((quasiIsomorphisms (Rep.{u, v, w, t, s, o} X R K).algebra).Q).commShiftIso n).hom.app
              Y) ≫
        ((tensorWithComplexDerivedCounit.{u, v, w, t, s, o} X R K).app Y)⟦n⟧'

AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomSourceExtEquivOver, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerivedExtClauseOver.lean, line 230. The attribute's comment: “the source of the canonical map in D(R) is RHom(M, N), read on cohomology, for every M, N in D(E, d)”.

Stacks 0CS6, the source of the canonical map in D(R), read on cohomology and for every M, N in D(E, d). The degree-n cohomology of the source of AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapDerivedModulesOver is the Ext-group

Ext^n_{D(E, d)}(M, N) = Hom_{D(E, d)}(M, N[n]),

so that source really is RHom(M, N) read on cohomology. It is AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomSourceExtEquiv read through AlgebraicGeometry.RingedSite.homologyForgetEquiv and AlgebraicGeometry.RingedSite.dgHomComplexModulesDerivedForgetIso, which say that forgetting the R-action changes neither the cohomology group nor the complex it is taken of. There is no hypothesis on M or N.

def tensorWithComplexDerivedHomSourceExtEquivOver
    (M N : DifferentialGradedModule.derivedCategory (Rep.{u, u, u, u, u, o} X R K).algebra)
    (n : ℤ) :
    ↥((DerivedCategory.homologyFunctor (ModuleCat.{u} R) n).obj
        (DerivedCategory.Q.obj ((DifferentialGradedModule.dgCategory.{_, _, u}
            (Rep.{u, u, u, u, u, o} X R K).algebra).homComplexModules
          (DifferentialGradedModule.propertyPModel.{o, u, 0}
            (Rep.{u, u, u, u, u, o} X R K).algebra M)
          (DifferentialGradedModule.propertyPModel.{o, u, 0}
            (Rep.{u, u, u, u, u, o} X R K).algebra N)))) ≃+ (M ⟶ N⟦n⟧)

AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomTargetExtEquivOver, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerivedExtClauseOver.lean, line 263. The attribute's comment: “the target of the canonical map in D(R) read on cohomology: its degree-n cohomology is Ext^n_{D(O)}(M ⊗_E^𝐋 K, N ⊗_E^𝐋 K), for every M, N in D(E, d)”.

Stacks 0CS6, the target of the canonical map in D(R), read on cohomology and for every M, N in D(E, d). The degree-n cohomology of the target of AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapDerivedModulesOver is the Ext-group

Ext^n_{D(O)}(M ⊗_E^𝐋 K^•, N ⊗_E^𝐋 K^•) = Hom_{D(O)}(M ⊗_E^𝐋 K^•, (N ⊗_E^𝐋 K^•)[n]).

It is AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomTargetExtEquiv read through AlgebraicGeometry.RingedSite.homologyForgetEquiv and AlgebraicGeometry.RingedSite.globalDerivedHomForgetAppOver. Together with AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomSourceExtEquivOver it exhibits both cohomology modules of the clause as the Ext-groups the clause compares; that the map between them is the one induced by - ⊗_E^𝐋 K^• is AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapDerivedModulesOver_homology.

There is no hypothesis on M or N, and none on the site.

def tensorWithComplexDerivedHomTargetExtEquivOver
    (M N : DifferentialGradedModule.derivedCategory (Rep.{u, u, u, u, u, o} X R K).algebra)
    (n : ℤ) :
    ↥((DerivedCategory.homologyFunctor (ModuleCat.{u} R) n).obj
        ((scalarRestriction X R).mapDerivedCategory.obj
          (((globalDerivedHomModules X).obj
              (op ((tensorWithComplexDerived.{u, u, u, u, u, o} X R K).obj M))).obj
            ((tensorWithComplexDerived.{u, u, u, u, u, o} X R K).obj N)))) ≃+
      ((tensorWithComplexDerived.{u, u, u, u, u, o} X R K).obj M ⟶
        ((tensorWithComplexDerived.{u, u, u, u, u, o} X R K).obj N)⟦n⟧)

AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapDerivedModulesOver_homology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerivedExtClauseOver.lean, line 299. The attribute's comment: “H^n of the canonical map is the Ext map induced by - ⊗_E^𝐋 K, for every M, N in D(E, d) and every n, in the source's D(R)”.

Stacks 0CS6, the central clause, in the source's D(R). The degree-n cohomology of the canonical map

RHom(M, N) ⟶ RHom_O(M ⊗_E^𝐋 K^•, N ⊗_E^𝐋 K^•)

of D(R) is the map on Ext induced by the derived tensor product with K, for every M, N in D(E, d) and every n, with both sides read as the Ext-groups they are by AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomSourceExtEquivOver and AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomTargetExtEquivOver.

There is no hypothesis on M or N: the statement is quantified over every object of D(E, d), as the source's is, and the property-(P) reduction of the source's proof is performed by the choice of representative DifferentialGradedModule.propertyPModel. Nor is anything assumed about the site.

This is AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapDerived_homology read over the source's base ring: the canonical map in D(R) forgets to the D(ℤ)-valued one by AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapDerivedModulesOver_forget, and forgetting the scalars changes neither the cohomology groups nor the map between them.

theorem tensorWithComplexDerivedHomMapDerivedModulesOver_homology
    (M N : DifferentialGradedModule.derivedCategory (Rep.{u, u, u, u, u, o} X R K).algebra)
    (n : ℤ)
    (η : ↥((DerivedCategory.homologyFunctor (ModuleCat.{u} R) n).obj
      (DerivedCategory.Q.obj ((DifferentialGradedModule.dgCategory.{_, _, u}
          (Rep.{u, u, u, u, u, o} X R K).algebra).homComplexModules
        (DifferentialGradedModule.propertyPModel.{o, u, 0}
          (Rep.{u, u, u, u, u, o} X R K).algebra M)
        (DifferentialGradedModule.propertyPModel.{o, u, 0}
          (Rep.{u, u, u, u, u, o} X R K).algebra N))))) :
    tensorWithComplexDerivedHomTargetExtEquivOver X R K M N n
        (ModuleCat.Hom.hom ((DerivedCategory.homologyFunctor (ModuleCat.{u} R) n).map
          (tensorWithComplexDerivedHomMapDerivedModulesOver X R K M N)) η) =
      tensorWithComplexDerivedExtMap.{u, u, u, u, u, o} X R K n
        (tensorWithComplexDerivedHomSourceExtEquivOver X R K M N n η)

AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapModulesOver, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerivedHomModulesOver.lean, line 213. The attribute's comment: “the canonical map out of the differential graded Hom complex, into RHom_O(M ⊗_E K, N ⊗_E K), in the source's D(R)”.

The canonical map in D(R). The differential graded functor of Tag 09LV acts on the R-module-valued differential graded Hom complexes, and the Hom complex of two complexes of O-modules over R maps canonically to their global derived hom of Tag 0B6E read over R (AlgebraicGeometry.RingedSite.homComplexToGlobalDerivedHomModulesOver); the composite is this morphism of D(R).

Its source is the differential graded Hom complex of two differential graded modules, and its target is the global derived hom of the ordinary tensor products.

def tensorWithComplexDerivedHomMapModulesOver
    (M N : (DifferentialGradedModule.dgCategory.{_, _, u}
      (Rep.{u, u, u, u, u, o} X R K).algebra).Obj) :
    DerivedCategory.Q.obj ((DifferentialGradedModule.dgCategory.{_, _, u}
        (Rep.{u, u, u, u, u, o} X R K).algebra).homComplexModules M N) ⟶
      (scalarRestriction X R).mapDerivedCategory.obj
        (((globalDerivedHomModules X).obj (op (DerivedCategory.Q.obj
              ((tensorWithComplexDG.{u, u, u, u, u, o} X R K).functor.obj M)))).obj
          (DerivedCategory.Q.obj
            ((tensorWithComplexDG.{u, u, u, u, u, o} X R K).functor.obj N)))

AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapDerivedModulesOver, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerivedHomModulesOver.lean, line 330. The attribute's comment: “the canonical map RHom(M, N) ⟶ RHom_O(M ⊗_E^𝐋 K, N ⊗_E^𝐋 K) in the source's D(R), for every M, N in D(E, d)”.

The canonical map RHom(M, N) ⟶ RHom_O(M ⊗_E^𝐋 K^•, N ⊗_E^𝐋 K^•) in D(R), for every M, N in D(E, d). The canonical map of AlgebraicGeometry.RingedSite.tensorWithComplexDerivedHomMapModulesOver, taken at the chosen property-(P) representatives of M and N, is read into the global derived hom of the derived tensor products,

RHom(M, N) ⟶ RHom_O(M ⊗_E^𝐋 K^•, N ⊗_E^𝐋 K^•),

by transporting both arguments along AlgebraicGeometry.RingedSite.tensorWithComplexDerivedRepIso: in the contravariant argument the isomorphism is used as it stands, and in the covariant one it is inverted.

There is no hypothesis on M or N.

def tensorWithComplexDerivedHomMapDerivedModulesOver
    (M N : DifferentialGradedModule.derivedCategory (Rep.{u, u, u, u, u, o} X R K).algebra) :
    DerivedCategory.Q.obj
        ((DifferentialGradedModule.dgCategory.{_, _, u}
            (Rep.{u, u, u, u, u, o} X R K).algebra).homComplexModules
          (DifferentialGradedModule.propertyPModel.{o, u, 0}
            (Rep.{u, u, u, u, u, o} X R K).algebra M)
          (DifferentialGradedModule.propertyPModel.{o, u, 0}
            (Rep.{u, u, u, u, u, o} X R K).algebra N)) ⟶
      (scalarRestriction X R).mapDerivedCategory.obj
        (((globalDerivedHomModules X).obj
            (op ((tensorWithComplexDerived.{u, u, u, u, u, o} X R K).obj M))).obj
          ((tensorWithComplexDerived.{u, u, u, u, u, o} X R K).obj N))
Tag 09LY, a lemma

Tag 09LY in the Stacks Project.

AlgebraicGeometry.RingedSite.tensorWithComplexDerived_adj_derivedHomWithComplex, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerivedAdjunction.lean, line 286.

The derived tensor--Hom adjunction: the derived tensor product - ⊗_E^𝐋 K^• : D(E, d) ⥤ D(O) of Tag 09LX is left adjoint to derived Hom RHom(K^•, -) : D(O) ⥤ D(E, d).

def tensorWithComplexDerived_adj_derivedHomWithComplex :
    tensorWithComplexDerived.{u, v, w, t, s, 0} X ℤ K ⊣
      derivedHomWithComplex.{u, v, w, t, s} X K
Tag 09LZ, a lemma

Tag 09LZ in the Stacks Project.

AlgebraicGeometry.RingedSite.tensorWithComplexDerived_fullyFaithful_of_ext, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/CategoryTheory/Sites/Modules/TensorWithComplexDerivedFullyFaithfulDerivedHom.lean, line 192. The attribute's comment: “exactly the source's two hypotheses and nothing else: (1) is compactness of K in D(O), stated as such, and (2) is bijectivity of the functor on Hom(E, E[n]). The adjunction of Tag 09LY, the dévissage of Tag 0FQE, the direct sums and the weak generation of D(E, d), the commutation of RHom(K, -) with direct sums and the exactness of both functors (Tag 09LW, read through the sign-twisted identity of D(O)) are supplied by carriers of this library”.

Stacks 09LZ. "Let (C, O) be a ringed site. Let K be a complex of O-modules. Assume (1) K represents a compact object of D(O), and (2) E = Hom_{Comp^dg(O)}(K, K) computes the ext groups of K in D(O). Then the functor - ⊗_E^𝐋 K : D(E, d) ⥤ D(O) of Lemma 09LX is fully faithful."

The functor is the one Tag 09LX constructs, AlgebraicGeometry.RingedSite.tensorWithComplexDerived, and the right adjoint through which the source's proof runs is the derived Hom RHom(K, -) of Tag 09LK, the adjunction between them being the unconditional AlgebraicGeometry.RingedSite.tensorWithComplexDerived_adj_derivedHomWithComplex of Tag 09LY.

The source's two hypotheses are its two hypotheses here: hcompact is (1), that K represents a compact object of D(O), and hExt is (2), read as the bijectivity of the functor on the morphism groups Hom_{D(E, d)}(E, E[n]). The source's proof uses (1) only through the commutation of the right adjoint with direct sums, and that commutation is derived here rather than assumed: the regular module E is a compact weak generator of D(E, d) and - ⊗_E^𝐋 K sends it to K, so CategoryTheory.Pretriangulated.preservesCoproducts_of_isCompactObject_map applies.

Exactness of neither functor is assumed. The exactness of - ⊗_E^𝐋 K in the pretriangulated structure in force on D(E, d) is false, by a sign; what holds, unconditionally, is the exactness of its composite with the sign-twisted identity of D(O) (AlgebraicGeometry.RingedSite.tensorWithComplexDerived_signTwist_isTriangulated), and the adjunction read between the twisted composites carries that to the right adjoint. Since CategoryTheory.signTwist is the identity on objects and on morphisms, the full faithfulness obtained is full faithfulness of - ⊗_E^𝐋 K itself. See the module's implementation notes.

Everything else that AlgebraicGeometry.RingedSite.tensorWithComplexDerived_fullyFaithful takes as an argument is supplied here — the adjunction of Tag 09LY and its commutation with the translation, the dévissage of Tag 0FQE, the direct sums of D(E, d) and the weak generation of D(E, d) by the regular module. See the module's implementation notes.

Full faithfulness is data, a chosen inverse to the action on morphism groups, so this is a definition.

def tensorWithComplexDerived_fullyFaithful_of_ext
    (hcompact : IsCompactObject.{max u v w t s}
      (DerivedCategory.Q.obj (liftComplex.{u, v, w, t, s} X K)))
    (hExt : ∀ n : ℤ, Function.Bijective
      (fun f : repRegularDerived.{u, v, w, t, s} X K ⟶
          (repRegularDerived.{u, v, w, t, s} X K)⟦n⟧ =>
        (tensorWithComplexDerived.{u, v, w, t, s, 0} X ℤ K).map f)) :
    (tensorWithComplexDerived.{u, v, w, t, s, 0} X ℤ K).FullyFaithful
Sources

Section22.36 Characterizing compact objects#

Section 22.36 of the Stacks Project, Tag 09QZ. 6 tags here are carried by 23 declarations of the repository (all in StacksFrontier) and 1 registered declaration, quoted below from AxiomMath/Stacks at commit 5ed82d14.

Tag 09R0, a remark

Tag 09R0 in the Stacks Project.

Stacks.DifferentialGradedModule.SourceProjective.sourceProjective, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjective.lean, line 74. The attribute's comment: “source_projective_dg_modules”.

The source-projective objects of the homotopy category of right differential graded A-modules: those from which morphisms are unchanged by passage to the derived category.

abbrev sourceProjective :
    ObjectProperty (DifferentialGradedModule.HomotopyCategory.{u, v, w} A)

Stacks.DifferentialGradedModule.SourceProjective.sourceProjective_isClosedUnderIsomorphisms, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjective.lean, line 189. The attribute's comment: “triangulated_saturated”.

Stacks Project, Tag 09R0. Source-projectivity is invariant under isomorphism in the homotopy category.

instance sourceProjective_isClosedUnderIsomorphisms :
    ObjectProperty.IsClosedUnderIsomorphisms (sourceProjective.{u, v, w} A)

Stacks.DifferentialGradedModule.SourceProjective.sourceProjective_isTriangulated, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjective.lean, line 196. The attribute's comment: “triangulated_saturated”.

Stacks Project, Tag 09R0. The source-projective objects form a triangulated subcategory of the homotopy category.

instance sourceProjective_isTriangulated :
    (sourceProjective.{u, v, w} A).IsTriangulated

Stacks.DifferentialGradedModule.SourceProjective.sourceProjective_isSaturated, an instance in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjective.lean, line 204. The attribute's comment: “triangulated_saturated”.

Stacks Project, Tag 09R0. The triangulated subcategory of source-projective objects is saturated.

instance sourceProjective_isSaturated :
    (sourceProjective.{u, v, w} A).IsSaturated

Stacks.DifferentialGradedModule.SourceProjective.dualNumberAlgebra, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 143. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The dual-number algebra, as a differential graded algebra concentrated in degree zero.

noncomputable def dualNumberAlgebra :
    DifferentialGradedAlgebra.{u, u} (DualNumber k)

Stacks.DifferentialGradedModule.SourceProjective.dualNumberAlgebra_carrier, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 169. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The differential graded algebra has exactly the dual-number ring as its underlying algebra.

theorem dualNumberAlgebra_carrier : (dualNumberAlgebra k).A = DualNumber k

Stacks.DifferentialGradedModule.SourceProjective.dualNumberAlgebra_algebraMap, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 174. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The scalar structure on the concentrated algebra is the regular one.

theorem dualNumberAlgebra_algebraMap (r : DualNumber k) :
    cast (dualNumberAlgebra_carrier k)
      (algebraMap (DualNumber k) (dualNumberAlgebra k).A r) = r

Stacks.DifferentialGradedModule.SourceProjective.dualNumberAlgebra_grading, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 181. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The differential graded algebra is concentrated in degree zero.

theorem dualNumberAlgebra_grading (n : ℤ) :
    (dualNumberAlgebra k).grading n = if n = 0 then ⊤ else ⊥

Stacks.DifferentialGradedModule.SourceProjective.dualNumberAlgebra_differential, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 186. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The differential graded algebra has zero differential.

theorem dualNumberAlgebra_differential : (dualNumberAlgebra k).d = 0

Stacks.DifferentialGradedModule.SourceProjective.dualNumberModule, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 287. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The doubly infinite complex of free rank-one dual-number modules.

noncomputable def dualNumberModule :
    DifferentialGradedModule.{u, u, u} (dualNumberAlgebra k)

Stacks.DifferentialGradedModule.SourceProjective.gradedFreeEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 357. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. An isomorphism from the graded module to a direct sum of shifted copies of its regular module.

noncomputable def gradedFreeEquiv :
    (dualNumberModule k).M ≃ₗ[MulOpposite (dualNumberAlgebra k).A]
      (⨁ _ : ℤ, MulOpposite (dualNumberAlgebra k).A)

Stacks.DifferentialGradedModule.SourceProjective.gradedFreeEquiv_mem_iff, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 366. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The direct-sum coordinates identify each homogeneous piece with its corresponding shifted copy of the regular module.

theorem gradedFreeEquiv_mem_iff (n : ℤ) (x : (dualNumberModule k).M) :
    x ∈ (dualNumberModule k).grading n ↔
      ∃ a : MulOpposite (dualNumberAlgebra k).A,
        gradedFreeEquiv k x =
          DirectSum.lof (MulOpposite (dualNumberAlgebra k).A) ℤ
            (fun _ => MulOpposite (dualNumberAlgebra k).A) n a

Stacks.DifferentialGradedModule.SourceProjective.gradedPieceEquiv, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 385. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The chosen regular-module coordinates on a homogeneous component.

noncomputable def gradedPieceEquiv (n : ℤ) :
    ((dualNumberModule k).grading n) ≃ₗ[DualNumber k] DualNumber k

Stacks.DifferentialGradedModule.SourceProjective.dualNumberModule_differential, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 414. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. In the regular coordinates, the differential is multiplication by ε.

theorem dualNumberModule_differential (n : ℤ) (x : (dualNumberModule k).grading n) :
    gradedPieceEquiv k (n + 1) ((dualNumberModule k).gradedDifferential n x) =
      DualNumber.eps * gradedPieceEquiv k n x

Stacks.DifferentialGradedModule.SourceProjective.dualNumberModule_acyclic, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 459. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The doubly infinite complex is acyclic.

theorem dualNumberModule_acyclic :
    DifferentialGradedModule.acyclic (dualNumberAlgebra k)
      ((DifferentialGradedModule.toHomotopyCategory (dualNumberAlgebra k)).obj
        (dualNumberModule k))

Stacks.DifferentialGradedModule.SourceProjective.dualNumberModule_homotopy_id_ne_zero, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 531. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. The identity of the complex survives passage to the homotopy category.

theorem dualNumberModule_homotopy_id_ne_zero :
    (𝟙 ((DifferentialGradedModule.toHomotopyCategory (dualNumberAlgebra k)).obj
      (dualNumberModule k))) ≠ 0

Stacks.DifferentialGradedModule.SourceProjective.dualNumberModule_not_sourceProjective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DGA/SourceProjectiveCounterexample.lean, line 543. The attribute's comment: “dual_number_counterexample”.

Stacks Project, Tag 09R0. Graded freeness does not imply source-projectivity: the acyclic graded-free module above is not source-projective.

theorem dualNumberModule_not_sourceProjective :
    ¬ sourceProjective (dualNumberAlgebra k)
      ((DifferentialGradedModule.toHomotopyCategory (dualNumberAlgebra k)).obj
        (dualNumberModule k))

Declarations registered for the tag:

Tag 09R1, a remark

Tag 09R1 in the Stacks Project.

DifferentialGradedModule.IsFinite, an abbrev in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/Finite.lean, line 37. The attribute's comment: “finite_differential_graded_module”.

A differential graded module that is finitely generated as a right module over its differential graded algebra.

public abbrev IsFinite {R : Type u} [CommRing R] {A : DifferentialGradedAlgebra R}
    (M : DifferentialGradedModule A) : Prop
Tag 09R2, a lemma

Tag 09R2 in the Stacks Project.

DifferentialGradedModule.exists_factorThrough_finiteSubfiltration, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/CompactFiniteCellFiltration/FiniteSubfiltration.lean, line 707.

Stacks Tag 09R2. Let (A, d) be a differential graded algebra, let E be a compact object of D(A, d) and let P be a differential graded A-module carrying a finite filtration 0 = F₋₁P ⊆ F₀P ⊆ ⋯ ⊆ FₙP = P by differential graded submodules whose graded pieces are direct sums F_{i+1}P/FᵢP ≅ ⨁_{j ∈ Jᵢ} A[k_{i,j}] of shifts of the algebra. Then every morphism E ⟶ P of D(A, d) factors through a differential graded submodule P' ⊆ P whose intersections with the filtration have graded pieces the finite subsums ⨁_{j ∈ J'ᵢ} A[k_{i,j}], for finite subsets J'ᵢ ⊆ Jᵢ.

The filtration of P' is produced as the pullback of that of P, and the identification of its graded pieces with the finite subsums is compatible with the given identification of the graded pieces of P, through the inclusion of the subsum.

theorem exists_factorThrough_finiteSubfiltration (A : DifferentialGradedAlgebra.{u, u} R)
    (n : ℕ) (P : DifferentialGradedModule.{u, u, u} A) (F : Filtration P ℕ)
    (_hzero : IsZero (F.obj 0)) (htop : IsIso (F.ι.app (n + 1)))
    (J : Fin (n + 1) → Type u) (k : ∀ i, J i → ℤ)
    (e : ∀ i : Fin (n + 1), cokernel (F.diagram.map (homOfLE (Nat.le_succ i.val))) ≅
      ∐ fun j : J i => shift (regularModule A) (k i j))
    (E : derivedCategory' A) [IsCompactObject.{u} E]
    (f : E ⟶ (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj P) :
    ∃ (P' : DifferentialGradedModule.{u, u, u} A) (p : P' ⟶ P),
      Mono p ∧
      ∃ (F' : Filtration P' ℕ) (β : ∀ i : ℕ, F'.obj i ⟶ F.obj i),
        (∀ i : ℕ, IsPullback (F'.ι.app i) (β i) p (F.ι.app i)) ∧
        (∃ (J' : ∀ i : Fin (n + 1), Finset (J i))
          (e' : ∀ i : Fin (n + 1),
            cokernel (F'.diagram.map (homOfLE (Nat.le_succ i.val))) ≅
              ∐ fun j : ↑(J' i) => shift (regularModule A) (k i j.val))
          (q : ∀ i : Fin (n + 1),
            cokernel (F'.diagram.map (homOfLE (Nat.le_succ i.val))) ⟶
              cokernel (F.diagram.map (homOfLE (Nat.le_succ i.val)))),
          (∀ i : Fin (n + 1),
            cokernel.π (F'.diagram.map (homOfLE (Nat.le_succ i.val))) ≫ q i =
              β (i.val + 1) ≫ cokernel.π (F.diagram.map (homOfLE (Nat.le_succ i.val)))) ∧
          (∀ i : Fin (n + 1),
            (e' i).hom ≫ Sigma.map' (fun j : ↑(J' i) => j.val) (fun _ => 𝟙 _) =
              q i ≫ (e i).hom)) ∧
        ∃ g : E ⟶ (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj P',
          g ≫ (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).map p = f
Tag 09R3, a proposition

Tag 09R3 in the Stacks Project.

DifferentialGradedModule.isCompactObject_iff_exists_retract_hasFiniteCellFiltration, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/CompactFiniteCellFiltration/CompactObjects.lean, line 777.

Stacks Tag 09R3. "Let (A, d) be a differential graded algebra. Let E be an object of D(A, d). The following are equivalent: (1) E is a compact object, and (2) E is a direct summand of an object which is represented by a differential graded module P which has a finite filtration F_• by differential graded submodules such that F_iP/F_{i-1}P are finite direct sums of shifts of A."

Condition (2) is read as: E is a retract of the image of a module with a finite cell filtration, DifferentialGradedModule.HasFiniteCellFiltration. A retract is the same thing as a direct summand here, the derived category of a differential graded algebra being idempotent complete ([Stacks, Tag 05QW]); the retract formulation is the one both implications produce and consume.

theorem isCompactObject_iff_exists_retract_hasFiniteCellFiltration
    (A : DifferentialGradedAlgebra.{u, u} R) (E : derivedCategory' A) :
    IsCompactObject.{u} E ↔
      ∃ P : DifferentialGradedModule.{u, u, u} A, HasFiniteCellFiltration P ∧
        ∃ (i : E ⟶ (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj P)
          (r : (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj P ⟶ E), i ≫ r = 𝟙 E
Tag 09RA, a lemma

Tag 09RA in the Stacks Project.

DifferentialGradedModule.exists_subsingleton_hom_of_isZero_homology, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/CompactCohomologyWindow.lean, line 315.

Stacks Tag 09RA. For every compact object E of the derived category of a differential graded algebra there are integers a ≤ b such that Hom_{D(A, d)}(E, M) = 0 for every object M whose cohomology Hⁱ(M) vanishes for all i ∈ [a, b].

If no such interval existed, then for each n there would be an object Mₙ with vanishing cohomology on [-n, n] and a nonzero morphism E ⟶ Mₙ. In each fixed degree only finitely many of the Mₙ have nonvanishing cohomology, so DifferentialGradedModule.finite_setOf_ne_zero_of_isCompactObject applies to the family and contradicts the fact that all of the chosen morphisms are nonzero.

theorem exists_subsingleton_hom_of_isZero_homology (A : DifferentialGradedAlgebra.{u, u} R)
    (E : derivedCategory' A) [IsCompactObject.{u} E] :
    ∃ a b : ℤ, a ≤ b ∧ ∀ M : derivedCategory' A,
      (∀ i : ℤ, a ≤ i → i ≤ b → IsZero (M.as.obj.as.toCochainComplex.homology i)) →
        Subsingleton (E ⟶ M)
Tag 09RB, a lemma

Tag 09RB in the Stacks Project.

DifferentialGradedModule.exists_retract_isFiniteFreeAsGradedModule_of_isCompactObject, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/CompactFiniteFree.lean, line 634. The attribute's comment: “(1) ⟹ (2), corrected: a compact object is a DIRECT SUMMAND of (the image of) a differential graded module which is finite FREE as a graded module and satisfies Hom_K = Hom_D; the literal statement, with 'represented by' and 'finite projective', is a mistake in the source — see the refutation in Examples/Algebra/CompactObjectNoFiniteProjectiveModel.lean”.

[Stacks, Tag 09RB], the implication (1) ⟹ (2), in the corrected form that the source's own proof establishes. A compact object E of D(A, d) is a direct summand in D(A, d) of the image of a differential graded A-module P which is finite free as a graded A-module and satisfies Hom_{K(A, d)}(P, M) = Hom_{D(A, d)}(P, M) for every differential graded A-module M.

The literal statement of the source — that E can be represented by such a P, with finite projective in place of finite free — is false, and is a mistake in the Stacks Project, pending review: it is contradicted by the source's own [Stacks, Tag 09R5], whose compact object over the bounded algebra A = k[x, y]/(y²) of Tag 09R4 has no finite graded-projective representative at all. That refutation is Stacks.Examples.not_forall_exists_finite_gradedProjective_of_isCompactObject, in StacksFrontier/Examples/Algebra/CompactObjectNoFiniteProjectiveModel.lean. The two differences below are exactly what the argument of Tag 09R3 delivers, and the counterexample is consistent with them: there E = Ker(x) is a direct summand of the regular module, which is finite free.

The statement is unconditional: the boundedness hypothesis "A^n = 0 for |n| ≫ 0" of the source is not assumed and is not used anywhere in the proof, which is part of why the literal statement cannot be rescued by it.

The proof composes the two implications the chapter already has. [Stacks, Tag 09R3], DifferentialGradedModule.isCompactObject_iff_exists_retract_hasFiniteCellFiltration, makes E a retract of the image of a module P with a finite cell filtration; such a P is finite free as a graded module, because its filtration is built out of finitely many finite direct sums of shifts of the algebra and splits as a filtration of graded modules (DifferentialGradedModule.isFiniteFreeAsGradedModule_of_hasFiniteCellFiltration); and it is orthogonal on the left to the acyclic modules, so morphisms out of it are not changed by localization (DifferentialGradedModule.bijective_q_map_of_hasFiniteCellFiltration, Tag 09KY), which is the condition of [Stacks, Tag 09R0].

The converse holds too, as DifferentialGradedModule.isCompactObject_of_retract_isFiniteFreeAsGradedModule, so the tag's equivalence is restored by the correction; the registration of (2) ⟹ (1) stays on the source's own spelling of condition (2), namely DifferentialGradedModule.isCompactObject_of_exists_finite_projective_representative.

theorem exists_retract_isFiniteFreeAsGradedModule_of_isCompactObject
    (A : DifferentialGradedAlgebra.{u, u} R) (E : derivedCategory' A)
    (hE : IsCompactObject.{u} E) :
    ∃ P : DifferentialGradedModule.{u, u, u} A, IsFiniteFreeAsGradedModule P ∧
      (∀ M : DifferentialGradedModule.{u, u, u} A, Function.Bijective
        (((quasiIsomorphisms' A).Q).map :
          ((toHomotopyCategory A).obj P ⟶ (toHomotopyCategory A).obj M) → _)) ∧
      ∃ (i : E ⟶ (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj P)
        (r : (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj P ⟶ E), i ≫ r = 𝟙 E

DifferentialGradedModule.isCompactObject_of_exists_finite_projective_representative, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/DifferentialGraded/Module/CompactFiniteProjective.lean, line 293. The attribute's comment: “(2) ⟹ (1)”.

[Stacks, Tag 09RB], the implication (2) ⟹ (1). "Let (A, d) be a differential graded algebra. Assume that A^n = 0 for |n| ≫ 0. Let E be an object of D(A, d). The following are equivalent: (1) E is a compact object, and (2) E can be represented by a differential graded A-module P which is finite projective as a graded A-module and satisfies Hom_{K(A, d)}(P, M) = Hom_{D(A, d)}(P, M) for every differential graded A-module M."

Condition (2) is read as the conjunction of: P is finite, that is finitely generated as a right A-module (DifferentialGradedModule.IsFinite, Tag 09R1); P is projective as a graded module (Stacks.DifferentialGraded.DGModule.IsProjectiveAsGradedModule, Tag 09K0); the localization functor is bijective on morphisms out of the class of P into the class of every differential graded module (Tag 09R0); and E is isomorphic in D(A, d) to the class of P.

The boundedness of A and the graded projectivity of P are hypotheses of the source statement and are recorded here, but this implication uses neither: finiteness together with the comparison of morphism groups already gives compactness.

theorem isCompactObject_of_exists_finite_projective_representative
    (A : DifferentialGradedAlgebra.{u, u} R) (c : ℤ)
    (_hA : ∀ n : ℤ, c ≤ |n| → A.grading n = ⊥) (E : derivedCategory' A)
    (hE : ∃ P : DifferentialGradedModule.{u, u, u} A, IsFinite P ∧
      Stacks.DifferentialGraded.DGModule.IsProjectiveAsGradedModule.{u, u, u, u}
        (Unbundled.module P) ∧
      (∀ M : DifferentialGradedModule.{u, u, u} A, Function.Bijective
        (((quasiIsomorphisms' A).Q).map :
          ((toHomotopyCategory A).obj P ⟶ (toHomotopyCategory A).obj M) → _)) ∧
      Nonempty (E ≅ (toHomotopyCategory A ⋙ (quasiIsomorphisms' A).Q).obj P)) :
    IsCompactObject.{u} E
Sources

The dependency explorer needs JavaScript and its graph data.

Download the complete graph data.