Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

p(s)=(cos⁡2πs,sin⁡2πs)p(s)=(\cos 2\pi s,\sin 2\pi s)p(s)=(cos2πs,sin2πs) is a covering space of S1S^1S1

Proved
Hatcher.isCoveringMap_circleCover

by korbonits · Sep 4, 2026 · Mathlib 0df444a (Lean v4.33.1)

algebraic-topologycovering-spacesfundamental-grouphatcher

Let p:R→S1p:\mathbb{R}\to S^1p:R→S1 be Hatcher's map p(s)=(cos⁡2πs,sin⁡2πs)=e2πisp(s)=(\cos 2\pi s,\sin 2\pi s)=e^{2\pi i s}p(s)=(cos2πs,sin2πs)=e2πis onto the unit circle. Then ppp is a covering space of S1S^1S1 in Hatcher's sense: every point x∈S1x\in S^1x∈S1 has an open neighbourhood UUU such that p−1(U)p^{-1}(U)p−1(U) is a disjoint union of open subsets of R\mathbb{R}R, each mapped homeomorphically onto UUU by ppp (such a UUU is evenly covered). In symbols,

∀x∈S1 ∃U∋x open,p−1(U)=⨆αU~α,p∣U~α:U~α→ ≅ U.\forall x\in S^1\ \exists U\ni x \text{ open},\quad p^{-1}(U)=\bigsqcup_\alpha \tilde U_\alpha,\qquad p|_{\tilde U_\alpha}:\tilde U_\alpha\xrightarrow{\ \cong\ }U .∀x∈S1 ∃U∋x open,p−1(U)=α⨆​U~α​,p∣U~α​​:U~α​ ≅ ​U.

Hatcher records this as the observation that "any open arc in S1S^1S1 is evenly covered". It is the hypothesis under which the path- and homotopy-lifting properties are applied in the proof of Theorem 1.7, so it is the first brick of the computation π1(S1)≅Z\pi_1(S^1)\cong\mathbb{Z}π1​(S1)≅Z.

Formalization Note The covering-space condition is Mathlib's IsCoveringMap: for each xxx, the fibre p−1{x}p^{-1}\{x\}p−1{x} is discrete and ppp is locally trivial over an open neighbourhood of xxx with that fibre. This is equivalent to Hatcher's condition (∗)(\ast)(∗); neither formulation requires ppp to be surjective. Mathlib already knows Circle.isCoveringMap_exp; here the map is Circle.exp precomposed with s↦2πss\mapsto 2\pi ss↦2πs.

Preamble
import Definitions.Def_Hatcher_Circle
import Mathlib

open unitInterval Hatcher
Formal statement
namespace Hatcher
theorem isCoveringMap_circleCover : IsCoveringMap circleCover := by sorry
end Hatcher
Source
A. Hatcher, Algebraic Topology, Cambridge University Press 2002, https://pi.math.cornell.edu/~hatcher/AT/AT.pdf, Section 1.1, p. 29: definition (∗) of a covering space and the sentence 'for the previously defined map p : ℝ → S¹ any open arc in S¹ is evenly covered'
Read-back

What the Lean code literally says, in plain math · claude-fable-5-1

Declaration Hatcher.isCoveringMap_circleCover. The statement has no hypotheses and no free variables; it asserts a single closed proposition about one fixed map.

The map. Write S1S^1S1 for the unit circle in C\mathbb{C}C, i.e. the set {z∈C:∥z∥=1}\{z \in \mathbb{C} : \|z\| = 1\}{z∈C:∥z∥=1}, carrying the subspace topology inherited from C\mathbb{C}C (this is Mathlib's Circle). The custom function p:R→S1p : \mathbb{R} \to S^1p:R→S1 (called circleCover in the code) is defined for every real sss by

p(s)  =  exp⁡(2πs⋅i)  =  cos⁡(2πs)+i sin⁡(2πs),p(s) \;=\; \exp\bigl(2\pi s \cdot i\bigr) \;=\; \cos(2\pi s) + i\,\sin(2\pi s),p(s)=exp(2πs⋅i)=cos(2πs)+isin(2πs),

where π\piπ is the real number π\piπ and the value is regarded as a point of S1S^1S1. (Concretely, p(s)p(s)p(s) is Mathlib's Circle.exp applied to the real number 2πs2\pi s2πs, and Circle.exp t is the point etie^{t i}eti of the unit circle.) The domain R\mathbb{R}R carries its usual topology.

The assertion. The theorem states that ppp is a covering map in the following precise sense (Mathlib's IsCoveringMap): for every point x∈S1x \in S^1x∈S1, the point xxx is evenly covered by ppp with fibre indexed by the set p−1({x})⊆Rp^{-1}(\{x\}) \subseteq \mathbb{R}p−1({x})⊆R, meaning that all of the following hold:

  • the set p−1({x})={s∈R:p(s)=x}p^{-1}(\{x\}) = \{ s \in \mathbb{R} : p(s) = x \}p−1({x})={s∈R:p(s)=x}, given the subspace topology from R\mathbb{R}R, is a discrete topological space; and
  • there exists a subset U⊆S1U \subseteq S^1U⊆S1 such that
    • x∈Ux \in Ux∈U,
    • UUU is open in S1S^1S1,
    • the preimage p−1(U)⊆Rp^{-1}(U) \subseteq \mathbb{R}p−1(U)⊆R is open in R\mathbb{R}R, and
    • there exists a homeomorphism
H:p−1(U)  →  ≅    U×p−1({x})H : p^{-1}(U) \;\xrightarrow{\;\cong\;}\; U \times p^{-1}(\{x\})H:p−1(U)≅​U×p−1({x})
(where $p^{-1}(U)$ has the subspace topology from $\mathbb{R}$, $U$ the subspace topology from $S^1$, $p^{-1}(\{x\})$ the subspace topology from $\mathbb{R}$, and the right-hand side the product topology) such that for every $y \in p^{-1}(U)$, the first coordinate of $H(y)$, viewed as a point of $S^1$, equals $p(y)$; i.e. $H$ commutes with the projections to $U$.

Notes on what is and is not said.

  • The fibre type used in the local trivialisation is specifically the preimage of the single point {x}\{x\}{x} under ppp, not an arbitrary discrete space; it is required to be discrete but is not required to be nonempty, and its cardinality is not specified.
  • Nothing is asserted about ppp being surjective, continuous, or a local homeomorphism as separate claims; only the pointwise even-covering condition above is asserted, for every x∈S1x \in S^1x∈S1.
  • The statement quantifies over all points of S1S^1S1; since S1S^1S1 is nonempty, the claim is not vacuous.
  • The proof of the declaration is omitted (sorry); the read-back describes only the statement.
Human review
  • Endorsed by Shuze Chen · Sep 5, 2026

  • Endorsed by korbonits · Sep 5, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me