EtaleCohomology.etalePushforwardGeometricLift_comp
Geometric lifts into successive base changes agree with the lift into the composite base change under the actual pasting isomorphism.
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
universe u
open AlgebraicGeometry CategoryTheory Limits Opposite
namespace EtaleCohomology
variable {X Y Z : Scheme.{u}} (p : Z ⟶ Y) (q : Y ⟶ X)
{Ω : Type u} [Field Ω] [IsSepClosed Ω]
(t : Spec (CommRingCat.of Ω) ⟶ X)
(s : {s : Spec (CommRingCat.of Ω) ⟶ Y // s ≫ q = t})
(r : {r : Spec (CommRingCat.of Ω) ⟶ Z // r ≫ p = s.val})Lean source · full declaration
lemma etalePushforwardGeometricLift_comp (U : X.Etale)
(a : (Scheme.pointSmallEtale t).fiber.obj U) :
(Scheme.pointSmallEtale r.val).fiber.map
((MorphismProperty.Over.pullbackComp
(P := show MorphismProperty Scheme.{u} from @Etale) (Q := ⊤) p q).hom.app U)
(etalePushforwardGeometricLift (p ≫ q) t
⟨r.val, by rw [← Category.assoc, r.property, s.property]⟩ U a) =
etalePushforwardGeometricLift p s.val r ((etaleBaseChange q).obj U)
(etalePushforwardGeometricLift q t s U a) := by
let B : Y.Etale := (etaleBaseChange q).obj U
let C : Z.Etale := (etaleBaseChange p).obj B
let D : Z.Etale := (etaleBaseChange (p ≫ q)).obj U
let e : D ⟶ C := (MorphismProperty.Over.pullbackComp
(P := show MorphismProperty Scheme.{u} from @Etale) (Q := ⊤) p q).hom.app U
let b : Spec (CommRingCat.of Ω) ⟶ B.left :=
(etalePushforwardGeometricLift q t s U a).left
let c : Spec (CommRingCat.of Ω) ⟶ C.left :=
(etalePushforwardGeometricLift p s.val r B
(etalePushforwardGeometricLift q t s U a)).left
let d : Spec (CommRingCat.of Ω) ⟶ D.left :=
(etalePushforwardGeometricLift (p ≫ q) t
⟨r.val, by rw [← Category.assoc, r.property, s.property]⟩ U a).left
let π : C.left ⟶ B.left := pullback.fst B.hom p
let ρ : B.left ⟶ U.left := pullback.fst U.hom q
let δ : D.left ⟶ U.left := pullback.fst U.hom (p ≫ q)
have he : e.left ≫ π ≫ ρ = δ :=
MorphismProperty.Over.pullbackComp_left_fst_fst
(P := show MorphismProperty Scheme.{u} from @Etale) (Q := ⊤) p q U
have hd : d ≫ δ = a.left := pullback.lift_fst _ _ _
have hb : b ≫ ρ = a.left := pullback.lift_fst _ _ _
have hc : c ≫ π = b := pullback.lift_fst _ _ _
have hcZ : c ≫ C.hom = r.val := pullback.lift_snd _ _ _
have hdZ : d ≫ D.hom = r.val := pullback.lift_snd _ _ _
have hπ : π ≫ B.hom = C.hom ≫ p := pullback.condition
have heZ : e.left ≫ C.hom = D.hom := e.w
have hz : (d ≫ e.left) ≫ C.hom = c ≫ C.hom :=
(Category.assoc d e.left C.hom).trans
((congrArg (fun k : D.left ⟶ Z => d ≫ k) heZ).trans (hdZ.trans hcZ.symm))
have hw (k : Spec (CommRingCat.of Ω) ⟶ C.left) :
(k ≫ π) ≫ B.hom = (k ≫ C.hom) ≫ p :=
(Category.assoc k π B.hom).trans
((congrArg (fun z : C.left ⟶ Y => k ≫ z) hπ).trans (Category.assoc k C.hom p).symm)
apply Over.OverMorphism.ext
change d ≫ e.left = c
apply pullback.hom_ext
· change (d ≫ e.left) ≫ π = c ≫ π
apply pullback.hom_ext
· change ((d ≫ e.left) ≫ π) ≫ ρ = (c ≫ π) ≫ ρ
rw [Category.assoc, Category.assoc, he, hd, hc, hb]
· change ((d ≫ e.left) ≫ π) ≫ B.hom = (c ≫ π) ≫ B.hom
exact (hw (d ≫ e.left)).trans
((congrArg (fun k : Spec (CommRingCat.of Ω) ⟶ Z => k ≫ p) hz).trans (hw c).symm)
· change (d ≫ e.left) ≫ C.hom = c ≫ C.hom
exact hz