Module

CurveModel_exists_hom_of_algHom.lean

Nyll.AlgebraicCurves.Models.CurveModel_exists_hom_of_algHom
65 declarations indexed from sourceView source ↗

Curve Model exists hom of alg Hom

Imports8
Imported by3

Declarations

AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.fromSpecStalkOfMem_eq_of_specializes
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Spread
variable {X Y S : Scheme.{u}}
theorem fromSpecStalkOfMem_eq_of_specializes (U : X.Opens) {ξ x : X} (h : ξ ⤳ x)
    (hx : x ∈ U) (hξ : ξ ∈ U) :
    U.fromSpecStalkOfMem ξ hξ =
      Spec.map (X.presheaf.stalkSpecializes h) ≫ U.fromSpecStalkOfMem x hx
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.partialMap_fromSpecStalkOfMem_eq_of_specializes
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Spread
variable {X Y S : Scheme.{u}}
theorem partialMap_fromSpecStalkOfMem_eq_of_specializes (f : X.PartialMap Y) {ξ x : X}
    (h : ξ ⤳ x) (hx : x ∈ f.domain) (hξ : ξ ∈ f.domain) :
    f.fromSpecStalkOfMem hξ =
      Spec.map (X.presheaf.stalkSpecializes h) ≫ f.fromSpecStalkOfMem hx
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.partialMap_fromFunctionField_eq_of_mem
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Spread
variable {X Y S : Scheme.{u}}
theorem partialMap_fromFunctionField_eq_of_mem [IrreducibleSpace X] (f : X.PartialMap Y)
    {x : X} (hx : x ∈ f.domain) :
    f.fromFunctionField =
      Spec.map (X.presheaf.stalkSpecializes (genericPoint_specializes x)) ≫
        f.fromSpecStalkOfMem hx
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.ofHom_algebraMap_stalk_functionField
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Spread
variable {X Y S : Scheme.{u}}
theorem ofHom_algebraMap_stalk_functionField [IrreducibleSpace X] (x : X) :
    CommRingCat.ofHom (algebraMap (X.presheaf.stalk x) X.functionField) =
      X.presheaf.stalkSpecializes ((genericPoint_spec X).specializes trivial)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.mem_domain_of_valuationRing
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Spread
variable {X Y S : Scheme.{u}}
theorem mem_domain_of_valuationRing (sX : X ⟶ S) (sY : Y ⟶ S) [IsIntegral X]
    [LocallyOfFiniteType sY] (hY : ValuativeCriterion.Existence sY) (f : X.PartialMap Y)
    (hf : f.hom ≫ sY = f.domain.ι ≫ sX) (x : X) (hx : ValuationRing (X.presheaf.stalk x)) :
    x ∈ f.toRationalMap.domain
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.valuationRing_of_surjective
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section LocalRings
theorem valuationRing_of_surjective {A B : Type*} [CommRing A] [IsDomain A]
    [ValuationRing A]
    [CommRing B] [IsDomain B] (f : A →+* B) (hf : Function.Surjective f) : ValuationRing B
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.valuationRing_localization_atPrime
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section LocalRings
theorem valuationRing_localization_atPrime {R B : Type*} [CommRing R] [CommRing B]
    [Algebra R B] [IsDomain B] [IsNoetherianRing B] [Algebra.EssFiniteType R B]
    (q : Ideal B) [q.IsPrime] [Algebra.IsUnramifiedAt R q] (hp : (q.under R).IsPrincipal) :
    ValuationRing (Localization.AtPrime q)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.isPrincipalIdealRing_mvPolynomial_fin_one
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section LocalRings
theorem isPrincipalIdealRing_mvPolynomial_fin_one (K : Type*) [Field K] :
    IsPrincipalIdealRing (MvPolynomial (Fin 1) K)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.valuationRing_stalk
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section LocalRings
theorem valuationRing_stalk {K : Type u} [Field K] {C : Scheme.{u}}
    (c : C ⟶ Spec (CommRingCat.of K)) [IsIntegral C] [SmoothOfRelativeDimension 1 c] (x : C) :
    ValuationRing (C.presheaf.stalk x)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.ffHom
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
abbrev ffHom (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F') :
    M.C.functionField →+* M'.C.functionField
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.genericHom
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
abbrev genericHom (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F') :
    Spec M'.C.functionField ⟶ M.C
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.fromSpecStalk_genericPoint_comp_eq
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem fromSpecStalk_genericPoint_comp_eq {C : Scheme.{u}} [IsIntegral C]
    (c : C ⟶ Spec (CommRingCat.of K)) :
    C.fromSpecStalk (genericPoint C) ≫ c =
      Spec.map (CommRingCat.ofHom (baseToFunctionField c))
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.ffHom_comp_baseToFunctionField
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem ffHom_comp_baseToFunctionField (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') :
    (ffHom M M' φ).comp (baseToFunctionField M.toBase) = baseToFunctionField M'.toBase
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.genericHom_comp_toBase
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem genericHom_comp_toBase (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') :
    genericHom M M' φ ≫ M.toBase = M'.C.fromSpecStalk (genericPoint M'.C) ≫ M'.toBase
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.isSeparated_of_over
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem isSeparated_of_over {Y : Scheme.{u}} (g : Y ⟶ Spec (CommRingCat.of K))
    [IsSeparated g] : Y.IsSeparated
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.existence_of_isProper
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem existence_of_isProper {Y T : Scheme.{u}} (g : Y ⟶ T) [IsProper g] :
    ValuativeCriterion.Existence g
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.exists_hom_comp_toBase_eq
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem exists_hom_comp_toBase_eq (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') :
    ∃ π : M'.C ⟶ M.C, π ≫ M.toBase = M'.toBase ∧
      M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.isDominant_fromSpecStalk_genericPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem isDominant_fromSpecStalk_genericPoint (X : Scheme.{u}) [IsIntegral X] :
    IsDominant (X.fromSpecStalk (genericPoint X))
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.apply_genericPoint_eq
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem apply_genericPoint_eq (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F')
    (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) :
    π.base (genericPoint M'.C) = genericPoint M.C
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.stalkMap_comp_stalkSpecializes
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem stalkMap_comp_stalkSpecializes (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) (x : M'.C) :
    π.stalkMap x ≫ M'.C.presheaf.stalkSpecializes (genericPoint_specializes x) =
      M.C.presheaf.stalkSpecializes (genericPoint_specializes (π.base x)) ≫
        CommRingCat.ofHom (ffHom M M' φ)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.algebraMap_stalkMap_apply
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem algebraMap_stalkMap_apply (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) (x : M'.C)
    (a : M.C.presheaf.stalk (π.base x)) :
    algebraMap (M'.C.presheaf.stalk x) M'.C.functionField ((π.stalkMap x).hom a) =
      ffHom M M' φ (algebraMap (M.C.presheaf.stalk (π.base x)) M.C.functionField a)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.valuationRing_stalk'
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem valuationRing_stalk' (M : CurveModel K F) (x : M.C) :
    ValuationRing (M.C.presheaf.stalk x)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.eq_of_fromSpecStalk_comp_eq
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Generic
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem eq_of_fromSpecStalk_comp_eq (M : CurveModel K F) (M' : CurveModel K F')
    {π π' : M'.C ⟶ M.C}
    (h : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π' =
      M'.C.fromSpecStalk (genericPoint M'.C) ≫ π) :
    π' = π
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.stalkRange
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
def stalkRange (M : CurveModel K F) (x : M.C) : Subring F
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.stalkRange_closedPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem stalkRange_closedPoint (M : CurveModel K F) (x : closedPoints M.C) :
    stalkRange M x.1 = (M.placeOfPoint x).toValuationSubring.toSubring
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.mem_stalkRange_closedPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem mem_stalkRange_closedPoint (M : CurveModel K F) (x : closedPoints M.C) (f : F) :
    f ∈ stalkRange M x.1 ↔ f ∈ (M.placeOfPoint x).toValuationSubring
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.stalkRange_genericPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem stalkRange_genericPoint (M : CurveModel K F) :
    stalkRange M (genericPoint M.C) = ⊤
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.map_stalkRange_le
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem map_stalkRange_le (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F')
    (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) (y : M'.C) :
    (stalkRange M (π.base y)).map φ.toRingHom ≤ stalkRange M' y
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.apply_mem_stalkRange
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem apply_mem_stalkRange (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F')
    (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) (y : M'.C) {f : F}
    (hf : f ∈ stalkRange M (π.base y)) : φ f ∈ stalkRange M' y
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.eq_of_specializes
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem eq_of_specializes (M : CurveModel K F) (x₀ : closedPoints M.C) {a b : M.C}
    (ha : a ⤳ x₀.1) (hb : b ⤳ x₀.1) (ha' : a ≠ x₀.1) (hb' : b ≠ x₀.1) : a = b
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.mem_closedPoints_or_eq_genericPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem mem_closedPoints_or_eq_genericPoint (M : CurveModel K F) (x : M.C) :
    x ∈ closedPoints M.C ∨ x = genericPoint M.C
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.mem_restrictAlong_iff
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem mem_restrictAlong_iff (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral)
    (w : Place K F')
    (f : F) : f ∈ (w.restrictAlong φ hφ).toValuationSubring ↔ φ f ∈ w.toValuationSubring
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.apply_ne_genericPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem apply_ne_genericPoint (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F')
    (hφ : φ.toRingHom.IsIntegral) (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (y : closedPoints M'.C) : π.base y.1 ≠ genericPoint M.C
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.apply_mem_closedPoints
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem apply_mem_closedPoints (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F')
    (hφ : φ.toRingHom.IsIntegral) (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (y : closedPoints M'.C) : π.base y.1 ∈ closedPoints M.C
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.ofPrime_eq_top_or_eq
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem ofPrime_eq_top_or_eq {A : ValuationSubring F} [IsDiscreteValuationRing A]
    (P : Ideal A)
    [P.IsPrime] : A.ofPrime P = ⊤ ∨ A.ofPrime P = A
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.place_eq_of_le
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem place_eq_of_le {v v' : Place K F}
    (h : v.toValuationSubring ≤ v'.toValuationSubring) : v = v'
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.exists_mem_closedPoints_placeOfPoint_eq
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem exists_mem_closedPoints_placeOfPoint_eq (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (y : closedPoints M'.C) :
    ∃ h : π.base y.1 ∈ closedPoints M.C,
      M.placeOfPoint ⟨π.base y.1, h⟩ = (M'.placeOfPoint y).restrictAlong φ hφ
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.restrictAlong_fiber_finite
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
variable [CharZero K]
theorem restrictAlong_fiber_finite (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral)
    (hfin : FiniteAlong K φ) (v : Place K F) :
    {w : Place K F' | w.restrictAlong φ hφ = v}.Finite
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.finite_preimage_singleton
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Places
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
variable [CharZero K]
theorem finite_preimage_singleton (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (x : M.C) : (π.base ⁻¹' {x}).Finite
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.isProper
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem isProper (M : CurveModel K F) (M' : CurveModel K F')
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase) : IsProper π
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.locallyOfFiniteType
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem locallyOfFiniteType (M : CurveModel K F) (M' : CurveModel K F')
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase) : LocallyOfFiniteType π
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.locallyQuasiFinite
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem locallyQuasiFinite [CharZero K] (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) :
    LocallyQuasiFinite π
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.isFinite
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem isFinite [CharZero K] (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) :
    IsFinite π
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.stalkMap_injective
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem stalkMap_injective (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) (x : M'.C) :
    Function.Injective (π.stalkMap x).hom
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.flat_of_injective_of_valuationRing
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem flat_of_injective_of_valuationRing {A B : Type u} [CommRing A] [IsDomain A]
    [ValuationRing A] [CommRing B] [IsDomain B] (f : A →+* B) (hf : Function.Injective f) :
    f.Flat
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.flat_stalkMap
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem flat_stalkMap (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) (x : M'.C) :
    (π.stalkMap x).hom.Flat
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.flat
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem flat (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) :
    Flat π
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.locallyOfFinitePresentation_of_locallyOfFiniteType
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem locallyOfFinitePresentation_of_locallyOfFiniteType {X Y : Scheme.{u}} (f : X ⟶ Y)
    [IsLocallyNoetherian Y] [LocallyOfFiniteType f] : LocallyOfFinitePresentation f
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.isLocallyNoetherian
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem isLocallyNoetherian (M : CurveModel K F) : IsLocallyNoetherian M.C
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.locallyOfFinitePresentation
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem locallyOfFinitePresentation (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) :
    LocallyOfFinitePresentation π
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.finrank_eq_finrank_genericPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem finrank_eq_finrank_genericPoint [CharZero K] (M : CurveModel K F)
    (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) (x : M.C) :
    π.finrank x = π.finrank (genericPoint M.C)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.rankAtStalk_bot_eq_finrank
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem rankAtStalk_bot_eq_finrank {A B KA KB : Type u} [CommRing A] [IsDomain A]
    [CommRing B] [IsDomain B] [Algebra A B] [Module.Finite A B] [FaithfulSMul A B]
    [Field KA] [Algebra A KA] [IsFractionRing A KA] [Field KB] [Algebra B KB] [IsFractionRing B KB]
    [Algebra KA KB] [Algebra A KB] [IsScalarTower A B KB] [IsScalarTower A KA KB] :
    Module.rankAtStalk (R := A) B ⊥ = Module.finrank KA KB
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.genericPoint_mem_preimage
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem genericPoint_mem_preimage (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F')
    (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    {U : M.C.Opens} (hη : genericPoint M.C ∈ U) : genericPoint M'.C ∈ π ⁻¹ᵁ U
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.algebraMap_germ
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem algebraMap_germ (M : CurveModel K F) (U : M.C.Opens) (hη : genericPoint M.C ∈ U)
    (x : M.C) (hx : x ∈ U) (b : Γ(M.C, U)) :
    haveI : Nonempty U := ⟨⟨_, hη⟩⟩
    @algebraMap (M.C.presheaf.stalk x) M.C.functionField _ _ (stalkFunctionFieldAlgebra M.C x)
        ((M.C.presheaf.germ U x hx).hom b) =
      algebraMap Γ(M.C, U) M.C.functionField b := by
  have : Nonempty U := ⟨⟨_, hη⟩⟩
  change (M.C.presheaf.stalkSpecializes _).hom ((M.C.presheaf.germ U x hx).hom b) =
    (M.C.presheaf.germ U (genericPoint M.C) _).hom b
  rw [← RingHom.comp_apply, ← CommRingCat.hom_comp, TopCat.Presheaf.germ_stalkSpecializes]
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.algebraMap_app_apply
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem algebraMap_app_apply (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F')
    (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (U : M.C.Opens) (hη : genericPoint M.C ∈ U) (a : Γ(M.C, U)) :
    haveI : Nonempty U := ⟨⟨_, hη⟩⟩
    haveI : Nonempty (π ⁻¹ᵁ U) := ⟨⟨_, genericPoint_mem_preimage M M' φ π hd hη⟩⟩
    algebraMap Γ(M'.C, π ⁻¹ᵁ U) M'.C.functionField ((π.app U).hom a) =
      ffHom M M' φ (algebraMap Γ(M.C, U) M.C.functionField a) := by
  have : Nonempty U := ⟨⟨_, hη⟩⟩
  have hη' : genericPoint M'.C ∈ π ⁻¹ᵁ U := genericPoint_mem_preimage M M' φ π hd hη
  have hx : π.base (genericPoint M'.C) ∈ U := hη'
  have : Nonempty (π ⁻¹ᵁ U) := ⟨⟨_, hη'⟩⟩
  calc algebraMap Γ(M'.C, π ⁻¹ᵁ U) M'.C.functionField ((π.app U).hom a)
      = @algebraMap (M'.C.presheaf.stalk (genericPoint M'.C)) M'.C.functionField _ _
          (stalkFunctionFieldAlgebra M'.C (genericPoint M'.C))
          ((M'.C.presheaf.germ (π ⁻¹ᵁ U) (genericPoint M'.C) hη').hom ((π.app U).hom a)) :=
        (algebraMap_germ M' (π ⁻¹ᵁ U) hη' (genericPoint M'.C) hη' ((π.app U).hom a)).symm
    _ = @algebraMap (M'.C.presheaf.stalk (genericPoint M'.C)) M'.C.functionField _ _
          (stalkFunctionFieldAlgebra M'.C (genericPoint M'.C))
          ((π.stalkMap (genericPoint M'.C)).hom
            ((M.C.presheaf.germ U (π.base (genericPoint M'.C)) hx).hom a)) :=
        congrArg (@algebraMap (M'.C.presheaf.stalk (genericPoint M'.C)) M'.C.functionField
            _ _ (stalkFunctionFieldAlgebra M'.C (genericPoint M'.C)))
          (Scheme.Hom.germ_stalkMap_apply π U (genericPoint M'.C) hx a).symm
    _ = ffHom M M' φ (@algebraMap (M.C.presheaf.stalk (π.base (genericPoint M'.C)))
          M.C.functionField _ _ (stalkFunctionFieldAlgebra M.C (π.base (genericPoint M'.C)))
          ((M.C.presheaf.germ U (π.base (genericPoint M'.C)) hx).hom a)) :=
        algebraMap_stalkMap_apply M M' φ π hd (genericPoint M'.C) _
    _ = ffHom M M' φ (algebraMap Γ(M.C, U) M.C.functionField a) :=
        congrArg (ffHom M M' φ) (algebraMap_germ M U hη (π.base (genericPoint M'.C)) hx a)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.injective_app
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem injective_app (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F')
    (π : M'.C ⟶ M.C)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (U : M.C.Opens) (hη : genericPoint M.C ∈ U) : Function.Injective (π.app U).hom
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.isPullback_fromSpec
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem isPullback_fromSpec (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (U : M.C.Opens) (hU : IsAffineOpen U) (hV : IsAffineOpen (π ⁻¹ᵁ U)) :
    IsPullback hV.fromSpec (Spec.map (π.app U)) π hU.fromSpec
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.finite_app
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem finite_app [CharZero K] (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (U : M.C.Opens) (hU : IsAffineOpen U) : (π.app U).hom.Finite
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.flat_app
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem flat_app [CharZero K] (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (U : M.C.Opens) (hU : IsAffineOpen U) : (π.app U).hom.Flat
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.fromSpec_bot
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem fromSpec_bot (M : CurveModel K F) (U : M.C.Opens) (hU : IsAffineOpen U)
    (hη : genericPoint M.C ∈ U) :
    haveI : Nonempty U := ⟨⟨_, hη⟩⟩
    hU.fromSpec (⊥ : PrimeSpectrum Γ(M.C, U)) = genericPoint M.C := by
  have : Nonempty U := ⟨⟨_, hη⟩⟩
  have h := hU.fromSpec_primeIdealOf ⟨genericPoint M.C, hη⟩
  rw [hU.primeIdealOf_genericPoint, genericPoint_eq_bot_of_affine] at h
  exact h
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.finrank_genericPoint_eq_ringHom_finrank
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem finrank_genericPoint_eq_ringHom_finrank [CharZero K] (M : CurveModel K F)
    (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (U : M.C.Opens) (hU : IsAffineOpen U) (hη : genericPoint M.C ∈ U) :
    haveI : Nonempty U := ⟨⟨_, hη⟩⟩
    π.finrank (genericPoint M.C) = (π.app U).hom.finrank (⊥ : PrimeSpectrum Γ(M.C, U)) := by
  have : Nonempty U := ⟨⟨_, hη⟩⟩
  have := isFinite M M' φ hφ hfin π ha hd
  have := flat M M' φ hφ hfin π ha hd
  have hb : hU.fromSpec (⊥ : PrimeSpectrum Γ(M.C, U)) = genericPoint M.C := fromSpec_bot M U hU hη
  have h1 := Scheme.Hom.finrank_of_isPullback _ _ _ _
    (isPullback_fromSpec M M' φ hφ hfin π ha hd U hU (hU.preimage π)) (⊥ : PrimeSpectrum Γ(M.C, U))
  rw [hb] at h1
  exact h1.symm.trans (congrFun (Scheme.Hom.finrank_SpecMap_eq_finrank
    (finite_app M M' φ hφ hfin π ha hd U hU) (flat_app M M' φ hφ hfin π ha hd U hU)) _)
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.finrank_functionField
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem finrank_functionField (M : CurveModel K F) (M' : CurveModel K F') (φ : F →ₐ[K] F') :
    letI := (ffHom M M' φ).toAlgebra
    Module.finrank M.C.functionField M'.C.functionField = finrankAlong K φ := by
  let := (ffHom M M' φ).toAlgebra
  let := algebraAlong φ
  change Module.finrank M.C.functionField M'.C.functionField = Module.finrank F F'
  refine Algebra.finrank_eq_of_equiv_equiv M.ffEquiv.symm M'.ffEquiv.symm ?_
  ext x
  simp [ffHom, RingHom.algebraMap_toAlgebra]
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.finrank_genericPoint
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem finrank_genericPoint [CharZero K] (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ) :
    π.finrank (genericPoint M.C) = finrankAlong K φ
AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom.HG1A.finrank_eq
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
namespace HG1A
section Rank
variable {K : Type u} [Field K] {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
theorem finrank_eq [CharZero K] (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ)
    (π : M'.C ⟶ M.C) (ha : π ≫ M.toBase = M'.toBase)
    (hd : M'.C.fromSpecStalk (genericPoint M'.C) ≫ π = genericHom M M' φ)
    (x : M.C) : π.finrank x = finrankAlong K φ
AlgebraicCurve.CurveModel.exists_hom_of_algHom
Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Models.Proofs.CurveModel_exists_hom_of_algHom
noncomputable section
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry AlgebraicCurve
universe u
open AlgebraicCurve.CurveModel HG1A in
theorem _root_.AlgebraicCurve.CurveModel.exists_hom_of_algHom {K : Type u} [Field K] [CharZero K]
    {F F' : Type u} [Field F] [Algebra K F] [Field F'] [Algebra K F']
    (M : CurveModel K F) (M' : CurveModel K F')
    (φ : F →ₐ[K] F') (hφ : φ.toRingHom.IsIntegral) (hfin : FiniteAlong K φ) :
    ∃ π : M'.C ⟶ M.C,
      π ≫ M.toBase = M'.toBase ∧
      IsFinite π ∧ Flat π ∧ LocallyOfFinitePresentation π ∧
      (∀ x : M.C, π.finrank x = finrankAlong K φ) ∧
      M'.C.fromSpecStalk (genericPoint M'.C) ≫ π =
        Spec.map (CommRingCat.ofHom
          (M'.ffEquiv.toRingHom.comp (φ.toRingHom.comp M.ffEquiv.symm.toRingHom))) ≫
          M.C.fromSpecStalk (genericPoint M.C) ∧
      (∀ y : closedPoints M'.C, ∃ h : π.base y.1 ∈ closedPoints M.C,
        M.placeOfPoint ⟨π.base y.1, h⟩ = (M'.placeOfPoint y).restrictAlong φ hφ) ∧
      ∀ π' : M'.C ⟶ M.C,
        M'.C.fromSpecStalk (genericPoint M'.C) ≫ π' =
          M'.C.fromSpecStalk (genericPoint M'.C) ≫ π → π' = π