Module

IntegralSectionNormalCrossings.lean

Nyll.ShimizuYamaguchi26BranchedCoverings.Geometry.IntegralSectionNormalCrossings
6 declarations indexed from sourceView source ↗

Strict normal crossings for integral sections

Consider the product of the actual kernel ideal sheaves of the infinity section and a primitive integral section (u,v). At the point (p,w), the stalk of this product is generated by w*(v-u*w).

When v is nonzero and v_p(v)=1, these two factors form the concrete regular system of parameters constructed in IntegerSectionParameters. The ambient stalk is Noetherian by its polynomial localization model, so this system also proves that the ambient local ring is regular. Together these facts give strict normal crossings for the actual ideal-sheaf product at this point.

The integral Bezout coordinate isomorphism carries the actual ideals of any two distinct rational sections to this normalized pair. Finite-etale pullback transports strict normal crossings back to the original point of the second section over p. Thus valuation one of the original determinant gives strict normal crossings there. A single section uses the first member of the same parameter system, supplied concretely by the auxiliary primitive pair (1,p).

These supply the one- and two-section implications toward Lemma 2.3 of Ryoji Shimizu and Naganori Yamaguchi, On branched coverings of the projective line over the integers. The criterion for a finite family, its converse, and the comparison with base change to ℤ_p are separate assertions.

Imports39
Imported by2

Declarations

ShimizuYamaguchi26BranchedCoverings.infinitySection_stalkIdeal_eq
Source context 4 commands

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

noncomputable section
open AlgebraicGeometry CategoryTheory
open scoped Polynomial
namespace ShimizuYamaguchi26BranchedCoverings
theorem infinitySection_stalkIdeal_eq
    (p : ℕ) [Fact p.Prime] :
    (integralSection 1 0 1 0 (by decide)).ker.stalkIdeal
      (integerProjectiveInfinityPoint p) =
      Ideal.span ({infinityChartGermAt ℤ (integerInfinityChartPoint p) Polynomial.X} :
        Set (IntegerProjectiveInfinityLocalRing p)) := by
  let q : Spec (CommRingCat.of ℤ[X]) := integerInfinityChartPoint p
  let g : ℤ[X] →+* IntegerProjectiveInfinityLocalRing p := infinityChartGermAt ℤ q
  have hstalk : (integralSection 1 0 1 0 (by decide)).ker.stalkIdeal
      (integerProjectiveInfinityPoint p) = (infinitySectionIdeal 1 0).map g :=
    integralSection_stalkIdeal_eq 1 0 1 0 (by decide) q
  have hspan : (infinitySectionIdeal 1 0).map g = Ideal.span {g Polynomial.X} := by
    simp only [infinitySectionIdeal, map_zero, map_one, one_mul, zero_sub,
      Ideal.span_singleton_neg, Ideal.map_span, Set.image_singleton]
  exact hstalk.trans hspan
ShimizuYamaguchi26BranchedCoverings.integralSectionPair_isStrictNormalCrossingsAt_infinity

The product of the actual infinity-section ideal and the actual ideal of a primitive integral section has strict normal crossings at (p,w) when its nonzero denominator has valuation one.

Source context 4 commands

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

noncomputable section
open AlgebraicGeometry CategoryTheory
open scoped Polynomial
namespace ShimizuYamaguchi26BranchedCoverings
theorem integralSectionPair_isStrictNormalCrossingsAt_infinity
    (p : ℕ) [Fact p.Prime] (u v a b : ℤ) (hab : a * u + b * v = 1)
    (hv : v ≠ 0) (hval : padicValInt p v = 1) :
    ((integralSection 1 0 1 0 (by decide)).ker *
      (integralSection u v a b hab).ker).IsStrictNormalCrossingsAt
        (integerProjectiveInfinityPoint p) := by
  let S : Type := IntegerProjectiveInfinityLocalRing p
  let q : Spec (CommRingCat.of ℤ[X]) := integerInfinityChartPoint p
  let e : S ≃+* IntegerInfinityChartLocalRing p := infinityChartStalkEquiv ℤ q
  have : IsNoetherianRing S :=
    isNoetherianRing_of_ringEquiv (IntegerInfinityChartLocalRing p) e.symm
  let g : ℤ[X] →+* S := infinityChartGermAt ℤ q
  let t : Fin 2 → S :=
    ![g Polynomial.X, g (Polynomial.C v - Polynomial.C u * Polynomial.X)]
  have hparameters : Scheme.IsRegularSystemOfParameters t :=
    integerProjectiveInfinitySection_isRegularSystemOfParameters p u v hv hval
  have hregular : (ProjectiveLine ℤ).IsRegularAt (integerProjectiveInfinityPoint p) :=
    EtaleFundamentalGroups.Kummer.isRegularLocalRing_of_regularSystem
      (List.ofFn t) hparameters.1 hparameters.2
  have hinfinity : (integralSection 1 0 1 0 (by decide)).ker.stalkIdeal
      (integerProjectiveInfinityPoint p) = Ideal.span {g Polynomial.X} :=
    infinitySection_stalkIdeal_eq p
  have hsection : (integralSection u v a b hab).ker.stalkIdeal
      (integerProjectiveInfinityPoint p) =
      Ideal.span {g (Polynomial.C v - Polynomial.C u * Polynomial.X)} := by
    have hstalk : (integralSection u v a b hab).ker.stalkIdeal
        (integerProjectiveInfinityPoint p) = (infinitySectionIdeal u v).map g :=
      integralSection_stalkIdeal_eq u v a b hab q
    have hspan : (infinitySectionIdeal u v).map g =
        Ideal.span {g (Polynomial.C v - Polynomial.C u * Polynomial.X)} := by
      rw [infinitySectionIdeal, Ideal.map_span, Set.image_singleton]
    exact hstalk.trans hspan
  have hproduct : Scheme.initialParameterProduct t 2 (Nat.le_refl 2) =
      g Polynomial.X * g (Polynomial.C v - Polynomial.C u * Polynomial.X) := by
    simp only [Scheme.initialParameterProduct, Fin.castLE_rfl, id_eq,
      Fin.prod_univ_two, t, Matrix.cons_val_zero, Matrix.cons_val_one]
  refine ⟨hregular, 2, 2, t, by decide, Nat.le_refl 2, hparameters, ?_⟩
  rw [Scheme.IdealSheafData.stalkIdeal_mul, hinfinity, hsection,
    Ideal.span_singleton_mul_span_singleton, hproduct]
