Source context 4 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
universe u
open CategoryTheory Limits TopologicalSpace
namespace AlgebraicGeometry.Etaletheorem section_eq_of_dense_open
{X Y : Scheme.{u}} (f : Y ⟶ X) [Etale f] [IsSeparated f]
(U W : X.Opens) (hU : Dense (U : Set X))
(a b : W.toScheme ⟶ Y) (ha : a ≫ f = W.ι) (hb : b ≫ f = W.ι)
(hab : X.homOfLE (show U ⊓ W ≤ W from inf_le_right) ≫ a =
X.homOfLE (show U ⊓ W ≤ W from inf_le_right) ≫ b) : a = b := by
let j : (U ⊓ W).toScheme ⟶ W.toScheme := X.homOfLE inf_le_right
have hrange : Set.range j = W.ι ⁻¹' (U : Set X) := by
ext y
constructor
· rintro ⟨⟨z, hz⟩, rfl⟩
change X.homOfLE (show U ⊓ W ≤ W from inf_le_right) ⟨z, hz⟩ ∈ _
rw [Scheme.homOfLE_apply']
exact hz.1
· intro hy
exact ⟨⟨y.1, hy, y.2⟩, X.homOfLE_apply' inf_le_right y.1 ⟨hy, y.2⟩⟩
have hj : IsDominant j := by
constructor
change Dense (Set.range j)
rw [hrange]
exact hU.preimage W.ι.isOpenEmbedding.isOpenMap
let a₀ : Over.mk W.ι ⟶ Over.mk f := Over.homMk a ha
let b₀ : Over.mk W.ι ⟶ Over.mk f := Over.homMk b hb
let i : Over.mk (U ⊓ W).ι ⟶ Over.mk W.ι :=
Over.homMk j (X.homOfLE_ι inf_le_right)
have : FormallyUnramified (Over.mk f).hom := inferInstanceAs (FormallyUnramified f)
have : LocallyOfFiniteType (Over.mk f).hom := inferInstanceAs (LocallyOfFiniteType f)
have : IsSeparated (Over.mk f).hom := inferInstanceAs (IsSeparated f)
have : IsDominant i.left := hj
have h : a₀ = b₀ := Over.hom_ext_of_isDominant_of_unramified a₀ b₀ i
(Over.OverMorphism.ext hab)
exact congrArg (fun z : Over.mk W.ι ⟶ Over.mk f => z.left) h