Theorem 1.7: is infinite cyclic generated by
ProvedHatcher.fundamentalGroup_circleLet be the unit circle with basepoint and let , , be the loop that goes once around the circle. Theorem 1.7. is an infinite cyclic group generated by the homotopy class of . Stated element-wise:
Existence of says that generates ; uniqueness of says that the powers of are pairwise distinct, so the group is infinite cyclic, .
This is the first computation of a nontrivial fundamental group in Hatcher's book. It underlies the Fundamental Theorem of Algebra (Theorem 1.8), the Brouwer fixed point theorem for the disk (Theorem 1.9) and the Borsuk–Ulam theorem for the sphere (Theorem 1.10), and every later computation of fundamental groups via products, van Kampen's theorem and covering spaces.
Formalization Note is Circle, the unit circle in , with ; is Mathlib's FundamentalGroup Circle 1; is Hatcher.omegaClass, the class of the explicit loop . The statement pins the generator to Hatcher's loop rather than asserting an abstract isomorphism with ; the isomorphism is an immediate corollary.
import Definitions.Def_Hatcher_Circle import Mathlib open unitInterval Hatcher
namespace Hatcher
theorem fundamentalGroup_circle (g : FundamentalGroup Circle 1) :
∃! n : ℤ, omegaClass ^ n = g := by sorry
end HatcherRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
Declaration Hatcher.fundamentalGroup_circle.
Statement. For every element of (the fundamental group of the space Circle at the basepoint , as spelled out below), there exists exactly one integer such that
where is the specific element of defined below. "Exactly one" is the literal expansion of : there is some with , and every with satisfies . The only binder is ; there are no further hypotheses on , and no typeclass or side assumptions beyond the fixed structures described below.
The space (Mathlib Circle). The set , the unit sphere in , carrying the subspace topology from and the commutative group structure given by complex multiplication. Its identity element is the complex number , and this is the basepoint used throughout.
The map (Mathlib Circle.exp). The continuous map , (as an element of of norm ).
Custom definition (circleCover). is .
Paths and loops. A path in a topological space from to is a continuous map (with ) such that and . A loop at is a path from to .
Custom definition (omegaLoop). is the loop at in given by
with the endpoint conditions and .
Homotopy of paths and the quotient . Two paths from to are called homotopic when there is a continuous with and for all , and such that for every the intermediate path agrees with on the set , i.e. and (endpoints fixed). This is an equivalence relation, and denotes the equivalence class of in the quotient of the set of paths from to by this relation.
The fundamental group (Mathlib FundamentalGroup X x). By definition this is the set of endomorphisms of the object in Mathlib's fundamental groupoid of , which is literally the set of homotopy classes of loops at (the construction FundamentalGroup.fromPath is the identity map from this set of classes to ). Its group structure is:
- identity: , the class of the constant loop ;
- product: , where for loops the concatenation is the loop
(descended to classes); so — the product traverses the right-hand factor first, then the left-hand factor;
- inverse: where .
Integer powers. For and , is the standard group power determined by , for , and for . In particular is the class of the constant loop, , and negative powers are inverses of positive powers.
Custom definition (omegaClass). is the homotopy class of the loop :
Fully expanded claim. For every homotopy class of loops at in the unit circle (loops being continuous with , homotopies keeping both endpoints at ), there is exactly one integer such that the -th group power (in the sense above, with giving the constant-loop class and giving the inverse of the -th power) of the class of equals . Equality here is equality of homotopy classes, i.e. some representative of is homotopic (rel endpoints) to some representative of .
Edge cases made explicit. The quantifier over includes the identity class ; for it, the statement asserts holds for exactly one integer (this includes, as part of the uniqueness clause, that for every that unique ). The statement is made only at the basepoint . The other declarations in the definitions bundle (omegaLoopN, circleCover_zero, circleCover_intCast, omegaLoopN_one, continuous_circleCover) are not referenced by the theorem statement and play no role in what it asserts.
Confirmed by the mission captain (proposal self-audit).