A machine-checked solution to the Jacobians challenge

20.6. CanonicalForms.FormRemovableSingularity🔗

Jacobians.CanonicalForms.FormRemovableSingularitysource

contMDiffOn_scalar_of_pullback_analyticOn

Scalar smoothness from chart-pullback analyticity on an open subset S of the chart source. If the chart pullback is analytic on chart x₀ '' S, then the scalar y ↦ L y (e.symmL ℂ y 1) is ContMDiffOn ω on S. The inverse of localRep_analyticOn_chartTarget; the argument is Montel.contMDiffOn_limit_inner with S in place of innerChartOpen.

theorem contMDiffOn_scalar_of_pullback_analyticOn {X : Type*} [TopologicalSpace X]
    [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
        (L : (y : X) → TangentSpace 𝓘(ℂ, ℂ) y →L[ℂ] (Bundle.Trivial X ℂ) y) (x₀ : X)
    {S : Set X} (hSopen : IsOpen S) (hSsub : S ⊆ (chartAt ℂ x₀).source)
    (hAn : letI e := trivializationAt ℂ (TangentSpace 𝓘(ℂ, ℂ) (M := X)) x₀
      AnalyticOn ℂ
        (fun z : ℂ => L ((chartAt ℂ x₀).symm z) (e.symmL ℂ ((chartAt ℂ x₀).symm z) 1))
        ((chartAt ℂ x₀) '' S)) :
    letI e

contMDiffOn_totalSpaceMk_of_pullback_analyticOn

Section smoothness from chart-pullback analyticity on an open subset S of the chart source. The bundle-section y ↦ (y, L y) is ContMDiffOn ω on S. This is Montel.contMDiffOn_totalSpaceMk_L_inner re-derived on an arbitrary open S ⊆ (chart x₀).source.

theorem contMDiffOn_totalSpaceMk_of_pullback_analyticOn {X : Type*} [TopologicalSpace X]
    [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
        (L : (y : X) → TangentSpace 𝓘(ℂ, ℂ) y →L[ℂ] (Bundle.Trivial X ℂ) y) (x₀ : X)
    {S : Set X} (hSopen : IsOpen S) (hSsub : S ⊆ (chartAt ℂ x₀).source)
    (hAn : letI e := trivializationAt ℂ (TangentSpace 𝓘(ℂ, ℂ) (M := X)) x₀
      AnalyticOn ℂ
        (fun z : ℂ => L ((chartAt ℂ x₀).symm z) (e.symmL ℂ ((chartAt ℂ x₀).symm z) 1))
        ((chartAt ℂ x₀) '' S)) :
    ContMDiffOn 𝓘(ℂ, ℂ) (𝓘(ℂ, ℂ).prod 𝓘(ℂ, ℂ →L[ℂ] ℂ)) ω
      (fun y : X => Bundle.TotalSpace.mk' (ℂ →L[ℂ] ℂ)
        (E := fun x : X => TangentSpace 𝓘(ℂ, ℂ) x →L[ℂ] (Bundle.Trivial X ℂ) x)
        y (L y))
      S

holOfLocalRepAnalyticAt

The section-assembly lemma, local form. A bundle section L whose chart pullback in *each point's own chart* is AnalyticAt the chart centre is ContMDiff, hence a HolomorphicOneForms X. Smoothness at y is read in y's own chart: AnalyticAt gives analyticity on an open neighbourhood of chart y y, whose chart-preimage is an open neighbourhood of y.

noncomputable def holOfLocalRepAnalyticAt
    (L : (y : X) → TangentSpace 𝓘(ℂ, ℂ) y →L[ℂ] (Bundle.Trivial X ℂ) y)
    (hAn : ∀ x₀ : X,
      letI e := trivializationAt ℂ (TangentSpace 𝓘(ℂ, ℂ) (M := X)) x₀
      AnalyticAt ℂ
        (fun z : ℂ => L ((chartAt ℂ x₀).symm z) (e.symmL ℂ ((chartAt ℂ x₀).symm z) 1))
        ((chartAt ℂ x₀) x₀)) :
    HolomorphicOneForms X where

formCoeff_sub

formCoeff subtracts (combining formCoeff_add and formCoeff_neg).

theorem formCoeff_sub {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
    (σ τ : ∀ x, FormFiber X x) (x : X) :
    formCoeff (σ - τ) x = formCoeff σ x - formCoeff τ x

frameCovector

The frame covector at y from the canonical tangent trivialisation: φ_y : T_y X →L[ℂ] ℂ.

noncomputable def frameCovector (y : X) : TangentSpace 𝓘(ℂ, ℂ) y →L[ℂ] ℂ

frameCovector_symmL_self

φ_y (e_y.symmL ℂ y 1) = 1: the frame covector evaluated on the canonical frame vector.

theorem frameCovector_symmL_self {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X]
    (y : X) :
    letI e

repVal

The repaired chart value of α at y: the normal-form value of the chart coefficient at the chart centre — the removable-singularity limit lim_{z → chart y y} formCoeff α.toFun y (z).

noncomputable def repVal (α : MeromorphicOneForm X) (y : X) : ℂ

analyticAt_repairedCoeff

The repaired chart coefficient toMeromorphicNFAt (formCoeff α.toFun y) (chart y y) is AnalyticAt (chart y y) when α ∈ omegaD 0 (order ≥ 0 ⟹ removable singularity). Reuses the repo's exists_analyticAt_eventuallyEq_of_meromorphicOrderAt_nonneg.

theorem analyticAt_repairedCoeff {α : MeromorphicOneForm X} (hα : α ∈ omegaD (X := X) 0) (y : X) :
    AnalyticAt ℂ (toMeromorphicNFAt (formCoeff α.toFun y) ((chartAt ℂ y) y)) ((chartAt ℂ y) y)

rawLocalRep

The bare chart representative of a section σ in the x₀-trivialisation.

noncomputable def rawLocalRep (σ : ∀ x, FormFiber X x) (x₀ y : X) : ℂ

formCoeff_eq_rawLocalRep

theorem formCoeff_eq_rawLocalRep {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X]
    (σ : ∀ x, FormFiber X x) (x : X) (z : ℂ) :
    formCoeff σ x z = rawLocalRep σ x ((chartAt ℂ x).symm z)

rawLocalRep_self_eq_formCoeff

rawLocalRep σ y y = formCoeff σ y (chart y y): the chart-centre value.

theorem rawLocalRep_self_eq_formCoeff {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X]
    (σ : ∀ x, FormFiber X x) (y : X) :
    rawLocalRep σ y y = formCoeff σ y ((chartAt ℂ y) y)

rawLocalRep_chart_transition

Chart-transition for rawLocalRep (raw analogue of Montel.localRep_chart_transition): rawLocalRep σ x₀' y = chartTransitionFactor x₀ x₀' y · rawLocalRep σ x₀ y for y in both base sets. The proof reuses the trivialisation identity symmL_apply_chartTransitionFactor.

theorem rawLocalRep_chart_transition {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X]
    (σ : ∀ x, FormFiber X x) (x₀ x₀' y : X)
    (hy₀' : y ∈ (trivializationAt ℂ (TangentSpace 𝓘(ℂ, ℂ) (M := X)) x₀').baseSet)
    (hy₀ : y ∈ (trivializationAt ℂ (TangentSpace 𝓘(ℂ, ℂ) (M := X)) x₀).baseSet) :
    rawLocalRep σ x₀' y = chartTransitionFactor (X := X) x₀ x₀' y * rawLocalRep σ x₀ y

section_eq_rawLocalRep_smul_frame

Self-frame reconstruction (raw analogue of Montel.toFun_eq_localRep_smul at x₀ = y): σ y = rawLocalRep σ y y • φ_y where φ_y = frameCovector y. In particular σ y (e_{x₀}.symmL ℂ y 1) = rawLocalRep σ y y · φ_y (e_{x₀}.symmL ℂ y 1).

theorem section_eq_rawLocalRep_smul_frame {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X]
    (σ : ∀ x, FormFiber X x) (y : X) :
    σ y = (rawLocalRep σ y y) • frameCovector y

eventually_analyticAt_formCoeff

formCoeff α.toFun x₀ is analytic at chart x₀ w, for w in a punctured neighbourhood of x₀ (pull MeromorphicAt.eventually_analyticAt back through the chart).

theorem eventually_analyticAt_formCoeff (α : MeromorphicOneForm X) (x₀ : X) :
    ∀ᶠ w in 𝓝[≠] x₀, AnalyticAt ℂ (formCoeff α.toFun x₀) ((chartAt ℂ x₀) w)

eventually_repVal_eq

The junk-free key step. For w in a punctured neighbourhood of x₀, the repaired value at w equals the actual chart-centre value: repVal α w = rawLocalRep α.toFun w w. Hence α.toFun carries no removable-singularity junk away from chart centres.

theorem eventually_repVal_eq (α : MeromorphicOneForm X) (x₀ : X) :
    ∀ᶠ w in 𝓝[≠] x₀, repVal α w = rawLocalRep α.toFun w w

repairedSection

The repaired section of an order-≥ 0 meromorphic 1-form: the per-point normal-form value times the canonical frame covector. A bare cotangent-bundle section.

noncomputable def repairedSection (α : MeromorphicOneForm X) : ∀ y, FormFiber X y

rawLocalRep_repairedSection_self

theorem rawLocalRep_repairedSection_self (α : MeromorphicOneForm X) (y : X) :
    rawLocalRep (repairedSection α) y y = repVal α y

formCoeff_repairedSection_eventuallyEq

The repaired section germ-matches α off every centre. In chart x₀, the chart coefficient of repairedSection α agrees on a punctured neighbourhood of the centre with formCoeff α.toFun x₀ (the junk-free key step + self-frame reconstruction). This drives both the analyticity of the repaired section and the germ-equality holToMero (repaired) ≡ α.

theorem formCoeff_repairedSection_eventuallyEq (α : MeromorphicOneForm X) (x₀ : X) :
    formCoeff (repairedSection α) x₀ =ᶠ[𝓝[≠] ((chartAt ℂ x₀) x₀)] formCoeff α.toFun x₀

analyticAt_pullback_repairedSection

The repaired section's chart pullback is analytic at every centre. In chart x₀, the pullback agrees off the centre with formCoeff α.toFun x₀ (the junk-free hypothesis + self-frame), and at the centre takes the normal-form value, so it equals the analytic normal-form repair of formCoeff α.toFun x₀ near the centre.

theorem analyticAt_pullback_repairedSection {α : MeromorphicOneForm X}
    (hα : α ∈ omegaD (X := X) 0) (x₀ : X) :
    letI e

repairedHOF

The repaired holomorphic 1-form of an order-≥ 0 meromorphic 1-form.

noncomputable def repairedHOF {α : MeromorphicOneForm X} (hα : α ∈ omegaD (X := X) 0) :
    HolomorphicOneForms X

repairedHOF_toFun

@[simp] theorem repairedHOF_toFun {α : MeromorphicOneForm X} (hα : α ∈ omegaD (X := X) 0) :
    (repairedHOF hα).toFun = repairedSection α

exists_holomorphic_germEq_of_mem_omegaD_zero

Every order-≥ 0 meromorphic 1-form is holomorphic modulo germ-junk. There is a holomorphic 1-form β (the repaired section) with holToMero β − α germ-zero everywhere (order at every centre): their chart coefficients agree on a punctured neighbourhood of each centre. Packaging it as an existence keeps the large repairedHOF proof term out of downstream goals.

theorem exists_holomorphic_germEq_of_mem_omegaD_zero {α : MeromorphicOneForm X}
    (hα : α ∈ omegaD (X := X) 0) :
    ∃ β : HolomorphicOneForms X, holToMero β - α ∈ formGermZeroSubmodule (X := X)

holToOmega0Module_surjective

holToOmega0Module is surjective: every class [α] ∈ omegaDModule 0 is the image of a holomorphic form (the removable-singularity repair, which differs from α by germ-zero junk).

theorem holToOmega0Module_surjective {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
    [ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
    :
    Function.Surjective (holToOmega0Module (X := X))

holOmega0Equiv

Ω_0 ≅ HolomorphicOneForms (Forster §17.4 at D = 0): the holomorphic-to-meromorphic-1-form map is a linear isomorphism HolomorphicOneForms X ≃ₗ[ℂ] omegaDModule 0 (injective from holToOmega0Module_injective, surjective from the removable-singularity repair).

noncomputable def holOmega0Equiv : HolomorphicOneForms X ≃ₗ[ℂ] omegaDModule (X := X) 0

omegaDim_zero_eq_genus

omegaDim 0 = genus X (Forster §17.4 at D = 0), UNCONDITIONAL: the isomorphism Ω_0 ≅ HolomorphicOneForms X preserves finrank, and genus X = finrank ℂ (HolomorphicOneForms X) by definition.

theorem omegaDim_zero_eq_genus {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
    [ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
    : omegaDim (X := X) 0 = genus X

omegaDim_zero_le_genus

The reverse bound omegaDim 0 ≤ genus X (the removable-singularity direction).

theorem omegaDim_zero_le_genus {X : Type*} [TopologicalSpace X] [T2Space X] [CompactSpace X]
    [ConnectedSpace X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
    : omegaDim (X := X) 0 ≤ genus X

CanonicalForm17Data.hKgenus_unconditional

Unconditional hKgenus for a given §17.4 datum: lDim data.K = genus X, with the two removable-singularity inputs (Ω_0 finite-dimensional and omegaDim 0 ≤ genus X) now discharged.

theorem CanonicalForm17Data.hKgenus_unconditional (data : CanonicalForm17Data X) :
    lDim (X := X) data.K = genus X