Holomorphy criterion for on the double cover
ProvedCurveSymmetry.isHolomorphic_smul_dt_iffLet be an integer and with . Put and let , with the class of , so that ; this is the function field of the double cover of the -line in equation (7) of the note, written with . Let be its module of Kähler differentials, with universal derivation . For a point of the affine curve , that is, with , let be its local ring: the localization of at the maximal ideal of , viewed inside .
For the conjugate parameter, is built in the same way, with coordinate and root , where . Since , the point lies on the curve ; let be its local ring there. Let be the isomorphism of -algebras with and (the chart at ), and let be the induced map, .
A differential is regular at a point if whenever generates the maximal ideal of and with . It is regular at infinity if is regular, in the same sense, at the point of . It is holomorphic if it is regular at every point of and at infinity. The holomorphic differentials form a complex vector subspace .
Then, for every ,
This turns holomorphy of , defined through uniformizers, into membership conditions on the coefficient in explicit local rings, at the finite points and at infinity. It is the criterion through which the differentials , , are shown to be holomorphic, in the computation of the genus in Lemma 4.
Formalization Note: the hypotheses and are Fact instances; is not assumed. Holomorphy is defined through the explicit places above (the points and the place over ), which the formalization shows to be all the places of .
import Definitions.Def_CurveSymmetry_01_RealLoci
import Definitions.Def_CurveSymmetry_02_FamilyBasics
import Definitions.Def_CurveSymmetry_03_IsometriesAndCharts
import Definitions.Def_CurveSymmetry_05_FamilyFunctionField
import Definitions.Def_CurveSymmetry_06_QuadraticRing
import Definitions.Def_CurveSymmetry_07_Places
import Definitions.Def_CurveSymmetry_08_Differentials
import Definitions.Def_CurveSymmetry_09_Genus
import Mathlib.Algebra.MvPolynomial.Nilpotent
import Mathlib.Algebra.MvPolynomial.NoZeroDivisors
import Mathlib.Algebra.MvPolynomial.PDeriv
import Mathlib.Algebra.Polynomial.FieldDivision
import Mathlib.Algebra.Polynomial.Reverse
import Mathlib.Algebra.Polynomial.SpecificDegree
import Mathlib.Analysis.Complex.Isometry
import Mathlib.Analysis.Complex.OperatorNorm
import Mathlib.Analysis.Complex.Polynomial.Basic
import Mathlib.Analysis.Normed.Affine.MazurUlam
import Mathlib.Data.Complex.Basic
import Mathlib.FieldTheory.RatFunc.Basic
import Mathlib.FieldTheory.Separable
import Mathlib.LinearAlgebra.Basis.Basic
import Mathlib.LinearAlgebra.FiniteDimensional.Defs
import Mathlib.LinearAlgebra.TensorProduct.Basis
import Mathlib.RingTheory.AdjoinRoot
import Mathlib.RingTheory.DedekindDomain.Dvr
import Mathlib.RingTheory.DiscreteValuationRing.TFAE
import Mathlib.RingTheory.Etale.Field
import Mathlib.RingTheory.Etale.Kaehler
import Mathlib.RingTheory.Kaehler.Basic
import Mathlib.RingTheory.Kaehler.Polynomial
import Mathlib.RingTheory.LocalRing.MaximalIdeal.Basic
import Mathlib.RingTheory.LocalRing.Module
import Mathlib.RingTheory.Localization.AsSubring
import Mathlib.RingTheory.MvPolynomial.Homogeneous
import Mathlib.RingTheory.MvPolynomial.IrreducibleQuadratic
import Mathlib.RingTheory.Nakayama
import Mathlib.RingTheory.Polynomial.Eisenstein.Criterion
import Mathlib.RingTheory.Polynomial.GaussLemma
import Mathlib.RingTheory.RootsOfUnity.Complex
import Mathlib.RingTheory.RootsOfUnity.PrimitiveRoots
import Mathlib.RingTheory.Valuation.ValuationSubring
import Mathlib.Tactic
open CurveSymmetry
set_option autoImplicit false
open Polynomial
variable {m : ℕ} {α : ℂ} [hm : Fact (0 < m)] [ha : Fact (α ≠ star α)]theorem CurveSymmetry.isHolomorphic_smul_dt_iff (f : QuadField (familyH m α)) :
IsHolomorphic (f • KaehlerDifferential.D ℂ (QuadField (familyH m α))
(quadT (familyH m α))) ↔
(∀ (c d : ℂ) (hd : d ^ 2 = (familyH m α).eval c),
((familyH m α).eval c ≠ 0 → f ∈ quadLocalRing (familyH m α) c d hd) ∧
((familyH m α).eval c = 0 →
f * AdjoinRoot.root (quadRat (familyH m α)) ∈
quadLocalRing (familyH m α) c d hd)) ∧
familyInfinityMap m α f *
(AdjoinRoot.root (quadRat (familyH m (star α))) ^ 3)⁻¹ ∈
quadLocalRing (familyH m (star α)) 0 0 (familyH_star_zero_point m α) := by sorry