Real projective space as an antipodal quotient #
This file defines the first genuinely topological object in the library:
RP n = S^n / (x ~ -x).
Implemented here:
- the antipodal equivalence relation on
Sphere n; RP nas the quotient by that relation;- the quotient projection
proj : Sphere n -> RP nas a bundled continuous map; - the quotient-map theorem for
proj; - descent of an odd map
f : Sphere n -> Sphere ntoRP n -> RP n; - the basic commutative-square theorem, both pointwise and as a bundled continuous-map equality;
- a uniqueness theorem for the descended map;
- the fiber/relation API of
proj: the membership criterionproj_eq_iff, the fiberproj_fiber x = {x, -x}, and the two-element cardinality of each fiber (proj_fiber_ncard,proj_fiber_encard,proj_two_sheeted). These depend only on the quotient relation, not on any covering-space machinery, so they live here next to the quotient rather than inCovering.lean.
The antipodal relation is an equivalence relation.
Equations
- SphereOddDegree.AntipodalSetoid n = { r := SphereOddDegree.AntipodalRel, iseqv := ⋯ }
Real projective n-space, modeled as S^n/(x ~ -x).
Equations
Instances For
The quotient projection S^n -> RP n.
Equations
- SphereOddDegree.proj n = { toFun := Quotient.mk', continuous_toFun := ⋯ }
Instances For
The projection is a quotient map.
Deck transformations (informal sense) #
A deck transformation of the double cover proj n : S^n → RP n is a
self-homeomorphism φ of S^n with proj n ∘ φ = proj n. Mathlib has no
standalone deck-transformation abstraction (no DeckTransformation/deck
declaration; only IsCoveringMap and the quotient-covering API built on
MulAction/ProperlyDiscontinuousSMul), so we record here only the two
elementary facts that the identity and the antipodal map are deck
transformations of proj n, in the bare proj n ∘ φ = proj n sense. No
abstract deck-transformation group is introduced.
The antipodal map commutes with the projection: proj n (antipodal n x) = proj n x. This is proj_neg phrased through the bundled antipodal map, and is
the pointwise statement that the antipodal map is a deck transformation of the
double cover proj n.
Induction, recursion, and extensionality #
Every point of RP n is proj n x for some sphere point x. The following
lemmas package the standard Quotient boilerplate (Quotient.inductionOn,
Quotient.inductionOn₂, funext/ContinuousMap.ext) specialized to proj n,
so that downstream proofs can reason directly in terms of the projection rather
than the underlying Quotient.mk'.
Extensionality for continuous maps out of RP n: two continuous maps are
equal if they agree on all representatives proj n x. Tagged @[ext], so the
ext tactic reduces a goal f = g between maps C(RP n, β) directly to the
goal f (proj n x) = g (proj n x) on a representative x : Sphere n.
The quotient projection is surjective.
Equality in RP n follows from the antipodal relation upstairs.
If two sphere points are related by the antipodal relation, then their images under an odd map are again related.
Map on projective space induced by an odd sphere self-map.
This is the formal version of the descent f to bar f along the quotient
S^n -> RP n.
Equations
- SphereOddDegree.inducedOnRP f hf = { toFun := Quotient.lift (fun (x : SphereOddDegree.Sphere n) => (SphereOddDegree.proj n) (f x)) ⋯, continuous_toFun := ⋯ }
Instances For
The defining computation rule of the descended map, as a simp lemma:
inducedOnRP f hf (proj n x) = proj n (f x). This is the single-point form of
inducedOnRP_comm, tagged @[simp] so that simp automatically pushes the
descended map through proj n to the odd map f upstairs.
The descent of the identity odd map is the identity on RP n.
The descended map depends only on the underlying odd map, not on the chosen
oddness proof: equal odd maps descend to equal maps on RP n. (Proof
irrelevance handles the oddness hypotheses, so only the equality f = g of the
maps matters.)
The descent of the antipodal map is the identity on RP n: the nontrivial
deck transformation antipodal n becomes trivial after passing to the quotient,
since proj n (-x) = proj n x. This is the descent counterpart of
proj_comp_antipodal.
The descended map is surjective whenever the odd map it descends from is
surjective. (Surjectivity of proj n lets us lift any target point, and the
commuting square inducedOnRP_comm transports a preimage upstairs to a preimage
downstairs.)
Fibers of the projection #
The fiber of proj n over proj n x is the antipodal pair {x, -x}, which
consists of two distinct points. These facts use only the quotient relation
(Quotient.exact/Quotient.sound, proj_neg) together with the sphere-level
fixed-point-free fact ne_neg_self; they require no covering-space machinery,
so they belong with the quotient definition rather than in Covering.lean.
Two sphere points have the same image under proj n iff they are related by
the antipodal relation. This is proj_eq_iff phrased through AntipodalRel,
the form that matches the Setoid underlying RP n (and the converse to
proj_eq_of_antipodalRel).
Membership criterion for the fiber of proj n over proj n x: a point y
lies in the fiber iff it equals x or its antipode -x. This is the simp-form
of proj_eq_iff phrased as fiber membership.
The fiber of proj n over proj n x is exactly the orbit of x under the
two deck transformations (the identity and the antipodal map): the pair
{id x, antipodal n x} = {x, -x}. This is proj_fiber phrased through the deck
transformations, making explicit that each fiber is a single deck-group orbit.
Fibers over arbitrary points #
The fiber lemmas above are phrased over proj n x, i.e. over a chosen
representative. Since proj n is surjective, the same facts hold over an
arbitrary point q : RP n: every fiber is the antipodal pair of some
representative and therefore has exactly two elements. These generalizations
still use only the quotient relation.
Action of the descended map on the fibers of the cover #
The descended map inducedOnRP f hf is, by inducedOnRP_comp_proj, the unique
map making the square
S^n --f--> S^n
| |
proj proj
▼ ▼
RP^n -fbar-> RP^n
commute. The lemmas below extract from that square the fiberwise data that a
pullback-of-covers / monodromy-naturality argument consumes: the odd map f
carries the fiber over q into the fiber over fbar q
(inducedOnRP_mapsTo_fiber), the image of a whole fiber is exactly the target
fiber (inducedOnRP_image_fiber), and f is injective on each (two-element)
fiber (inducedOnRP_injOn_fiber). Together these say f restricts to a
bijection between the two-element fibers, which is precisely the
base-point-to-base-point compatibility the descended map needs to act on the
canonical double cover. These are pure quotient/point-set facts (they use only
inducedOnRP_comm, proj_fiber, and the oddness of f), so they live here
rather than in Covering.lean; no covering-space, classifying-map, or cohomology
machinery is involved.
The descended map respects fibers: the odd map f carries the fiber over q
into the fiber over the descended image inducedOnRP f hf q. This is the
fiberwise form of the commuting square inducedOnRP_comp_proj, and the basic
input for treating inducedOnRP f hf as a map of the double cover by pullback.
The image under the odd map f of the fiber over proj n x is exactly the
fiber over the descended image inducedOnRP f hf (proj n x). Equivalently,
f {x, -x} = {f x, -f x}. This is the surjective-on-fibers half of the
statement that f restricts to a bijection between the two-element fibers.
The odd map f is injective on each (two-element) fiber of proj n: it
cannot identify the two antipodal points x and -x, since f (-x) = -f x ≠ f x. This is the injective-on-fibers half of the statement that f restricts
to a bijection between the two-element fibers.
The odd map f restricts to a bijection between the two-element fibers of
the double cover: it maps the fiber over q bijectively onto the fiber over the
descended image inducedOnRP f hf q. This packages inducedOnRP_mapsTo_fiber,
inducedOnRP_injOn_fiber, and inducedOnRP_image_fiber into a single
Set.BijOn, the fiberwise statement that inducedOnRP f hf is a map of the
canonical double cover.