A metric on projectivization: the projection embedding #
Category: 1-Mathlib (CSD-free; staged as a Mathlib-upstream candidate — there is no
MetricSpace on Projectivization anywhere in Mathlib today, only the staged topology).
Over an RCLike field with an inner product, each projective point p : ℙ K V determines the
rank-one orthogonal projection onto its line, rankOneProj v = (‖v‖²)⁻¹ • ⟪v, ·⟫ • v —
scale-invariant in v, so it descends to toProjCLM : ℙ K V → (V →L[K] V). This map is
injective and continuous off the (staged) quotient topology; since ℙ K V is compact
(finite dimension) and the operator space is Hausdorff, it is a closed embedding, and the
operator-norm distance pulls back to a MetricSpace instance on ℙ K V whose topology is
definitionally the existing quotient topology (Topology.IsEmbedding.comapMetricSpace,
which replaceTopologys). The distance is
dist p q = ‖toProjCLM p − toProjCLM q‖ (Projectivization.dist_eq),
the gap metric between the lines — the standard operator-theoretic metrisation of the Fubini–Study topology.
Main declarations #
Projectivization.rankOneProj— the rank-one projection onto a vector's line, withrankOneProj_smul(scale invariance) andrankOneProj_self_apply(idempotence anchor).Projectivization.toProjCLM— the descended projection map onℙ K V;toProjCLM_mk,continuous_toProjCLM,injective_toProjCLM.Projectivization.isClosedEmbedding_toProjCLM— compact-to-Hausdorff closed embedding.Projectivization.instMetricSpace— the pulled-back metric, topology-compatible by construction;Projectivization.dist_eq— the distance formula.
Downstream (this repo) #
The quantified ε-ball forms of the C2 support arc (specs/BACKLOG.md Q28: "every ε-ball
around a product ray", "states closer than 2ε have overlapping ε-preparations") become
statable; the topological forms already landed. See MATHLIB-GAPS.md (the FS-metric row this
closes) and specs/mathlib-gaps-plan.md (MG-1).
The rank-one projection onto a line #
The rank-one projection onto the line of v: x ↦ (‖v‖²)⁻¹ ⟪v, x⟫ • v. For unit v
this is the orthogonal projection onto span {v}; the normalisation makes it scale-invariant
(rankOneProj_smul), which is what lets it descend to the projectivization.
Instances For
The projection fixes its own line: rankOneProj v v = v.
Scale invariance: the projection depends only on the line.
The descended projection map on ℙ K V #
Scale invariance, in the exact shape Projectivization.lift consumes.
The projection embedding of projective space into the operator space: a projective point goes to the rank-one projection onto its line.
Equations
- Projectivization.toProjCLM = Projectivization.lift (fun (v : { v : V // v ≠ 0 }) => Projectivization.rankOneProj ↑v) ⋯
Instances For
The projection map is continuous off the quotient topology: the representative-level map
is continuous (the bounded-bilinear smulRight composed with the continuous innerSL, scaled
by the nonvanishing inverse norm-square), and the staged continuous_lift descends it.
Injectivity: distinct lines have distinct projections. Applying the equal projections to a representative of the second line, the first projection fixes it, so the representatives are collinear.
The metric #
The projection embedding is a closed embedding: continuous and injective from the
compact ℙ K V (staged instCompactSpace) into the Hausdorff operator space.
The metric on projectivization: the operator-norm distance between the lines'
projections, pulled back through the closed embedding. comapMetricSpace installs the metric
with replaceTopology, so the metric topology is definitionally the staged quotient
topology — no diamond with instTopologicalSpace.
The distance formula: the gap between the lines, as the operator-norm distance of their projections.