ShimizuYamaguchi26BranchedCoverings.infinitySection_isStrictNormalCrossingsAt

The actual infinity section has strict normal crossings at its point above each prime, with its equation as the first regular parameter.

Source context 4 commands

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

noncomputable section
open AlgebraicGeometry CategoryTheory
open scoped Polynomial
namespace ShimizuYamaguchi26BranchedCoverings
theorem infinitySection_isStrictNormalCrossingsAt
    (p : ℕ) [hp : Fact p.Prime] :
    (integralSection 1 0 1 0 (by decide)).ker.IsStrictNormalCrossingsAt
      (integerProjectiveInfinityPoint p) := by
  have hp0 : (p : ℤ) ≠ 0 := Int.natCast_ne_zero.mpr hp.out.ne_zero
  let S : Type := IntegerProjectiveInfinityLocalRing p
  let q : Spec (CommRingCat.of ℤ[X]) := integerInfinityChartPoint p
  let g : ℤ[X] →+* S := infinityChartGermAt ℤ q
  let t : Fin 2 → S :=
    ![g Polynomial.X, g (Polynomial.C (p : ℤ) - Polynomial.C 1 * Polynomial.X)]
  have hparameters : Scheme.IsRegularSystemOfParameters t :=
    integerProjectiveInfinitySection_isRegularSystemOfParameters p 1 p hp0 padicValInt_self
  have hregular : (ProjectiveLine ℤ).IsRegularAt (integerProjectiveInfinityPoint p) :=
    (integralSectionPair_isStrictNormalCrossingsAt_infinity p 1 p 1 0
      (by simp only [one_mul, zero_mul, add_zero]) hp0 padicValInt_self).1
  have hproduct : Scheme.initialParameterProduct t 1 (by decide) = g Polynomial.X := by
    simp only [Scheme.initialParameterProduct, Fin.prod_univ_one,
      Fin.castLE_zero, t, Matrix.cons_val_zero]
  have hinfinity : (integralSection 1 0 1 0 (by decide)).ker.stalkIdeal
      (integerProjectiveInfinityPoint p) = Ideal.span {g Polynomial.X} :=
    infinitySection_stalkIdeal_eq p
  refine ⟨hregular, 2, 1, t, by decide, by decide, hparameters, ?_⟩
  exact hinfinity.trans (congrArg (fun z : S => Ideal.span {z}) hproduct.symm)
ShimizuYamaguchi26BranchedCoverings.rationalSection_isStrictNormalCrossingsAt

A rational section has strict normal crossings at its actual point over every prime, without a hypothesis on any other section.

Source context 4 commands

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

noncomputable section
open AlgebraicGeometry CategoryTheory
open scoped Polynomial
namespace ShimizuYamaguchi26BranchedCoverings
theorem rationalSection_isStrictNormalCrossingsAt
    (p : ℕ) [Fact p.Prime] (a : Projectivization ℚ (ℚ × ℚ)) :
    (rationalSection a).ker.IsStrictNormalCrossingsAt
      (rationalSection a (integerPrimePoint p))
ShimizuYamaguchi26BranchedCoverings.integralSectionPair_isStrictNormalCrossingsAt_coordinateChange
Source context 4 commands

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

noncomputable section
open AlgebraicGeometry CategoryTheory
open scoped Polynomial
namespace ShimizuYamaguchi26BranchedCoverings
theorem integralSectionPair_isStrictNormalCrossingsAt_coordinateChange
    (p : ℕ) [Fact p.Prime] (u v c d u' v' c' d' : ℤ)
    (hcd : c * u + d * v = 1) (hcd' : c' * u' + d' * v' = 1)
    (hdet : coordinateDeterminant u' v' u v ≠ 0)
    (hval : padicValInt p (coordinateDeterminant u' v' u v) = 1) :
    ((integralSection u v c d hcd).ker *
      (integralSection u' v' c' d' hcd').ker).IsStrictNormalCrossingsAt
        ((integralCoordinateChange u' v' c' d' hcd').inv
          (integerProjectiveInfinityPoint p))
ShimizuYamaguchi26BranchedCoverings.rationalSectionPair_isStrictNormalCrossingsAt

For two distinct rational points, valuation one of Delta makes the product of their actual section ideals strictly normal crossing at the second section's point above p.

Source context 4 commands

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

noncomputable section
open AlgebraicGeometry CategoryTheory
open scoped Polynomial
namespace ShimizuYamaguchi26BranchedCoverings
theorem rationalSectionPair_isStrictNormalCrossingsAt
    (p : ℕ) [Fact p.Prime] (a b : Projectivization ℚ (ℚ × ℚ)) (hab : a ≠ b)
    (hval : padicValInt p (rationalPointDelta a b) = 1) :
    ((rationalSection a).ker * (rationalSection b).ker).IsStrictNormalCrossingsAt
      (rationalSection b (integerPrimePoint p))