Proposition 1.40(a): for a covering space action, is a normal covering space
ProvedHatcher.orbitProj_isCoveringMapLet a group act on a space by homeomorphisms, and suppose the action satisfies Hatcher's condition (p. 72): each has a neighborhood such that only for (equivalently, the translates , , are pairwise disjoint). Let be the orbit space and , , the quotient map.
Proposition 1.40(a). The quotient map is a normal covering space: it is a covering map, and for every pair with there is a deck transformation of taking to .
Hatcher: identifies the disjoint homeomorphic sets to the single open set , mapping each homeomorphically, and is a deck transformation taking to .
Formalization Note IsCoveringSpaceAction G Y includes continuity of each (so each acts by a homeomorphism, with inverse ), OrbitSpace G Y is Mathlib's MulAction.orbitRel.Quotient with the quotient topology, and IsNormalCover is the definition on p. 70.
import Definitions.Def_Hatcher_Covering import Mathlib open Hatcher unitInterval
namespace Hatcher
theorem orbitProj_isCoveringMap {G Y : Type*} [Group G] [TopologicalSpace Y] [MulAction G Y]
(hGY : IsCoveringSpaceAction G Y) :
IsCoveringMap (orbitProj G Y) ∧ IsNormalCover (orbitProj G Y) := by sorry
end HatcherRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
Read-back of Hatcher.orbitProj_isCoveringMap.
Setting and binders
G Y : Type*— two types in independent, arbitrary universes.[Group G]— is a group (multiplicative notation, identity1).[TopologicalSpace Y].[MulAction G Y]— a left action , , with and . No continuity is part ofMulAction.(hGY : IsCoveringSpaceAction G Y)— from the bundle:- for every the map is continuous (hence a homeomorphism, with inverse ), and
- for every there is a set (a neighbourhood of : it contains an open set containing , but need not itself be open) such that for all , if then . (Precedence check:
(fun z => g • z) '' U ∩ Uis((g•·) '' U) ∩ U, since''binds tighter than∩.) Condition 2 implies the action is free: if then , so .
Definitions used:
OrbitSpace G Y—MulAction.orbitRel.Quotient G Y, the quotient of by the equivalence relation . Its topology is Mathlib's instance onQuotient: the topology coinduced byQuotient.mk', i.e. the quotient topology ( open iff its preimage in is open).orbitProj G Y : Y → OrbitSpace G Y—Quotient.mk _, the canonical projection ; surjective by construction.IsCoveringMap (orbitProj G Y)— Mathlib's predicate: for every the fibre (which as a set is the orbit , with the subspace topology from ) is discrete, and there is an open with open and a homeomorphism over .deckGroup (orbitProj G Y) : Subgroup (Y ≃ₜ Y)— homeomorphisms with for all , i.e. for every (orbit-preserving homeomorphisms). Note this depends only on the function , not on the topology of .IsNormalCover (orbitProj G Y)— : the orbit-preserving homeomorphisms act transitively on each orbit.
Hypotheses
Only hGY: the action is by homeomorphisms and satisfies the local "" condition. No connectivity, Hausdorffness, local path-connectedness, or nonemptiness of is assumed; no assumption on beyond being a group.
Conclusion
Both of:
- is a covering map (Mathlib sense), and
- is a normal cover: whenever there is a homeomorphism of with and .
Remarks
- Matches Hatcher, Prop. 1.40(a): "the quotient map is a normal covering space" for a covering space action. Hatcher states (a) without connectivity hypotheses, exactly as here.
- Hatcher's condition (*) asks for an open neighbourhood with . The bundle uses a (not necessarily open) neighbourhood and the one-element form ; these are equivalent (shrink to its interior; multiply by ). Hatcher also implicitly assumes acts by homeomorphisms, which is condition 1 here.
- The
IsNormalCoverhalf is essentially immediate from the definitions: if then for some , and is a homeomorphism (by condition 1) preserving orbits. So the mathematical content lies in theIsCoveringMaphalf; the conjunction is not misleading, but the second conjunct is weak. - Edge cases. If : ,
IsCoveringMapholds (Mathlib'sIsCoveringMap.of_isEmpty), andIsNormalCoveris vacuous — the statement is true but trivial. If is trivial: is a bijection and, with the quotient topology, a homeomorphism; a homeomorphism is a covering map with singleton fibres, andIsNormalCoveris trivial. Neither case is excluded. orbitProjis surjective by construction, so the "clopen range" subtlety of Mathlib'sIsCoveringMapdoes not arise.deckGroup (orbitProj G Y)may be strictly larger than the image of when is disconnected (e.g. two points, trivial: the swap is a deck transformation). This theorem does not claim the deck group is ; that isdeckGroup_orbitProj, which adds path-connectedness.- The group itself (not ) appears, via the left action; no fundamental groups appear in this statement, so the loop-multiplication convention is irrelevant.
- Universe-polymorphic in
G,Yindependently.
Confirmed by the mission captain (proposal self-audit).