MForm X: meromorphic 1-forms as germ classes of chart-coefficient families (D1/D2/D4–D6) #
Unit: canonical-forms (docs/design/canonical-forms.md, representational revision). This file is
the CC3-pattern fix for the raw-representation flaw documented in the previous unit root: raw
MFormData equality is too fine (meromorphic coefficients carry junk at poles, so
"ord = ⊤ everywhere" does NOT force raw equality with 0). Exactly as ℳ X quotients raw
meromorphic functions by codiscrete agreement (Jacobian/Meromorphic/GermSpace.lean), we set
MFormData.Eqv θ η := ∀ x, θ.coeffAt x =ᶠ[𝓝[≠] (chartAt ℂ x x)] η.coeffAt x— germ agreement at every preferred-chart center. (Bycompat-transport this is equivalent to codiscrete agreement on every chart target; the center-germ form is chosen because every reading map of the unit —ord,resAt,laurentCoeffAt,divisor— is a germ-at-the-center functional, so descent is a one-line congruence.)MForm X := QuotientofMFormData XbyEqv, withAddCommGroup/Module ℂdescended pointwise from the raw instances.MForm.ord/resAt/laurentCoeffAt/divisor/degree: the D4/D6 exports, lifted.- D5, the global zero-dichotomy
MForm.eq_zero_or_forall_ord_ne_top: on the quotient this is the clopen argument ofJacobian/Meromorphic/CodiscreteBridge.leanrun on{x | ord = ⊤}(open byeventually_ord_eq_top, closed because its complement is open byeventually_ord_eq_zero), and theS = univ ⇒ θ = 0step — FALSE for raw families — is now the literal definition of the quotient relation viaord_eq_top_iff. Corollary:MForm.ord_ne_top.
Codiscrete/germ agreement of raw chart-coefficient families: the preferred-chart coefficients agree on a punctured neighborhood of every chart center (CC3 pattern; see the module docstring for why this is the right granularity).
Equations
Instances For
Equations
- RS.MFormData.instSetoid = { r := RS.MFormData.Eqv, iseqv := ⋯ }
D1 (revised): a meromorphic 1-form on X — the quotient of raw chart-coefficient families
(MFormData X) by codiscrete/germ agreement, the same CC3 quotient pattern as ℳ X.
Equations
Instances For
The class of a raw chart-coefficient family.
Equations
- RS.MForm.mk θ = ⟦θ⟧
Instances For
ℂ-algebra structure, descended pointwise #
Equations
- RS.MForm.instZero = { zero := RS.MForm.mk 0 }
Equations
- RS.MForm.instAdd = { add := Quotient.map₂ (fun (x1 x2 : RS.MFormData X) => x1 + x2) ⋯ }
Equations
- RS.MForm.instNeg = { neg := Quotient.map (fun (x : RS.MFormData X) => -x) ⋯ }
Equations
- RS.MForm.instSub = { sub := Quotient.map₂ (fun (x1 x2 : RS.MFormData X) => x1 - x2) ⋯ }
Equations
- RS.MForm.instSMulComplex = { smul := fun (c : ℂ) => Quotient.map (fun (x : RS.MFormData X) => c • x) ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- RS.MForm.instModuleComplex = { toSMul := RS.MForm.instSMulComplex, mul_smul := ⋯, one_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
D3 on classes: assemble a meromorphic 1-form from compatible covering-chart-family data
(MFormCoeffData, mirrors Form1CoeffData); the class of the raw assembly.
Equations
Instances For
ord, resAt, laurentCoeffAt (D4), lifted #
D4: the order of a meromorphic 1-form at x (read via the preferred chart at x; descends
because meromorphicOrderAt is a germ functional).
Equations
- Θ.ord x = Quotient.liftOn Θ (fun (θ : RS.MFormData X) => θ.ord x) ⋯
Instances For
D4: the residue of a meromorphic 1-form at x.
Equations
- Θ.resAt x = Quotient.liftOn Θ (fun (θ : RS.MFormData X) => θ.resAt x) ⋯
Instances For
The k-th Laurent coefficient of a meromorphic 1-form at x, read in the preferred chart
(consumed by MLFormData.Realizes, D13).
Equations
- Θ.laurentCoeffAt x k = Quotient.liftOn Θ (fun (θ : RS.MFormData X) => RS.laurentCoeffAt (θ.coeffAt x) (↑(chartAt ℂ x) x) k) ⋯
Instances For
Order propagation and the divisor (D6), lifted #
D6: the divisor of a meromorphic 1-form (lifted from MFormData.divisor; well-defined since
ord is).
Equations
Instances For
D6: the degree of the divisor.
Equations
Instances For
D5: the global zero-dichotomy #
The step that is FALSE for raw families — "ord = ⊤ everywhere forces the form to be zero" — is
the literal definition of the quotient relation. The clopen skeleton is
MeromorphicOnX.eventuallyEq_zero_or_forall_ordAtX_ne_top's
(Jacobian/Meromorphic/CodiscreteBridge.lean); closedness of {ord = ⊤} is here even easier:
its complement is open directly by eventually_ord_eq_zero.
D5: on a connected surface, a meromorphic 1-form is zero, or its order is finite everywhere.
A nonzero meromorphic 1-form has finite order everywhere (D5 corollary; the input D8/D10/D11 consume).
The zero class is characterized by ord = ⊤ everywhere (junk-free, unlike the raw layer).