6.22. MappingDegree.Degree
Jacobians.MappingDegree.Degree — source
RegularValueWitness
structure RegularValueWitness {X : Type u} {Y : Type v} (f : X → Y) where
RegularValueWitness.card
Cardinality of the chosen finite fibre, as a Finset.card.
def RegularValueWitness.card {X : Type u} {Y : Type v} {f : X → Y}
(w : RegularValueWitness f) : ℕ
RegularValueWitness.card_eq_ncard
The witness card is the Set.ncard of its fibre.
lemma RegularValueWitness.card_eq_ncard {X : Type u} {Y : Type v} {f : X → Y}
(w : RegularValueWitness f) : w.card = (f ⁻¹' {w.value}).ncard
RegularValueWitnessReg
A regular regular-value witness for f. Strengthens
RegularValueWitness with a chart-pullback-derivative-nonzero certificate:
for every preimage point x ∈ f ⁻¹' {value}, the derivative of the
chart-pullback (chartAt ℂ value) ∘ f ∘ (chartAt ℂ x).symm at
(chartAt ℂ x) x is nonzero.
This is the analytic content of "value is a regular value of f",
inlined into the structure.
structure RegularValueWitnessReg
{X : Type u} [TopologicalSpace X] [ChartedSpace ℂ X]
{Y : Type v} [TopologicalSpace Y] [ChartedSpace ℂ Y]
(f : X → Y) where
card
Cardinality of the chosen finite fibre of a regular witness.
def card (w : RegularValueWitnessReg f) : ℕ
value
The chosen regular value.
def value (w : RegularValueWitnessReg f) : Y
fiber_finite
The fibre over the chosen regular value is finite.
def fiber_finite (w : RegularValueWitnessReg f) :
(f ⁻¹' {w.toWitness.value}).Finite
RegularValueWitness.toRegular
Builder. Promote a plain RegularValueWitness to a regular one,
given a chart-pullback-derivative-nonzero certificate at every preimage
point.
def RegularValueWitness.toRegular
{X : Type u} [TopologicalSpace X] [ChartedSpace ℂ X]
{Y : Type v} [TopologicalSpace Y] [ChartedSpace ℂ Y]
{f : X → Y} (w : RegularValueWitness f)
(h_reg : ∀ x ∈ f ⁻¹' {w.value},
deriv ((chartAt ℂ w.value) ∘ f ∘ (chartAt ℂ x).symm)
((chartAt ℂ x) x) ≠ 0) :
RegularValueWitnessReg f
degreeFiber
The degree of an analytic map f : X → Y between compact Riemann
surfaces, as a fibre cardinality.
-
For constant
f, returns0(matching the convention in challenge item 9 anddegreeIndicator). -
For non-constant
f, returns the cardinality of *some* regular fibre, selected viaClassical.choiceon the existence of aRegularValueWitnessReg(a witness whose chosen value carries a chart-pullback-derivative-nonzero certificate at every preimage; this is the analytic content of "regular value"). If no such regular witness is classically available, falls back to0.
The well-definedness — independence of the chosen witness — is the deep classical input that is not discharged here. See file docstring items (2)–(3) for what is deferred.
ZZ-RegFix correction. Earlier the Classical.choice was on
Nonempty (RegularValueWitness f), which carries no regularity certificate;
Classical.choice could pick a branch-point witness whose fibre cardinality
is strictly smaller than the topological degree. Switching to
RegularValueWitnessReg f bakes the analytic regularity in, so the choice
is always at a regular value. Existence of a regular witness for
non-constant analytic f is discharged unconditionally in
Manifold/RegularValueExistsRegUnconditional.lean.
def degreeFiber {ω : WithTop ℕ∞}
{X : Type u} [TopologicalSpace X] [T2Space X] [CompactSpace X] [ConnectedSpace X]
[ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
{Y : Type v} [TopologicalSpace Y] [T2Space Y] [CompactSpace Y] [ConnectedSpace Y]
[ChartedSpace ℂ Y] [IsManifold 𝓘(ℂ) ω Y]
(f : X → Y) (_hf : ContMDiff 𝓘(ℂ) 𝓘(ℂ) ω f) : ℕ
degreeFiber_eq_witness_card
When a *regular* regular-value witness *does* exist (non-constant case,
Classical mode), the fibre-degree equals the cardinality of *some* such
witness. The particular witness is Classical.choice-selected; independence
of choice is the deep classical input. Because the choice is now over
RegularValueWitnessReg f (whose is_regular is built in), the chosen
witness is always at a regular value.
lemma degreeFiber_eq_witness_card {ω : WithTop ℕ∞}
{X : Type u} [TopologicalSpace X] [T2Space X] [CompactSpace X] [ConnectedSpace X]
[ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
{Y : Type v} [TopologicalSpace Y] [T2Space Y] [CompactSpace Y] [ConnectedSpace Y]
[ChartedSpace ℂ Y] [IsManifold 𝓘(ℂ) ω Y]
(f : X → Y) (hf : ContMDiff 𝓘(ℂ) 𝓘(ℂ) ω f)
(hnc : ¬ IsConstantMap f) (h : Nonempty (RegularValueWitnessReg f)) :
degreeFiber f hf = (Classical.choice h).card
fiber_finite_of_isDiscrete
A fibre of a continuous map into a T2 compact space is closed and hence
compact; if additionally the fibre carries the discrete subspace topology, it
is finite. This is the purely topological half of the identity-theorem
argument.
lemma fiber_finite_of_isDiscrete
{X : Type u} [TopologicalSpace X] [T2Space X] [CompactSpace X]
{Y : Type v} [TopologicalSpace Y] [T2Space Y]
{f : X → Y} (hf_cont : Continuous f) (y : Y)
(h_disc : IsDiscrete (f ⁻¹' {y})) :
(f ⁻¹' {y}).Finite
regular_value_exists_of_some_fiber_finite
Trivial reduction: a RegularValueWitness f is exactly an element of Y
together with finiteness of its fibre. So existence is equivalent to
∃ y, (f ⁻¹' {y}).Finite.
lemma regular_value_exists_of_some_fiber_finite
{X : Type u} {Y : Type v} {f : X → Y}
(h : ∃ y : Y, (f ⁻¹' {y}).Finite) :
Nonempty (RegularValueWitness f)
regular_value_exists_of_fibres_finite
Reduction of regular_value_exists_statement to fibres_finite_statement.
Given that *every* fibre is finite (the conclusion of
fibres_finite_statement), and Y is non-empty (free from
ConnectedSpace Y), pick any y : Y and package it as a witness.
lemma regular_value_exists_of_fibres_finite {ω : WithTop ℕ∞}
{X : Type u} [TopologicalSpace X] [T2Space X] [CompactSpace X] [ConnectedSpace X]
[ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X]
{Y : Type v} [TopologicalSpace Y] [T2Space Y] [CompactSpace Y] [ConnectedSpace Y]
[ChartedSpace ℂ Y] [IsManifold 𝓘(ℂ) ω Y]
(h_fib : ∀ (f : X → Y), ContMDiff 𝓘(ℂ) 𝓘(ℂ) ω f →
¬ Jacobians.Discharge.IsConstantMap f → ∀ y : Y, (f ⁻¹' {y}).Finite) :
∀ (f : X → Y), ContMDiff 𝓘(ℂ) 𝓘(ℂ) ω f →
¬ Jacobians.Discharge.IsConstantMap f → Nonempty (RegularValueWitness f)
FibreCardData
A fibre-cardinality function packaging the data classical
covering-space theory provides. Recorded as a structure so downstream files
have a single named target: discharging
fibre_card_well_defined_statement reduces to producing one of these for
every non-constant analytic f.
Fields:
-
card_of: the fibre-cardinality function onY(or any superset of the regular-value set; we take all ofYfor simplicity, since the value at a critical point is irrelevant for the witness-comparison argument). -
card_of_witness: everyRegularValueWitness whascard_of w.value = w.card. This is a definitional compatibility: it sayscard_ofagrees with the true fibre cardinality at every point that *carries* a witness — exactly the points the well-definedness statement ranges over. -
card_of_constant:card_ofis constant when restricted to the witness values. This is the deep classical content (covering-space + connectedness ofY \ critical-values).
structure FibreCardData {X : Type u} {Y : Type v} (f : X → Y) where
fibre_card_eq_of_locallyConstant_subtype_reg
Sharper reduction (regular form): locally-constant fibre-cardinality on
a preconnected subset. Same shape as the unrestricted
fibre_card_eq_of_locallyConstant_subtype. The user supplies a regular-
value subset R : Set Y and a proof h_supp that every regular witness's
value lies in R.
lemma fibre_card_eq_of_locallyConstant_subtype_reg
{X : Type u} [TopologicalSpace X] [ChartedSpace ℂ X]
{Y : Type v} [TopologicalSpace Y] [ChartedSpace ℂ Y]
{f : X → Y}
{R : Set Y}
(card_of : Y → ℕ)
(h_witness : ∀ w : RegularValueWitness f, card_of w.value = w.card)
(h_supp : ∀ w : RegularValueWitnessReg f, w.toWitness.value ∈ R)
(h_lc_sub : IsLocallyConstant (fun y : R => card_of y.val))
(h_conn_sub : IsPreconnected (Set.univ : Set R))
(w₁ w₂ : RegularValueWitnessReg f) :
w₁.card = w₂.card