AlgebraicGeometry.SmoothProperCurve.finrank_H1_eq_genusFF_baseChange
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
universe u
open CategoryTheory CategoryTheory.Limits
open NeronModelInfra
open scoped TensorProduct
namespace AlgebraicGeometry.SmoothProperCurveLean source · full declaration
theorem finrank_H1_eq_genusFF_baseChange
(K : Type u) [Field K] {C : Scheme.{u}} (c : C ⟶ Spec (CommRingCat.of K))
[IsProper c] [SmoothOfRelativeDimension 1 c] [GeometricallyIntegral c]
(𝒱 : C.TwoAffineOpenCover) (Ω : Type u) [Field Ω] [Algebra K Ω] [IsAlgClosed Ω] :
let := (AlgebraicCurve.baseToFunctionField (baseChange K c Ω)).toAlgebra
Module.finrank K (𝒱.structureSheafSections c).H1 =
AlgebraicCurve.genusFF Ω (pullback c (specMap K Ω)).functionField := by
intro a
let d := (𝒱.structureSheafSections c).cechDiff
have hex : Function.Exact d (LinearMap.range d).mkQ :=
LinearMap.exact_map_mkQ_range d
have hsurj : Function.Surjective (LinearMap.range d).mkQ :=
Submodule.mkQ_surjective (LinearMap.range d)
have hexΩ : Function.Exact (d.baseChange Ω)
((LinearMap.range d).mkQ.baseChange Ω) := by
have ht := lTensor_exact Ω hex hsurj
rwa [← LinearMap.baseChange_eq_ltensor, ← LinearMap.baseChange_eq_ltensor] at ht
let e := hexΩ.linearEquivOfSurjective (LinearMap.baseChange_surjective Ω hsurj)
calc
Module.finrank K (𝒱.structureSheafSections c).H1 =
Module.finrank Ω (Ω ⊗[K] (𝒱.structureSheafSections c).H1) :=
Module.finrank_baseChange.symm
_ = Module.finrank Ω ((Ω ⊗[K] (𝒱.cover c).A01) ⧸
LinearMap.range (d.baseChange Ω)) := e.finrank_eq.symm
_ = AlgebraicCurve.genusFF Ω (pullback c (specMap K Ω)).functionField :=
(𝒱.finrank_cechDiff_baseChange_of_isAlgClosed c Ω).2.2