Paper XII · Lean source
ComplexBaseChange.lean
Inherited / related evidence Coverage and evidence
The edition relies on earlier or related formal evidence. That evidence is not a fresh full-edition replay.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
PaperXII/ComplexBaseChange.lean86 lines
Original source path
core/publication/source/lean_guide/formal_release/lean/PaperXII/ComplexBaseChange.leanSkip declarations and read code
1 import Mathlib.Algebra.Category.ModuleCat.ChangeOfRings
2 import Mathlib.Algebra.Category.ModuleCat.Abelian
3 import Mathlib.Algebra.Homology.Homotopy
4
5 /-!
6 # Scalar extension of actual cochain complexes
7
8 The functor below applies module scalar extension in every degree. Its
9 composition isomorphism is induced by the module tensor associator, including
10 its compatibility with the differentials. For a projective complex this is
11 the model used for derived scalar extension in `PerfectModels`.
12 -/
13
14 noncomputable section
15
16 open CategoryTheory
17
18 universe u
19
20 namespace PaperXII.ComplexBaseChange
21
22 variable {R S T : Type u} [CommRing R] [CommRing S] [CommRing T]
23
24 /-- Tensor extension is additive on module morphisms. -/
25 instance extendScalarsAdditive (f : R →+* S) :
26 (ModuleCat.extendScalars.{u, u, u} f).Additive := by
27 let := Limits.preservesBinaryBiproducts_of_preservesBinaryCoproducts
28 (ModuleCat.extendScalars.{u, u, u} f)
29 exact Functor.additive_of_preservesBinaryBiproducts (ModuleCat.extendScalars.{u, u, u} f)
30
31 /-- Degreewise tensor extension, with the induced differentials. -/
32 abbrev complexFunctor (f : R →+* S) :
33 CochainComplex (ModuleCat.{u} R) ℤ ⥤ CochainComplex (ModuleCat.{u} S) ℤ :=
34 (ModuleCat.extendScalars f).mapHomologicalComplex (.up ℤ)
35
36 /-- The actual specialized cochain complex. -/
37 abbrev baseChange (f : R →+* S) (K : CochainComplex (ModuleCat.{u} R) ℤ) :=
38 (complexFunctor f).obj K
39
40 /-- The module in degree `n` is the scalar extension of that degree. -/
41 theorem baseChange_X (f : R →+* S) (K : CochainComplex (ModuleCat.{u} R) ℤ) (n : ℤ) :
42 (baseChange f K).X n = (ModuleCat.extendScalars f).obj (K.X n) := rfl
43
44 /-- The specialized differential is obtained from the original differential. -/
45 theorem baseChange_d (f : R →+* S) (K : CochainComplex (ModuleCat.{u} R) ℤ) (i j : ℤ) :
46 (baseChange f K).d i j = (ModuleCat.extendScalars f).map (K.d i j) := rfl
47
48 /-- Scalar extension by a composite agrees with successive scalar extensions. -/
49 def complexFunctorCompIso (f : R →+* S) (g : S →+* T) :
50 complexFunctor f ⋙ complexFunctor g ≅ complexFunctor (g.comp f) :=
51 Functor.mapHomologicalComplexCompIso (ModuleCat.extendScalarsComp f g).symm (.up ℤ)
52
53 /-- The actual tensor association isomorphism, including all differentials. -/
54 def baseChangeCompIso (f : R →+* S) (g : S →+* T)
55 (K : CochainComplex (ModuleCat.{u} R) ℤ) :
56 baseChange g (baseChange f K) ≅ baseChange (g.comp f) K :=
57 (complexFunctorCompIso f g).app K
58
59 /-- The tensor association isomorphism commutes with every cochain map. -/
60 theorem baseChangeCompIso_naturality (f : R →+* S) (g : S →+* T)
61 {K L : CochainComplex (ModuleCat.{u} R) ℤ} (φ : K ⟶ L) :
62 (complexFunctor g).map ((complexFunctor f).map φ) ≫
63 (baseChangeCompIso f g L).hom =
64 (baseChangeCompIso f g K).hom ≫ (complexFunctor (g.comp f)).map φ :=
65 (complexFunctorCompIso f g).hom.naturality φ
66
67 /-- Scalar extension by the identity recovers the original complex. -/
68 def baseChangeIdIso (K : CochainComplex (ModuleCat.{u} R) ℤ) :
69 baseChange (RingHom.id R) K ≅ K :=
70 ((NatIso.mapHomologicalComplex (ModuleCat.extendScalarsId R) (.up ℤ)) ≪≫
71 Functor.mapHomologicalComplexIdIso (ModuleCat.{u} R) (.up ℤ)).app K
72
73 /-- Every module scalar extension preserves a supplied cochain homotopy. -/
74 def baseChangeHomotopy (f : R →+* S)
75 {K L : CochainComplex (ModuleCat.{u} R) ℤ} {φ ψ : K ⟶ L}
76 (h : Homotopy φ ψ) :
77 Homotopy ((complexFunctor f).map φ) ((complexFunctor f).map ψ) :=
78 (ModuleCat.extendScalars f).mapHomotopy h
79
80 /-- Arbitrary scalar extension preserves homotopy equivalence, without flatness. -/
81 def baseChangeHomotopyEquiv (f : R →+* S)
82 {K L : CochainComplex (ModuleCat.{u} R) ℤ} (h : HomotopyEquiv K L) :
83 HomotopyEquiv (baseChange f K) (baseChange f L) :=
84 (ModuleCat.extendScalars f).mapHomotopyEquiv h
85
86 end PaperXII.ComplexBaseChange
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: 6d91bbc8a4849ac4a5bae4f95004136f907a63afab85f9df0e99d51b4c8d8769
Back to Paper XII: Patching Support, Hecke Packets, and Conditional Automorphic Completion