import Mathlib import Definitions.Def_AlgebraicGeometry_RigKerDualNumber import Definitions.Def_AlgebraicGeometry_TwoAffineOpenCoverH1BaseChange import Definitions.Def_AlgebraicGeometry_ModulesSectionsTensor set_option autoImplicit false universe u noncomputable section open CategoryTheory CategoryTheory.Limits Opposite AlgebraicGeometry NeronModelInfra AlgebraicGeometry.Scheme.TwoAffineOpenCover namespace AlgebraicGeometry.RelPicard section Thickening variable {R : Type u} [CommRing R] (A : Type u) [CommRing A] [Algebra R A] {C : Scheme.{u}} (š’± : C.TwoAffineOpenCover) (c : C ⟶ Spec (.of R)) abbrev dualNumberThickening : HomOver (IsScalarTower.toAlgHom R A (DualNumber A)).toRingHom (š’±.pullback c A) (pullback.snd c (specMap R A)) (š’±.pullback c (DualNumber A)) (pullback.snd c (specMap R (DualNumber A))) := HomOver.stage š’± c (IsScalarTower.toAlgHom R A (DualNumber A)) def oneAddEpsMul (f : ((š’±.pullback c A).cover (pullback.snd c (specMap R A))).A01) : ((š’±.pullback c (DualNumber A)).cover (pullback.snd c (specMap R (DualNumber A)))).A01 := 1 + algebraMap (DualNumber A) _ DualNumber.eps * (dualNumberThickening A š’± c).map01 f end Thickening section Spec variable {R : Type u} [CommRing R] {C : Scheme.{u}} variable (c : C ⟶ Spec (.of R)) (ε : SchemeHomOver (šŸ™ (Spec (.of R))) c) variable (A : Type u) [CommRing A] [Algebra R A] (š’± : C.TwoAffineOpenCover) abbrev H1StructureSheaf : Type u := ((š’±.pullback c A).structureSheafSections (pullback.snd c (specMap R A))).H1 def IsDeformationClassMap (Ī“ : RigKerDualNumber c ε A → H1StructureSheaf c A š’±) : Prop := āˆ€ (M : RigKerDualNumber.Carrier c ε A) (eā‚€ : Ī“(M.1.L, (š’±.pullback c (DualNumber A)).U0)) (e₁ : Ī“(M.1.L, (š’±.pullback c (DualNumber A)).U1)) (f : ((š’±.pullback c A).cover (pullback.snd c (specMap R A))).A01), Scheme.Modules.IsFrameOn eā‚€ (š’±.pullback c (DualNumber A)).U0 → Scheme.Modules.IsFrameOn e₁ (š’±.pullback c (DualNumber A)).U1 → M.1.L.presheaf.map (homOfLE inf_le_right).op e₁ = (show Ī“(Limits.pullback c (specMap R (DualNumber A)), (š’±.pullback c (DualNumber A)).U0 āŠ“ (š’±.pullback c (DualNumber A)).U1) from oneAddEpsMul A š’± c f) • M.1.L.presheaf.map (homOfLE inf_le_left).op eā‚€ → Ī“ (Quotient.mk _ M) = Submodule.Quotient.mk f end Spec end AlgebraicGeometry.RelPicard end