algebraic_topology.fundamental_groupoid.basic
⟷
Mathlib.AlgebraicTopology.FundamentalGroupoid.Basic
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,9 +3,9 @@ Copyright (c) 2021 Shing Tak Lam. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Shing Tak Lam
-/
-import CategoryTheory.Category.Groupoid
+import CategoryTheory.Category.Grpd
import CategoryTheory.Groupoid
-import Topology.Category.Top.Basic
+import Topology.Category.TopCat.Basic
import Topology.Homotopy.Path
#align_import algebraic_topology.fundamental_groupoid.basic from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -115,7 +115,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
prop' t x hx := by
cases hx
· rw [hx]; simp [refl_trans_symm_aux]
- · rw [Set.mem_singleton_iff] at hx
+ · rw [Set.mem_singleton_iff] at hx
rw [hx]
norm_num [refl_trans_symm_aux]
#align path.homotopy.refl_trans_symm Path.Homotopy.reflTransSymm
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2021 Shing Tak Lam. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Shing Tak Lam
-/
-import Mathbin.CategoryTheory.Category.Groupoid
-import Mathbin.CategoryTheory.Groupoid
-import Mathbin.Topology.Category.Top.Basic
-import Mathbin.Topology.Homotopy.Path
+import CategoryTheory.Category.Groupoid
+import CategoryTheory.Groupoid
+import Topology.Category.Top.Basic
+import Topology.Homotopy.Path
#align_import algebraic_topology.fundamental_groupoid.basic from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2021 Shing Tak Lam. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Shing Tak Lam
-
-! This file was ported from Lean 3 source module algebraic_topology.fundamental_groupoid.basic
-! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Category.Groupoid
import Mathbin.CategoryTheory.Groupoid
import Mathbin.Topology.Category.Top.Basic
import Mathbin.Topology.Homotopy.Path
+#align_import algebraic_topology.fundamental_groupoid.basic from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
+
/-!
# Fundamental groupoid of a space
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -379,7 +379,7 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd
intro X
change _ = (⟨_, _, _, _⟩ : FundamentalGroupoid X ⥤ FundamentalGroupoid X)
congr
- ext (x y p)
+ ext x y p
refine' Quotient.inductionOn p fun q => _
rw [← Path.Homotopic.map_lift]
conv_rhs => rw [← q.map_id]
@@ -387,7 +387,7 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd
map_comp' := by
intro X Y Z f g
congr
- ext (x y p)
+ ext x y p
refine' Quotient.inductionOn p fun q => _
simp only [Quotient.map_mk, Path.map_map, Quotient.eq']
rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -49,6 +49,7 @@ def reflTransSymmAux (x : I × I) : ℝ :=
#align path.homotopy.refl_trans_symm_aux Path.Homotopy.reflTransSymmAux
-/
+#print Path.Homotopy.continuous_reflTransSymmAux /-
@[continuity]
theorem continuous_reflTransSymmAux : Continuous reflTransSymmAux :=
by
@@ -60,6 +61,7 @@ theorem continuous_reflTransSymmAux : Continuous reflTransSymmAux :=
intro x hx
norm_num [hx, mul_assoc]
#align path.homotopy.continuous_refl_trans_symm_aux Path.Homotopy.continuous_reflTransSymmAux
+-/
#print Path.Homotopy.reflTransSymmAux_mem_I /-
theorem reflTransSymmAux_mem_I (x : I × I) : reflTransSymmAux x ∈ I :=
@@ -160,11 +162,15 @@ theorem transReflReparamAux_mem_I (t : I) : transReflReparamAux t ∈ I :=
#align path.homotopy.trans_refl_reparam_aux_mem_I Path.Homotopy.transReflReparamAux_mem_I
-/
+#print Path.Homotopy.transReflReparamAux_zero /-
theorem transReflReparamAux_zero : transReflReparamAux 0 = 0 := by norm_num [trans_refl_reparam_aux]
#align path.homotopy.trans_refl_reparam_aux_zero Path.Homotopy.transReflReparamAux_zero
+-/
+#print Path.Homotopy.transReflReparamAux_one /-
theorem transReflReparamAux_one : transReflReparamAux 1 = 1 := by norm_num [trans_refl_reparam_aux]
#align path.homotopy.trans_refl_reparam_aux_one Path.Homotopy.transReflReparamAux_one
+-/
#print Path.Homotopy.trans_refl_reparam /-
theorem trans_refl_reparam (p : Path x₀ x₁) :
@@ -234,13 +240,17 @@ theorem transAssocReparamAux_mem_I (t : I) : transAssocReparamAux t ∈ I :=
#align path.homotopy.trans_assoc_reparam_aux_mem_I Path.Homotopy.transAssocReparamAux_mem_I
-/
+#print Path.Homotopy.transAssocReparamAux_zero /-
theorem transAssocReparamAux_zero : transAssocReparamAux 0 = 0 := by
norm_num [trans_assoc_reparam_aux]
#align path.homotopy.trans_assoc_reparam_aux_zero Path.Homotopy.transAssocReparamAux_zero
+-/
+#print Path.Homotopy.transAssocReparamAux_one /-
theorem transAssocReparamAux_one : transAssocReparamAux 1 = 1 := by
norm_num [trans_assoc_reparam_aux]
#align path.homotopy.trans_assoc_reparam_aux_one Path.Homotopy.transAssocReparamAux_one
+-/
#print Path.Homotopy.trans_assoc_reparam /-
theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q : Path x₁ x₂) (r : Path x₂ x₃) :
@@ -384,40 +394,45 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd
#align fundamental_groupoid.fundamental_groupoid_functor FundamentalGroupoid.fundamentalGroupoidFunctor
-/
--- mathport name: fundamental_groupoid_functor
scoped notation "π" => FundamentalGroupoid.fundamentalGroupoidFunctor
--- mathport name: fundamental_groupoid_functor.obj
scoped notation "πₓ" => FundamentalGroupoid.fundamentalGroupoidFunctor.obj
--- mathport name: fundamental_groupoid_functor.map
scoped notation "πₘ" => FundamentalGroupoid.fundamentalGroupoidFunctor.map
+#print FundamentalGroupoid.map_eq /-
theorem map_eq {X Y : TopCat} {x₀ x₁ : X} (f : C(X, Y)) (p : Path.Homotopic.Quotient x₀ x₁) :
(πₘ f).map p = p.mapFn f :=
rfl
#align fundamental_groupoid.map_eq FundamentalGroupoid.map_eq
+-/
+#print FundamentalGroupoid.toTop /-
/-- Help the typechecker by converting a point in a groupoid back to a point in
the underlying topological space. -/
@[reducible]
def toTop {X : TopCat} (x : πₓ X) : X :=
x
#align fundamental_groupoid.to_top FundamentalGroupoid.toTop
+-/
+#print FundamentalGroupoid.fromTop /-
/-- Help the typechecker by converting a point in a topological space to a
point in the fundamental groupoid of that space -/
@[reducible]
def fromTop {X : TopCat} (x : X) : πₓ X :=
x
#align fundamental_groupoid.from_top FundamentalGroupoid.fromTop
+-/
+#print FundamentalGroupoid.toPath /-
/-- Help the typechecker by converting an arrow in the fundamental groupoid of
a topological space back to a path in that space (i.e., `path.homotopic.quotient`). -/
@[reducible]
def toPath {X : TopCat} {x₀ x₁ : πₓ X} (p : x₀ ⟶ x₁) : Path.Homotopic.Quotient x₀ x₁ :=
p
#align fundamental_groupoid.to_path FundamentalGroupoid.toPath
+-/
#print FundamentalGroupoid.fromPath /-
/-- Help the typechecker by convering a path in a topological space to an arrow in the
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -116,7 +116,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
prop' t x hx := by
cases hx
· rw [hx]; simp [refl_trans_symm_aux]
- · rw [Set.mem_singleton_iff] at hx
+ · rw [Set.mem_singleton_iff] at hx
rw [hx]
norm_num [refl_trans_symm_aux]
#align path.homotopy.refl_trans_symm Path.Homotopy.reflTransSymm
@@ -146,7 +146,7 @@ def transReflReparamAux (t : I) : ℝ :=
theorem continuous_transReflReparamAux : Continuous transReflReparamAux :=
by
refine' continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _) _ <;>
- [continuity;continuity;continuity;continuity;skip]
+ [continuity; continuity; continuity; continuity; skip]
intro x hx
norm_num [hx]
#align path.homotopy.continuous_trans_refl_reparam_aux Path.Homotopy.continuous_transReflReparamAux
@@ -219,7 +219,8 @@ theorem continuous_transAssocReparamAux : Continuous transAssocReparamAux := by
(continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _)
_).ContinuousOn
_ <;>
- [continuity;continuity;continuity;continuity;continuity;continuity;continuity;skip;skip] <;>
+ [continuity; continuity; continuity; continuity; continuity; continuity; continuity; skip;
+ skip] <;>
· intro x hx
norm_num [hx]
#align path.homotopy.continuous_trans_assoc_reparam_aux Path.Homotopy.continuous_transAssocReparamAux
@@ -267,7 +268,7 @@ theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q :
· have h : ¬(1 / 2 : ℝ) * (x + 1) ≤ 1 / 2 := by linarith
have h' : ¬2 * ((1 / 2 : ℝ) * (x + 1)) - 1 ≤ 1 / 2 := by linarith
simp only [h₁, h₅, h, h', if_false, dif_neg (show ¬False from id)]
- congr ; ring
+ congr; ring
#align path.homotopy.trans_assoc_reparam Path.Homotopy.trans_assoc_reparam
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -34,7 +34,7 @@ variable {x₀ x₁ : X}
noncomputable section
-open unitInterval
+open scoped unitInterval
namespace Path
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -49,12 +49,6 @@ def reflTransSymmAux (x : I × I) : ℝ :=
#align path.homotopy.refl_trans_symm_aux Path.Homotopy.reflTransSymmAux
-/
-/- warning: path.homotopy.continuous_refl_trans_symm_aux -> Path.Homotopy.continuous_reflTransSymmAux is a dubious translation:
-lean 3 declaration is
- Continuous.{0, 0} (Prod.{0, 0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval)) Real (Prod.topologicalSpace.{0, 0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) (Subtype.topologicalSpace.{0} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Subtype.topologicalSpace.{0} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) Path.Homotopy.reflTransSymmAux
-but is expected to have type
- Continuous.{0, 0} (Prod.{0, 0} (Set.Elem.{0} Real unitInterval) (Set.Elem.{0} Real unitInterval)) Real (instTopologicalSpaceProd.{0, 0} (Set.Elem.{0} Real unitInterval) (Set.Elem.{0} Real unitInterval) (instTopologicalSpaceSubtype.{0} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (instTopologicalSpaceSubtype.{0} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) Path.Homotopy.reflTransSymmAux
-Case conversion may be inaccurate. Consider using '#align path.homotopy.continuous_refl_trans_symm_aux Path.Homotopy.continuous_reflTransSymmAuxₓ'. -/
@[continuity]
theorem continuous_reflTransSymmAux : Continuous reflTransSymmAux :=
by
@@ -166,21 +160,9 @@ theorem transReflReparamAux_mem_I (t : I) : transReflReparamAux t ∈ I :=
#align path.homotopy.trans_refl_reparam_aux_mem_I Path.Homotopy.transReflReparamAux_mem_I
-/
-/- warning: path.homotopy.trans_refl_reparam_aux_zero -> Path.Homotopy.transReflReparamAux_zero is a dubious translation:
-lean 3 declaration is
- Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (Zero.zero.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasZero)))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
-but is expected to have type
- Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 0 (Zero.toOfNat0.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasZero))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
-Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_refl_reparam_aux_zero Path.Homotopy.transReflReparamAux_zeroₓ'. -/
theorem transReflReparamAux_zero : transReflReparamAux 0 = 0 := by norm_num [trans_refl_reparam_aux]
#align path.homotopy.trans_refl_reparam_aux_zero Path.Homotopy.transReflReparamAux_zero
-/- warning: path.homotopy.trans_refl_reparam_aux_one -> Path.Homotopy.transReflReparamAux_one is a dubious translation:
-lean 3 declaration is
- Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (One.one.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasOne)))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
-but is expected to have type
- Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 1 (One.toOfNat1.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasOne))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
-Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_refl_reparam_aux_one Path.Homotopy.transReflReparamAux_oneₓ'. -/
theorem transReflReparamAux_one : transReflReparamAux 1 = 1 := by norm_num [trans_refl_reparam_aux]
#align path.homotopy.trans_refl_reparam_aux_one Path.Homotopy.transReflReparamAux_one
@@ -251,22 +233,10 @@ theorem transAssocReparamAux_mem_I (t : I) : transAssocReparamAux t ∈ I :=
#align path.homotopy.trans_assoc_reparam_aux_mem_I Path.Homotopy.transAssocReparamAux_mem_I
-/
-/- warning: path.homotopy.trans_assoc_reparam_aux_zero -> Path.Homotopy.transAssocReparamAux_zero is a dubious translation:
-lean 3 declaration is
- Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (Zero.zero.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasZero)))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
-but is expected to have type
- Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 0 (Zero.toOfNat0.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasZero))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
-Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_assoc_reparam_aux_zero Path.Homotopy.transAssocReparamAux_zeroₓ'. -/
theorem transAssocReparamAux_zero : transAssocReparamAux 0 = 0 := by
norm_num [trans_assoc_reparam_aux]
#align path.homotopy.trans_assoc_reparam_aux_zero Path.Homotopy.transAssocReparamAux_zero
-/- warning: path.homotopy.trans_assoc_reparam_aux_one -> Path.Homotopy.transAssocReparamAux_one is a dubious translation:
-lean 3 declaration is
- Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (One.one.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasOne)))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
-but is expected to have type
- Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 1 (One.toOfNat1.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasOne))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
-Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_assoc_reparam_aux_one Path.Homotopy.transAssocReparamAux_oneₓ'. -/
theorem transAssocReparamAux_one : transAssocReparamAux 1 = 1 := by
norm_num [trans_assoc_reparam_aux]
#align path.homotopy.trans_assoc_reparam_aux_one Path.Homotopy.transAssocReparamAux_one
@@ -422,20 +392,11 @@ scoped notation "πₓ" => FundamentalGroupoid.fundamentalGroupoidFunctor.obj
-- mathport name: fundamental_groupoid_functor.map
scoped notation "πₘ" => FundamentalGroupoid.fundamentalGroupoidFunctor.map
-/- warning: fundamental_groupoid.map_eq -> FundamentalGroupoid.map_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.map_eq FundamentalGroupoid.map_eqₓ'. -/
theorem map_eq {X Y : TopCat} {x₀ x₁ : X} (f : C(X, Y)) (p : Path.Homotopic.Quotient x₀ x₁) :
(πₘ f).map p = p.mapFn f :=
rfl
#align fundamental_groupoid.map_eq FundamentalGroupoid.map_eq
-/- warning: fundamental_groupoid.to_top -> FundamentalGroupoid.toTop is a dubious translation:
-lean 3 declaration is
- forall {X : TopCat.{u1}}, (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) -> (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X)
-but is expected to have type
- forall {X : TopCat.{u1}}, (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) -> (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X)
-Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.to_top FundamentalGroupoid.toTopₓ'. -/
/-- Help the typechecker by converting a point in a groupoid back to a point in
the underlying topological space. -/
@[reducible]
@@ -443,12 +404,6 @@ def toTop {X : TopCat} (x : πₓ X) : X :=
x
#align fundamental_groupoid.to_top FundamentalGroupoid.toTop
-/- warning: fundamental_groupoid.from_top -> FundamentalGroupoid.fromTop is a dubious translation:
-lean 3 declaration is
- forall {X : TopCat.{u1}}, (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) -> (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))
-but is expected to have type
- forall {X : TopCat.{u1}}, (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) -> (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))
-Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.from_top FundamentalGroupoid.fromTopₓ'. -/
/-- Help the typechecker by converting a point in a topological space to a
point in the fundamental groupoid of that space -/
@[reducible]
@@ -456,12 +411,6 @@ def fromTop {X : TopCat} (x : X) : πₓ X :=
x
#align fundamental_groupoid.from_top FundamentalGroupoid.fromTop
-/- warning: fundamental_groupoid.to_path -> FundamentalGroupoid.toPath is a dubious translation:
-lean 3 declaration is
- forall {X : TopCat.{u1}} {x₀ : coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)} {x₁ : coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)}, (Quiver.Hom.{succ u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))))) x₀ x₁) -> (Path.Homotopic.Quotient.{u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (TopCat.topologicalSpace.{u1} X) x₀ x₁)
-but is expected to have type
- forall {X : TopCat.{u1}} {x₀ : CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)} {x₁ : CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)}, (Quiver.Hom.{succ u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) x₀ x₁) -> (Path.Homotopic.Quotient.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X) x₀ x₁)
-Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.to_path FundamentalGroupoid.toPathₓ'. -/
/-- Help the typechecker by converting an arrow in the fundamental groupoid of
a topological space back to a path in that space (i.e., `path.homotopic.quotient`). -/
@[reducible]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -121,8 +121,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
exact ⟨(not_le.1 h).le, unitInterval.le_one x⟩
prop' t x hx := by
cases hx
- · rw [hx]
- simp [refl_trans_symm_aux]
+ · rw [hx]; simp [refl_trans_symm_aux]
· rw [Set.mem_singleton_iff] at hx
rw [hx]
norm_num [refl_trans_symm_aux]
@@ -286,10 +285,8 @@ theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q :
-- TODO: why does split_ifs not reduce the ifs??????
split_ifs with h₁ h₂ h₃ h₄ h₅
· simp [h₂, h₃, -one_div]
- · exfalso
- linarith
- · exfalso
- linarith
+ · exfalso; linarith
+ · exfalso; linarith
· have h : ¬(x : ℝ) + 1 / 4 ≤ 1 / 2 := by linarith
have h' : 2 * ((x : ℝ) + 1 / 4) - 1 ≤ 1 / 2 := by linarith
have h'' : 2 * (2 * (x : ℝ)) - 1 = 2 * (2 * (↑x + 1 / 4) - 1) := by linarith
@@ -300,8 +297,7 @@ theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q :
· have h : ¬(1 / 2 : ℝ) * (x + 1) ≤ 1 / 2 := by linarith
have h' : ¬2 * ((1 / 2 : ℝ) * (x + 1)) - 1 ≤ 1 / 2 := by linarith
simp only [h₁, h₅, h, h', if_false, dif_neg (show ¬False from id)]
- congr
- ring
+ congr ; ring
#align path.homotopy.trans_assoc_reparam Path.Homotopy.trans_assoc_reparam
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -427,10 +427,7 @@ scoped notation "πₓ" => FundamentalGroupoid.fundamentalGroupoidFunctor.obj
scoped notation "πₘ" => FundamentalGroupoid.fundamentalGroupoidFunctor.map
/- warning: fundamental_groupoid.map_eq -> FundamentalGroupoid.map_eq is a dubious translation:
-lean 3 declaration is
- forall {X : TopCat.{u1}} {Y : TopCat.{u1}} {x₀ : coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X} {x₁ : coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X} (f : ContinuousMap.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} Y) (TopCat.topologicalSpace.{u1} X) (TopCat.topologicalSpace.{u1} Y)) (p : Path.Homotopic.Quotient.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X) x₀ x₁), Eq.{succ u1} (Quiver.Hom.{succ u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))))) (CategoryTheory.Functor.obj.{u1, u1, u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))) (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))) (CategoryTheory.Functor.map.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X Y f) x₀) (CategoryTheory.Functor.obj.{u1, u1, u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))) (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))) (CategoryTheory.Functor.map.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X Y f) x₁)) (CategoryTheory.Functor.map.{u1, u1, u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))) (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))) (CategoryTheory.Functor.map.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X Y f) x₀ x₁ p) (Path.Homotopic.Quotient.mapFn.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (FundamentalGroupoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} Y)) (TopCat.topologicalSpace.{u1} X) (TopCat.topologicalSpace.{u1} Y) x₀ x₁ p f)
-but is expected to have type
- forall {X : TopCat.{u1}} {Y : TopCat.{u1}} {x₀ : CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X} {x₁ : CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X} (f : ContinuousMap.{u1, u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} Y) (TopCat.topologicalSpace_coe.{u1} X) (TopCat.topologicalSpace_coe.{u1} Y)) (p : Path.Homotopic.Quotient.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X) x₀ x₁), Eq.{succ u1} (Quiver.Hom.{succ u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (Prefunctor.obj.{succ u1, succ u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))) (Prefunctor.map.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X Y f)) x₀) (Prefunctor.obj.{succ u1, succ u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))) (Prefunctor.map.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X Y f)) x₁)) (Prefunctor.map.{succ u1, succ u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))) (Prefunctor.map.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X Y f)) x₀ x₁ p) (Path.Homotopic.Quotient.mapFn.{u1, u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} Y) (TopCat.topologicalSpace_coe.{u1} X) (TopCat.topologicalSpace_coe.{u1} Y) x₀ x₁ p f)
+<too large>
Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.map_eq FundamentalGroupoid.map_eqₓ'. -/
theorem map_eq {X Y : TopCat} {x₀ x₁ : X} (f : C(X, Y)) (p : Path.Homotopic.Quotient x₀ x₁) :
(πₘ f).map p = p.mapFn f :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -153,7 +153,7 @@ def transReflReparamAux (t : I) : ℝ :=
theorem continuous_transReflReparamAux : Continuous transReflReparamAux :=
by
refine' continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _) _ <;>
- [continuity, continuity, continuity, continuity, skip]
+ [continuity;continuity;continuity;continuity;skip]
intro x hx
norm_num [hx]
#align path.homotopy.continuous_trans_refl_reparam_aux Path.Homotopy.continuous_transReflReparamAux
@@ -238,8 +238,7 @@ theorem continuous_transAssocReparamAux : Continuous transAssocReparamAux := by
(continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _)
_).ContinuousOn
_ <;>
- [continuity, continuity, continuity, continuity, continuity, continuity, continuity, skip,
- skip] <;>
+ [continuity;continuity;continuity;continuity;continuity;continuity;continuity;skip;skip] <;>
· intro x hx
norm_num [hx]
#align path.homotopy.continuous_trans_assoc_reparam_aux Path.Homotopy.continuous_transAssocReparamAux
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Shing Tak Lam
! This file was ported from Lean 3 source module algebraic_topology.fundamental_groupoid.basic
-! leanprover-community/mathlib commit 3d7987cda72abc473c7cdbbb075170e9ac620042
+! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.Topology.Homotopy.Path
/-!
# Fundamental groupoid of a space
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Given a topological space `X`, we can define the fundamental groupoid of `X` to be the category with
objects being points of `X`, and morphisms `x ⟶ y` being paths from `x` to `y`, quotiented by
homotopy equivalence. With this, the fundamental group of `X` based at `x` is just the automorphism
mathlib commit https://github.com/leanprover-community/mathlib/commit/f8c79b0a623404854a2902b836eac32156fd7712
@@ -39,11 +39,19 @@ namespace Homotopy
section
+#print Path.Homotopy.reflTransSymmAux /-
/-- Auxilliary function for `refl_trans_symm` -/
def reflTransSymmAux (x : I × I) : ℝ :=
if (x.2 : ℝ) ≤ 1 / 2 then x.1 * 2 * x.2 else x.1 * (2 - 2 * x.2)
#align path.homotopy.refl_trans_symm_aux Path.Homotopy.reflTransSymmAux
+-/
+/- warning: path.homotopy.continuous_refl_trans_symm_aux -> Path.Homotopy.continuous_reflTransSymmAux is a dubious translation:
+lean 3 declaration is
+ Continuous.{0, 0} (Prod.{0, 0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval)) Real (Prod.topologicalSpace.{0, 0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) (Subtype.topologicalSpace.{0} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Subtype.topologicalSpace.{0} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) Path.Homotopy.reflTransSymmAux
+but is expected to have type
+ Continuous.{0, 0} (Prod.{0, 0} (Set.Elem.{0} Real unitInterval) (Set.Elem.{0} Real unitInterval)) Real (instTopologicalSpaceProd.{0, 0} (Set.Elem.{0} Real unitInterval) (Set.Elem.{0} Real unitInterval) (instTopologicalSpaceSubtype.{0} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (instTopologicalSpaceSubtype.{0} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x unitInterval) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) Path.Homotopy.reflTransSymmAux
+Case conversion may be inaccurate. Consider using '#align path.homotopy.continuous_refl_trans_symm_aux Path.Homotopy.continuous_reflTransSymmAuxₓ'. -/
@[continuity]
theorem continuous_reflTransSymmAux : Continuous reflTransSymmAux :=
by
@@ -56,6 +64,7 @@ theorem continuous_reflTransSymmAux : Continuous reflTransSymmAux :=
norm_num [hx, mul_assoc]
#align path.homotopy.continuous_refl_trans_symm_aux Path.Homotopy.continuous_reflTransSymmAux
+#print Path.Homotopy.reflTransSymmAux_mem_I /-
theorem reflTransSymmAux_mem_I (x : I × I) : reflTransSymmAux x ∈ I :=
by
dsimp only [refl_trans_symm_aux]
@@ -82,7 +91,9 @@ theorem reflTransSymmAux_mem_I (x : I × I) : reflTransSymmAux x ∈ I :=
· linarith [unitInterval.nonneg x.2, unitInterval.le_one x.2]
· linarith [unitInterval.nonneg x.2, unitInterval.le_one x.2]
#align path.homotopy.refl_trans_symm_aux_mem_I Path.Homotopy.reflTransSymmAux_mem_I
+-/
+#print Path.Homotopy.reflTransSymm /-
/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from the constant path based at `x₀` to
`p.trans p.symm`. -/
def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.symm)
@@ -113,22 +124,28 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
rw [hx]
norm_num [refl_trans_symm_aux]
#align path.homotopy.refl_trans_symm Path.Homotopy.reflTransSymm
+-/
+#print Path.Homotopy.reflSymmTrans /-
/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from the constant path based at `x₁` to
`p.symm.trans p`. -/
def reflSymmTrans (p : Path x₀ x₁) : Homotopy (Path.refl x₁) (p.symm.trans p) :=
(reflTransSymm p.symm).cast rfl <| congr_arg _ Path.symm_symm
#align path.homotopy.refl_symm_trans Path.Homotopy.reflSymmTrans
+-/
end
section TransRefl
+#print Path.Homotopy.transReflReparamAux /-
/-- Auxilliary function for `trans_refl_reparam` -/
def transReflReparamAux (t : I) : ℝ :=
if (t : ℝ) ≤ 1 / 2 then 2 * t else 1
#align path.homotopy.trans_refl_reparam_aux Path.Homotopy.transReflReparamAux
+-/
+#print Path.Homotopy.continuous_transReflReparamAux /-
@[continuity]
theorem continuous_transReflReparamAux : Continuous transReflReparamAux :=
by
@@ -137,19 +154,35 @@ theorem continuous_transReflReparamAux : Continuous transReflReparamAux :=
intro x hx
norm_num [hx]
#align path.homotopy.continuous_trans_refl_reparam_aux Path.Homotopy.continuous_transReflReparamAux
+-/
+#print Path.Homotopy.transReflReparamAux_mem_I /-
theorem transReflReparamAux_mem_I (t : I) : transReflReparamAux t ∈ I :=
by
unfold trans_refl_reparam_aux
split_ifs <;> constructor <;> linarith [unitInterval.le_one t, unitInterval.nonneg t]
#align path.homotopy.trans_refl_reparam_aux_mem_I Path.Homotopy.transReflReparamAux_mem_I
+-/
+/- warning: path.homotopy.trans_refl_reparam_aux_zero -> Path.Homotopy.transReflReparamAux_zero is a dubious translation:
+lean 3 declaration is
+ Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (Zero.zero.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasZero)))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
+but is expected to have type
+ Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 0 (Zero.toOfNat0.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasZero))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
+Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_refl_reparam_aux_zero Path.Homotopy.transReflReparamAux_zeroₓ'. -/
theorem transReflReparamAux_zero : transReflReparamAux 0 = 0 := by norm_num [trans_refl_reparam_aux]
#align path.homotopy.trans_refl_reparam_aux_zero Path.Homotopy.transReflReparamAux_zero
+/- warning: path.homotopy.trans_refl_reparam_aux_one -> Path.Homotopy.transReflReparamAux_one is a dubious translation:
+lean 3 declaration is
+ Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (One.one.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasOne)))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
+but is expected to have type
+ Eq.{1} Real (Path.Homotopy.transReflReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 1 (One.toOfNat1.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasOne))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
+Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_refl_reparam_aux_one Path.Homotopy.transReflReparamAux_oneₓ'. -/
theorem transReflReparamAux_one : transReflReparamAux 1 = 1 := by norm_num [trans_refl_reparam_aux]
#align path.homotopy.trans_refl_reparam_aux_one Path.Homotopy.transReflReparamAux_one
+#print Path.Homotopy.trans_refl_reparam /-
theorem trans_refl_reparam (p : Path x₀ x₁) :
p.trans (Path.refl x₁) =
p.reparam (fun t => ⟨transReflReparamAux t, transReflReparamAux_mem_I t⟩) (by continuity)
@@ -162,7 +195,9 @@ theorem trans_refl_reparam (p : Path x₀ x₁) :
· rfl
· simp
#align path.homotopy.trans_refl_reparam Path.Homotopy.trans_refl_reparam
+-/
+#print Path.Homotopy.transRefl /-
/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from `p.trans (path.refl x₁)` to `p`.
-/
def transRefl (p : Path x₀ x₁) : Homotopy (p.trans (Path.refl x₁)) p :=
@@ -171,22 +206,28 @@ def transRefl (p : Path x₀ x₁) : Homotopy (p.trans (Path.refl x₁)) p :=
(Subtype.ext transReflReparamAux_one)).cast
rfl (trans_refl_reparam p).symm).symm
#align path.homotopy.trans_refl Path.Homotopy.transRefl
+-/
+#print Path.Homotopy.reflTrans /-
/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from `(path.refl x₀).trans p` to `p`.
-/
def reflTrans (p : Path x₀ x₁) : Homotopy ((Path.refl x₀).trans p) p :=
(transRefl p.symm).symm₂.cast (by simp) (by simp)
#align path.homotopy.refl_trans Path.Homotopy.reflTrans
+-/
end TransRefl
section Assoc
+#print Path.Homotopy.transAssocReparamAux /-
/-- Auxilliary function for `trans_assoc_reparam`. -/
def transAssocReparamAux (t : I) : ℝ :=
if (t : ℝ) ≤ 1 / 4 then 2 * t else if (t : ℝ) ≤ 1 / 2 then t + 1 / 4 else 1 / 2 * (t + 1)
#align path.homotopy.trans_assoc_reparam_aux Path.Homotopy.transAssocReparamAux
+-/
+#print Path.Homotopy.continuous_transAssocReparamAux /-
@[continuity]
theorem continuous_transAssocReparamAux : Continuous transAssocReparamAux := by
refine'
@@ -199,21 +240,37 @@ theorem continuous_transAssocReparamAux : Continuous transAssocReparamAux := by
· intro x hx
norm_num [hx]
#align path.homotopy.continuous_trans_assoc_reparam_aux Path.Homotopy.continuous_transAssocReparamAux
+-/
+#print Path.Homotopy.transAssocReparamAux_mem_I /-
theorem transAssocReparamAux_mem_I (t : I) : transAssocReparamAux t ∈ I :=
by
unfold trans_assoc_reparam_aux
split_ifs <;> constructor <;> linarith [unitInterval.le_one t, unitInterval.nonneg t]
#align path.homotopy.trans_assoc_reparam_aux_mem_I Path.Homotopy.transAssocReparamAux_mem_I
+-/
+/- warning: path.homotopy.trans_assoc_reparam_aux_zero -> Path.Homotopy.transAssocReparamAux_zero is a dubious translation:
+lean 3 declaration is
+ Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 0 (Zero.zero.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasZero)))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
+but is expected to have type
+ Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 0 (Zero.toOfNat0.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasZero))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
+Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_assoc_reparam_aux_zero Path.Homotopy.transAssocReparamAux_zeroₓ'. -/
theorem transAssocReparamAux_zero : transAssocReparamAux 0 = 0 := by
norm_num [trans_assoc_reparam_aux]
#align path.homotopy.trans_assoc_reparam_aux_zero Path.Homotopy.transAssocReparamAux_zero
+/- warning: path.homotopy.trans_assoc_reparam_aux_one -> Path.Homotopy.transAssocReparamAux_one is a dubious translation:
+lean 3 declaration is
+ Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (OfNat.mk.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) 1 (One.one.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) unitInterval) unitInterval.hasOne)))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
+but is expected to have type
+ Eq.{1} Real (Path.Homotopy.transAssocReparamAux (OfNat.ofNat.{0} (Set.Elem.{0} Real unitInterval) 1 (One.toOfNat1.{0} (Set.Elem.{0} Real unitInterval) unitInterval.hasOne))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
+Case conversion may be inaccurate. Consider using '#align path.homotopy.trans_assoc_reparam_aux_one Path.Homotopy.transAssocReparamAux_oneₓ'. -/
theorem transAssocReparamAux_one : transAssocReparamAux 1 = 1 := by
norm_num [trans_assoc_reparam_aux]
#align path.homotopy.trans_assoc_reparam_aux_one Path.Homotopy.transAssocReparamAux_one
+#print Path.Homotopy.trans_assoc_reparam /-
theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q : Path x₁ x₂) (r : Path x₂ x₃) :
(p.trans q).trans r =
(p.trans (q.trans r)).reparam
@@ -244,7 +301,9 @@ theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q :
congr
ring
#align path.homotopy.trans_assoc_reparam Path.Homotopy.trans_assoc_reparam
+-/
+#print Path.Homotopy.transAssoc /-
/-- For paths `p q r`, we have a homotopy from `(p.trans q).trans r` to `p.trans (q.trans r)`.
-/
def transAssoc {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q : Path x₁ x₂) (r : Path x₂ x₃) :
@@ -254,6 +313,7 @@ def transAssoc {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q : Path x₁ x
(Subtype.ext transAssocReparamAux_zero) (Subtype.ext transAssocReparamAux_one)).cast
rfl (trans_assoc_reparam p q r).symm).symm
#align path.homotopy.trans_assoc Path.Homotopy.transAssoc
+-/
end Assoc
@@ -261,6 +321,7 @@ end Homotopy
end Path
+#print FundamentalGroupoid /-
/--
The fundamental groupoid of a space `X` is defined to be a type synonym for `X`, and we subsequently
put a `category_theory.groupoid` structure on it.
@@ -268,6 +329,7 @@ put a `category_theory.groupoid` structure on it.
def FundamentalGroupoid (X : Type u) :=
X
#align fundamental_groupoid FundamentalGroupoid
+-/
namespace FundamentalGroupoid
@@ -309,14 +371,19 @@ instance : CategoryTheory.Groupoid (FundamentalGroupoid X)
show ⟦a.trans a.symm⟧ = ⟦Path.refl x⟧ from
Quotient.sound ⟨(Path.Homotopy.reflTransSymm a).symm⟩
+#print FundamentalGroupoid.comp_eq /-
theorem comp_eq (x y z : FundamentalGroupoid X) (p : x ⟶ y) (q : y ⟶ z) : p ≫ q = p.comp q :=
rfl
#align fundamental_groupoid.comp_eq FundamentalGroupoid.comp_eq
+-/
+#print FundamentalGroupoid.id_eq_path_refl /-
theorem id_eq_path_refl (x : FundamentalGroupoid X) : 𝟙 x = ⟦Path.refl x⟧ :=
rfl
#align fundamental_groupoid.id_eq_path_refl FundamentalGroupoid.id_eq_path_refl
+-/
+#print FundamentalGroupoid.fundamentalGroupoidFunctor /-
/-- The functor sending a topological space `X` to its fundamental groupoid.
-/
def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd
@@ -346,6 +413,7 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd
simp only [Quotient.map_mk, Path.map_map, Quotient.eq']
rfl
#align fundamental_groupoid.fundamental_groupoid_functor FundamentalGroupoid.fundamentalGroupoidFunctor
+-/
-- mathport name: fundamental_groupoid_functor
scoped notation "π" => FundamentalGroupoid.fundamentalGroupoidFunctor
@@ -356,11 +424,23 @@ scoped notation "πₓ" => FundamentalGroupoid.fundamentalGroupoidFunctor.obj
-- mathport name: fundamental_groupoid_functor.map
scoped notation "πₘ" => FundamentalGroupoid.fundamentalGroupoidFunctor.map
+/- warning: fundamental_groupoid.map_eq -> FundamentalGroupoid.map_eq is a dubious translation:
+lean 3 declaration is
+ forall {X : TopCat.{u1}} {Y : TopCat.{u1}} {x₀ : coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X} {x₁ : coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X} (f : ContinuousMap.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} Y) (TopCat.topologicalSpace.{u1} X) (TopCat.topologicalSpace.{u1} Y)) (p : Path.Homotopic.Quotient.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X) x₀ x₁), Eq.{succ u1} (Quiver.Hom.{succ u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))))) (CategoryTheory.Functor.obj.{u1, u1, u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))) (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))) (CategoryTheory.Functor.map.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X Y f) x₀) (CategoryTheory.Functor.obj.{u1, u1, u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))) (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))) (CategoryTheory.Functor.map.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X Y f) x₁)) (CategoryTheory.Functor.map.{u1, u1, u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))) (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} Y))) (CategoryTheory.Functor.map.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X Y f) x₀ x₁ p) (Path.Homotopic.Quotient.mapFn.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (FundamentalGroupoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} Y)) (TopCat.topologicalSpace.{u1} X) (TopCat.topologicalSpace.{u1} Y) x₀ x₁ p f)
+but is expected to have type
+ forall {X : TopCat.{u1}} {Y : TopCat.{u1}} {x₀ : CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X} {x₁ : CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X} (f : ContinuousMap.{u1, u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} Y) (TopCat.topologicalSpace_coe.{u1} X) (TopCat.topologicalSpace_coe.{u1} Y)) (p : Path.Homotopic.Quotient.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X) x₀ x₁), Eq.{succ u1} (Quiver.Hom.{succ u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (Prefunctor.obj.{succ u1, succ u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))) (Prefunctor.map.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X Y f)) x₀) (Prefunctor.obj.{succ u1, succ u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))) (Prefunctor.map.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X Y f)) x₁)) (Prefunctor.map.{succ u1, succ u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))) (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) Y))) (Prefunctor.map.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X Y f)) x₀ x₁ p) (Path.Homotopic.Quotient.mapFn.{u1, u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} Y) (TopCat.topologicalSpace_coe.{u1} X) (TopCat.topologicalSpace_coe.{u1} Y) x₀ x₁ p f)
+Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.map_eq FundamentalGroupoid.map_eqₓ'. -/
theorem map_eq {X Y : TopCat} {x₀ x₁ : X} (f : C(X, Y)) (p : Path.Homotopic.Quotient x₀ x₁) :
(πₘ f).map p = p.mapFn f :=
rfl
#align fundamental_groupoid.map_eq FundamentalGroupoid.map_eq
+/- warning: fundamental_groupoid.to_top -> FundamentalGroupoid.toTop is a dubious translation:
+lean 3 declaration is
+ forall {X : TopCat.{u1}}, (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) -> (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X)
+but is expected to have type
+ forall {X : TopCat.{u1}}, (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) -> (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X)
+Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.to_top FundamentalGroupoid.toTopₓ'. -/
/-- Help the typechecker by converting a point in a groupoid back to a point in
the underlying topological space. -/
@[reducible]
@@ -368,6 +448,12 @@ def toTop {X : TopCat} (x : πₓ X) : X :=
x
#align fundamental_groupoid.to_top FundamentalGroupoid.toTop
+/- warning: fundamental_groupoid.from_top -> FundamentalGroupoid.fromTop is a dubious translation:
+lean 3 declaration is
+ forall {X : TopCat.{u1}}, (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) -> (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))
+but is expected to have type
+ forall {X : TopCat.{u1}}, (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) -> (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))
+Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.from_top FundamentalGroupoid.fromTopₓ'. -/
/-- Help the typechecker by converting a point in a topological space to a
point in the fundamental groupoid of that space -/
@[reducible]
@@ -375,6 +461,12 @@ def fromTop {X : TopCat} (x : X) : πₓ X :=
x
#align fundamental_groupoid.from_top FundamentalGroupoid.fromTop
+/- warning: fundamental_groupoid.to_path -> FundamentalGroupoid.toPath is a dubious translation:
+lean 3 declaration is
+ forall {X : TopCat.{u1}} {x₀ : coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)} {x₁ : coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)}, (Quiver.Hom.{succ u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (CategoryTheory.Grpd.str'.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X))))) x₀ x₁) -> (Path.Homotopic.Quotient.{u1} (coeSort.{succ (succ u1), succ (succ u1)} CategoryTheory.Grpd.{u1, u1} Type.{u1} CategoryTheory.Grpd.hasCoeToSort.{u1, u1} (CategoryTheory.Functor.obj.{u1, u1, succ u1, succ u1} TopCat.{u1} TopCat.largeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1} X)) (TopCat.topologicalSpace.{u1} X) x₀ x₁)
+but is expected to have type
+ forall {X : TopCat.{u1}} {x₀ : CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)} {x₁ : CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)}, (Quiver.Hom.{succ u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Groupoid.toCategory.{u1, u1} (CategoryTheory.Bundled.α.{u1, succ u1} CategoryTheory.Groupoid.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X)) (CategoryTheory.Grpd.str'.{u1, u1} (Prefunctor.obj.{succ u1, succ u1, succ u1, succ u1} TopCat.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} TopCat.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1})) CategoryTheory.Grpd.{u1, u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1})) (CategoryTheory.Functor.toPrefunctor.{u1, u1, succ u1, succ u1} TopCat.{u1} instTopCatLargeCategory.{u1} CategoryTheory.Grpd.{u1, u1} CategoryTheory.Grpd.category.{u1, u1} FundamentalGroupoid.fundamentalGroupoidFunctor.{u1}) X))))) x₀ x₁) -> (Path.Homotopic.Quotient.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X) x₀ x₁)
+Case conversion may be inaccurate. Consider using '#align fundamental_groupoid.to_path FundamentalGroupoid.toPathₓ'. -/
/-- Help the typechecker by converting an arrow in the fundamental groupoid of
a topological space back to a path in that space (i.e., `path.homotopic.quotient`). -/
@[reducible]
@@ -382,12 +474,14 @@ def toPath {X : TopCat} {x₀ x₁ : πₓ X} (p : x₀ ⟶ x₁) : Path.Homotop
p
#align fundamental_groupoid.to_path FundamentalGroupoid.toPath
+#print FundamentalGroupoid.fromPath /-
/-- Help the typechecker by convering a path in a topological space to an arrow in the
fundamental groupoid of that space. -/
@[reducible]
def fromPath {X : TopCat} {x₀ x₁ : X} (p : Path.Homotopic.Quotient x₀ x₁) : x₀ ⟶ x₁ :=
p
#align fundamental_groupoid.from_path FundamentalGroupoid.fromPath
+-/
end FundamentalGroupoid
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -319,7 +319,7 @@ theorem id_eq_path_refl (x : FundamentalGroupoid X) : 𝟙 x = ⟦Path.refl x⟧
/-- The functor sending a topological space `X` to its fundamental groupoid.
-/
-def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.GroupoidCat
+def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd
where
obj X := { α := FundamentalGroupoid X }
map X Y f :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/57e09a1296bfb4330ddf6624f1028ba186117d82
@@ -223,7 +223,7 @@ theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q :
ext
simp only [trans_assoc_reparam_aux, Path.trans_apply, mul_inv_cancel_left₀, not_le,
Function.comp_apply, Ne.def, not_false_iff, bit0_eq_zero, one_ne_zero, mul_ite, Subtype.coe_mk,
- Path.coe_to_fun]
+ Path.coe_reparam]
-- TODO: why does split_ifs not reduce the ifs??????
split_ifs with h₁ h₂ h₃ h₄ h₅
· simp [h₂, h₃, -one_div]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Subsingleton,Nontrivial
off of Data.Set.Basic
(#11832)
Moves definition of and lemmas related to Set.Subsingleton
and Set.Nontrivial
to a new file, so that Basic
can be shorter.
@@ -7,7 +7,7 @@ import Mathlib.CategoryTheory.Category.Grpd
import Mathlib.CategoryTheory.Groupoid
import Mathlib.Topology.Category.TopCat.Basic
import Mathlib.Topology.Homotopy.Path
-import Mathlib.Data.Set.Basic
+import Mathlib.Data.Set.Subsingleton
#align_import algebraic_topology.fundamental_groupoid.basic from "leanprover-community/mathlib"@"3d7987cda72abc473c7cdbbb075170e9ac620042"
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -271,7 +271,7 @@ end Path
subsequently put a `CategoryTheory.Groupoid` structure on it. -/
@[ext]
structure FundamentalGroupoid (X : Type u) where
- /-- View a term of `FundamentalGroupoid X` as a term of `X`.-/
+ /-- View a term of `FundamentalGroupoid X` as a term of `X`. -/
as : X
#align fundamental_groupoid FundamentalGroupoid
@@ -217,7 +217,7 @@ theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q :
(Subtype.ext transAssocReparamAux_zero) (Subtype.ext transAssocReparamAux_one) := by
ext x
simp only [transAssocReparamAux, Path.trans_apply, mul_inv_cancel_left₀, not_le,
- Function.comp_apply, Ne.def, not_false_iff, bit0_eq_zero, one_ne_zero, mul_ite, Subtype.coe_mk,
+ Function.comp_apply, Ne, not_false_iff, bit0_eq_zero, one_ne_zero, mul_ite, Subtype.coe_mk,
Path.coe_reparam]
-- TODO: why does split_ifs not reduce the ifs??????
split_ifs with h₁ h₂ h₃ h₄ h₅
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -25,7 +25,6 @@ open CategoryTheory
universe u v
variable {X : Type u} {Y : Type v} [TopologicalSpace X] [TopologicalSpace Y]
-
variable {x₀ x₁ : X}
noncomputable section
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -108,6 +108,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
cases hx with
| inl hx
| inr hx =>
+ set_option tactic.skipAssignedInstances false in
rw [hx]
norm_num [reflTransSymmAux]
#align path.homotopy.refl_trans_symm Path.Homotopy.reflTransSymm
@@ -142,11 +143,11 @@ set_option linter.uppercaseLean3 false in
#align path.homotopy.trans_refl_reparam_aux_mem_I Path.Homotopy.transReflReparamAux_mem_I
theorem transReflReparamAux_zero : transReflReparamAux 0 = 0 := by
- norm_num [transReflReparamAux]
+ set_option tactic.skipAssignedInstances false in norm_num [transReflReparamAux]
#align path.homotopy.trans_refl_reparam_aux_zero Path.Homotopy.transReflReparamAux_zero
theorem transReflReparamAux_one : transReflReparamAux 1 = 1 := by
- norm_num [transReflReparamAux]
+ set_option tactic.skipAssignedInstances false in norm_num [transReflReparamAux]
#align path.homotopy.trans_refl_reparam_aux_one Path.Homotopy.transReflReparamAux_one
theorem trans_refl_reparam (p : Path x₀ x₁) :
@@ -193,7 +194,7 @@ theorem continuous_transAssocReparamAux : Continuous transAssocReparamAux := by
[continuity; continuity; continuity; continuity; continuity; continuity; continuity; skip;
skip] <;>
· intro x hx
- norm_num [hx]
+ set_option tactic.skipAssignedInstances false in norm_num [hx]
#align path.homotopy.continuous_trans_assoc_reparam_aux Path.Homotopy.continuous_transAssocReparamAux
theorem transAssocReparamAux_mem_I (t : I) : transAssocReparamAux t ∈ I := by
@@ -203,11 +204,11 @@ set_option linter.uppercaseLean3 false in
#align path.homotopy.trans_assoc_reparam_aux_mem_I Path.Homotopy.transAssocReparamAux_mem_I
theorem transAssocReparamAux_zero : transAssocReparamAux 0 = 0 := by
- norm_num [transAssocReparamAux]
+ set_option tactic.skipAssignedInstances false in norm_num [transAssocReparamAux]
#align path.homotopy.trans_assoc_reparam_aux_zero Path.Homotopy.transAssocReparamAux_zero
theorem transAssocReparamAux_one : transAssocReparamAux 1 = 1 := by
- norm_num [transAssocReparamAux]
+ set_option tactic.skipAssignedInstances false in norm_num [transAssocReparamAux]
#align path.homotopy.trans_assoc_reparam_aux_one Path.Homotopy.transAssocReparamAux_one
theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q : Path x₁ x₂) (r : Path x₂ x₃) :
Data.Set.Basic
from scripts/noshake.json
.example
s only,
move these example
s to a new test file.Order.Filter.Basic
dependency on Control.Traversable.Instances
,
as the relevant parts were moved to Order.Filter.ListTraverse
.lake exe shake --fix
.@@ -7,6 +7,7 @@ import Mathlib.CategoryTheory.Category.Grpd
import Mathlib.CategoryTheory.Groupoid
import Mathlib.Topology.Category.TopCat.Basic
import Mathlib.Topology.Homotopy.Path
+import Mathlib.Data.Set.Basic
#align_import algebraic_topology.fundamental_groupoid.basic from "leanprover-community/mathlib"@"3d7987cda72abc473c7cdbbb075170e9ac620042"
@[inherit_doc]
on notations (#9942)
Make all the notations that unambiguously should inherit the docstring of their definition actually inherit it.
Also write a few docstrings by hand. I only wrote the ones I was competent to write and which I was sure of. Some docstrings come from mathlib3 as they were lost during the early port.
This PR is only intended as a first pass There are many more docstrings to add.
@@ -387,8 +387,12 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd where
rfl
#align fundamental_groupoid.fundamental_groupoid_functor FundamentalGroupoid.fundamentalGroupoidFunctor
-scoped notation "π" => FundamentalGroupoid.fundamentalGroupoidFunctor
+@[inherit_doc] scoped notation "π" => FundamentalGroupoid.fundamentalGroupoidFunctor
+
+/-- The fundamental groupoid of a topological space. -/
scoped notation "πₓ" => FundamentalGroupoid.fundamentalGroupoidFunctor.obj
+
+/-- The functor between fundamental groupoids induced by a continuous map. -/
scoped notation "πₘ" => FundamentalGroupoid.fundamentalGroupoidFunctor.map
theorem map_eq {X Y : TopCat} {x₀ x₁ : X} (f : C(X, Y)) (p : Path.Homotopic.Quotient x₀ x₁) :
@@ -114,7 +114,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from the constant path based at `x₁` to
`p.symm.trans p`. -/
def reflSymmTrans (p : Path x₀ x₁) : Homotopy (Path.refl x₁) (p.symm.trans p) :=
- (reflTransSymm p.symm).cast rfl <| congr_arg _ Path.symm_symm
+ (reflTransSymm p.symm).cast rfl <| congr_arg _ (Path.symm_symm _)
#align path.homotopy.refl_symm_trans Path.Homotopy.reflSymmTrans
end
@@ -266,35 +266,77 @@ end Homotopy
end Path
-/-- The fundamental groupoid of a space `X` is defined to be a type synonym for `X`, and we
+/-- The fundamental groupoid of a space `X` is defined to be a wrapper around `X`, and we
subsequently put a `CategoryTheory.Groupoid` structure on it. -/
-def FundamentalGroupoid (X : Type u) := X
+@[ext]
+structure FundamentalGroupoid (X : Type u) where
+ /-- View a term of `FundamentalGroupoid X` as a term of `X`.-/
+ as : X
#align fundamental_groupoid FundamentalGroupoid
namespace FundamentalGroupoid
-instance {X : Type u} [h : Inhabited X] : Inhabited (FundamentalGroupoid X) := h
-
-attribute [reducible] FundamentalGroupoid
+/-- The equivalence between `X` and the underlying type of its fundamental groupoid.
+ This is useful for transferring constructions (instances, etc.)
+ from `X` to `πₓ X`. -/
+@[simps]
+def equiv (X : Type*) : FundamentalGroupoid X ≃ X where
+ toFun x := x.as
+ invFun x := .mk x
+ left_inv _ := rfl
+ right_inv _ := rfl
+
+@[simp]
+lemma isEmpty_iff (X : Type*) :
+ IsEmpty (FundamentalGroupoid X) ↔ IsEmpty X :=
+ equiv _ |>.isEmpty_congr
+
+instance (X : Type*) [IsEmpty X] :
+ IsEmpty (FundamentalGroupoid X) :=
+ equiv _ |>.isEmpty
+
+@[simp]
+lemma nonempty_iff (X : Type*) :
+ Nonempty (FundamentalGroupoid X) ↔ Nonempty X :=
+ equiv _ |>.nonempty_congr
+
+instance (X : Type*) [Nonempty X] :
+ Nonempty (FundamentalGroupoid X) :=
+ equiv _ |>.nonempty
+
+@[simp]
+lemma subsingleton_iff (X : Type*) :
+ Subsingleton (FundamentalGroupoid X) ↔ Subsingleton X :=
+ equiv _ |>.subsingleton_congr
+
+instance (X : Type*) [Subsingleton X] :
+ Subsingleton (FundamentalGroupoid X) :=
+ equiv _ |>.subsingleton
+
+-- TODO: It seems that `Equiv.nontrivial_congr` doesn't exist.
+-- Once it is added, please add the corresponding lemma and instance.
+
+instance {X : Type u} [Inhabited X] : Inhabited (FundamentalGroupoid X) :=
+ ⟨⟨default⟩⟩
attribute [local instance] Path.Homotopic.setoid
instance : CategoryTheory.Groupoid (FundamentalGroupoid X) where
- Hom x y := Path.Homotopic.Quotient x y
- id x := ⟦Path.refl x⟧
+ Hom x y := Path.Homotopic.Quotient x.as y.as
+ id x := ⟦Path.refl x.as⟧
comp {x y z} := Path.Homotopic.Quotient.comp
id_comp {x y} f :=
Quotient.inductionOn f fun a =>
- show ⟦(Path.refl x).trans a⟧ = ⟦a⟧ from Quotient.sound ⟨Path.Homotopy.reflTrans a⟩
+ show ⟦(Path.refl x.as).trans a⟧ = ⟦a⟧ from Quotient.sound ⟨Path.Homotopy.reflTrans a⟩
comp_id {x y} f :=
Quotient.inductionOn f fun a =>
- show ⟦a.trans (Path.refl y)⟧ = ⟦a⟧ from Quotient.sound ⟨Path.Homotopy.transRefl a⟩
+ show ⟦a.trans (Path.refl y.as)⟧ = ⟦a⟧ from Quotient.sound ⟨Path.Homotopy.transRefl a⟩
assoc {w x y z} f g h :=
Quotient.inductionOn₃ f g h fun p q r =>
show ⟦(p.trans q).trans r⟧ = ⟦p.trans (q.trans r)⟧ from
Quotient.sound ⟨Path.Homotopy.transAssoc p q r⟩
inv {x y} p :=
- Quotient.lift (fun l : Path x y => ⟦l.symm⟧)
+ Quotient.lift (fun l : Path x.as y.as => ⟦l.symm⟧)
(by
rintro a b ⟨h⟩
simp only
@@ -303,24 +345,24 @@ instance : CategoryTheory.Groupoid (FundamentalGroupoid X) where
p
inv_comp {x y} f :=
Quotient.inductionOn f fun a =>
- show ⟦a.symm.trans a⟧ = ⟦Path.refl y⟧ from
+ show ⟦a.symm.trans a⟧ = ⟦Path.refl y.as⟧ from
Quotient.sound ⟨(Path.Homotopy.reflSymmTrans a).symm⟩
comp_inv {x y} f :=
Quotient.inductionOn f fun a =>
- show ⟦a.trans a.symm⟧ = ⟦Path.refl x⟧ from
+ show ⟦a.trans a.symm⟧ = ⟦Path.refl x.as⟧ from
Quotient.sound ⟨(Path.Homotopy.reflTransSymm a).symm⟩
theorem comp_eq (x y z : FundamentalGroupoid X) (p : x ⟶ y) (q : y ⟶ z) : p ≫ q = p.comp q := rfl
#align fundamental_groupoid.comp_eq FundamentalGroupoid.comp_eq
-theorem id_eq_path_refl (x : FundamentalGroupoid X) : 𝟙 x = ⟦Path.refl x⟧ := rfl
+theorem id_eq_path_refl (x : FundamentalGroupoid X) : 𝟙 x = ⟦Path.refl x.as⟧ := rfl
#align fundamental_groupoid.id_eq_path_refl FundamentalGroupoid.id_eq_path_refl
/-- The functor sending a topological space `X` to its fundamental groupoid. -/
def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd where
obj X := { α := FundamentalGroupoid X }
map f :=
- { obj := f
+ { obj := fun x => ⟨f x.as⟩
map := fun {X Y} p => by exact Path.Homotopic.Quotient.mapFn p f
map_id := fun X => rfl
map_comp := fun {x y z} p q => by
@@ -356,26 +398,29 @@ theorem map_eq {X Y : TopCat} {x₀ x₁ : X} (f : C(X, Y)) (p : Path.Homotopic.
/-- Help the typechecker by converting a point in a groupoid back to a point in
the underlying topological space. -/
@[reducible]
-def toTop {X : TopCat} (x : πₓ X) : X := x
+def toTop {X : TopCat} (x : πₓ X) : X := x.as
#align fundamental_groupoid.to_top FundamentalGroupoid.toTop
/-- Help the typechecker by converting a point in a topological space to a
point in the fundamental groupoid of that space. -/
@[reducible]
-def fromTop {X : TopCat} (x : X) : πₓ X := x
+def fromTop {X : TopCat} (x : X) : πₓ X := ⟨x⟩
#align fundamental_groupoid.from_top FundamentalGroupoid.fromTop
/-- Help the typechecker by converting an arrow in the fundamental groupoid of
a topological space back to a path in that space (i.e., `Path.Homotopic.Quotient`). -/
-- Porting note: Added `(X := X)` to the type.
@[reducible]
-def toPath {X : TopCat} {x₀ x₁ : πₓ X} (p : x₀ ⟶ x₁) : Path.Homotopic.Quotient (X := X) x₀ x₁ := p
+def toPath {X : TopCat} {x₀ x₁ : πₓ X} (p : x₀ ⟶ x₁) :
+ Path.Homotopic.Quotient (X := X) x₀.as x₁.as :=
+ p
#align fundamental_groupoid.to_path FundamentalGroupoid.toPath
/-- Help the typechecker by converting a path in a topological space to an arrow in the
fundamental groupoid of that space. -/
@[reducible]
-def fromPath {X : TopCat} {x₀ x₁ : X} (p : Path.Homotopic.Quotient x₀ x₁) : x₀ ⟶ x₁ := p
+def fromPath {X : TopCat} {x₀ x₁ : X} (p : Path.Homotopic.Quotient x₀ x₁) :
+ FundamentalGroupoid.mk x₀ ⟶ FundamentalGroupoid.mk x₁ := p
#align fundamental_groupoid.from_path FundamentalGroupoid.fromPath
end FundamentalGroupoid
@@ -324,8 +324,10 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd where
map := fun {X Y} p => by exact Path.Homotopic.Quotient.mapFn p f
map_id := fun X => rfl
map_comp := fun {x y z} p q => by
- refine' Quotient.inductionOn₂ p q fun a b => _
- simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans] }
+ refine Quotient.inductionOn₂ p q fun a b => ?_
+ simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans]
+ -- This was not needed before leanprover/lean4#2644
+ erw [ ← Path.Homotopic.comp_lift]; rfl}
map_id X := by
simp only
change _ = (⟨_, _, _⟩ : FundamentalGroupoid X ⥤ FundamentalGroupoid X)
@@ -324,10 +324,8 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd where
map := fun {X Y} p => by exact Path.Homotopic.Quotient.mapFn p f
map_id := fun X => rfl
map_comp := fun {x y z} p q => by
- refine Quotient.inductionOn₂ p q fun a b => ?_
- simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans]
- -- This was not needed before leanprover/lean4#2644
- erw [ ← Path.Homotopic.comp_lift]; rfl}
+ refine' Quotient.inductionOn₂ p q fun a b => _
+ simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans] }
map_id X := by
simp only
change _ = (⟨_, _, _⟩ : FundamentalGroupoid X ⥤ FundamentalGroupoid X)
@@ -324,8 +324,10 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd where
map := fun {X Y} p => by exact Path.Homotopic.Quotient.mapFn p f
map_id := fun X => rfl
map_comp := fun {x y z} p q => by
- refine' Quotient.inductionOn₂ p q fun a b => _
- simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans] }
+ refine Quotient.inductionOn₂ p q fun a b => ?_
+ simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans]
+ -- This was not needed before leanprover/lean4#2644
+ erw [ ← Path.Homotopic.comp_lift]; rfl}
map_id X := by
simp only
change _ = (⟨_, _, _⟩ : FundamentalGroupoid X ⥤ FundamentalGroupoid X)
norm_num
was passing the wrong syntax node to elabSimpArgs
when elaborating, which essentially had the effect of ignoring all arguments it was passed, i.e. norm_num [add_comm]
would not try to commute addition in the simp step.
The fix itself is very simple (though not obvious to debug!), probably using TSyntax more would help avoid such issues in future.
Due to this bug many norm_num [blah]
became rw [blah]; norm_num
or similar, sometimes with porting notes, sometimes not, we fix these porting notes and other regressions during the port also.
Interestingly cancel_denoms
uses norm_num [<- mul_assoc]
internally, so cancel_denoms
also got stronger with this change.
@@ -50,9 +50,7 @@ theorem continuous_reflTransSymmAux : Continuous reflTransSymmAux := by
· continuity
· continuity
intro x hx
- -- Porting note: norm_num ignores arguments.
- rw [hx, mul_assoc]
- norm_num
+ norm_num [hx, mul_assoc]
#align path.homotopy.continuous_refl_trans_symm_aux Path.Homotopy.continuous_reflTransSymmAux
theorem reflTransSymmAux_mem_I (x : I × I) : reflTransSymmAux x ∈ I := by
@@ -100,9 +98,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
· simp only [Set.Icc.coe_one, one_mul, coe_mk_mk, Function.comp_apply]
congr 1
ext
- -- Porting note: norm_num ignores arguments.
- simp [sub_sub_eq_add_sub]
- norm_num
+ norm_num [sub_sub_eq_add_sub]
· rw [unitInterval.two_mul_sub_one_mem_iff]
exact ⟨(not_le.1 h).le, unitInterval.le_one x⟩
prop' t x hx := by
@@ -112,9 +108,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
| inl hx
| inr hx =>
rw [hx]
- simp only [reflTransSymmAux, Set.Icc.coe_zero, Set.Icc.coe_one, one_div, mul_one,
- inv_nonneg, mul_zero, sub_zero, sub_self, Path.source, Path.target, and_self]
- norm_num
+ norm_num [reflTransSymmAux]
#align path.homotopy.refl_trans_symm Path.Homotopy.reflTransSymm
/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from the constant path based at `x₁` to
@@ -137,7 +131,6 @@ theorem continuous_transReflReparamAux : Continuous transReflReparamAux := by
refine' continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _) _ <;>
[continuity; continuity; continuity; continuity; skip]
intro x hx
- -- Porting note: norm_num ignores arguments.
simp [hx]
#align path.homotopy.continuous_trans_refl_reparam_aux Path.Homotopy.continuous_transReflReparamAux
@@ -148,15 +141,11 @@ set_option linter.uppercaseLean3 false in
#align path.homotopy.trans_refl_reparam_aux_mem_I Path.Homotopy.transReflReparamAux_mem_I
theorem transReflReparamAux_zero : transReflReparamAux 0 = 0 := by
- -- Porting note: norm_num ignores arguments.
- simp [transReflReparamAux]
- norm_num
+ norm_num [transReflReparamAux]
#align path.homotopy.trans_refl_reparam_aux_zero Path.Homotopy.transReflReparamAux_zero
theorem transReflReparamAux_one : transReflReparamAux 1 = 1 := by
- -- Porting note: norm_num ignores arguments.
- simp [transReflReparamAux]
- norm_num
+ norm_num [transReflReparamAux]
#align path.homotopy.trans_refl_reparam_aux_one Path.Homotopy.transReflReparamAux_one
theorem trans_refl_reparam (p : Path x₀ x₁) :
@@ -203,9 +192,7 @@ theorem continuous_transAssocReparamAux : Continuous transAssocReparamAux := by
[continuity; continuity; continuity; continuity; continuity; continuity; continuity; skip;
skip] <;>
· intro x hx
- -- Porting note: norm_num ignores arguments.
- simp [hx]
- norm_num
+ norm_num [hx]
#align path.homotopy.continuous_trans_assoc_reparam_aux Path.Homotopy.continuous_transAssocReparamAux
theorem transAssocReparamAux_mem_I (t : I) : transAssocReparamAux t ∈ I := by
@@ -215,15 +202,11 @@ set_option linter.uppercaseLean3 false in
#align path.homotopy.trans_assoc_reparam_aux_mem_I Path.Homotopy.transAssocReparamAux_mem_I
theorem transAssocReparamAux_zero : transAssocReparamAux 0 = 0 := by
- -- Porting note: norm_num ignores arguments.
- simp [transAssocReparamAux]
- norm_num
+ norm_num [transAssocReparamAux]
#align path.homotopy.trans_assoc_reparam_aux_zero Path.Homotopy.transAssocReparamAux_zero
theorem transAssocReparamAux_one : transAssocReparamAux 1 = 1 := by
- -- Porting note: norm_num ignores arguments.
- simp [transAssocReparamAux]
- norm_num
+ norm_num [transAssocReparamAux]
#align path.homotopy.trans_assoc_reparam_aux_one Path.Homotopy.transAssocReparamAux_one
theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q : Path x₁ x₂) (r : Path x₂ x₃) :
@@ -264,8 +264,7 @@ theorem trans_assoc_reparam {x₀ x₁ x₂ x₃ : X} (p : Path x₀ x₁) (q :
linarith
· exfalso
linarith
- · simp only [h₁, if_false, dif_neg (show ¬False from id)]
- congr
+ · congr
ring
#align path.homotopy.trans_assoc_reparam Path.Homotopy.trans_assoc_reparam
@@ -2,17 +2,14 @@
Copyright (c) 2021 Shing Tak Lam. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Shing Tak Lam
-
-! This file was ported from Lean 3 source module algebraic_topology.fundamental_groupoid.basic
-! leanprover-community/mathlib commit 3d7987cda72abc473c7cdbbb075170e9ac620042
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Category.Grpd
import Mathlib.CategoryTheory.Groupoid
import Mathlib.Topology.Category.TopCat.Basic
import Mathlib.Topology.Homotopy.Path
+#align_import algebraic_topology.fundamental_groupoid.basic from "leanprover-community/mathlib"@"3d7987cda72abc473c7cdbbb075170e9ac620042"
+
/-!
# Fundamental groupoid of a space
Make sure in particular one can import Mathlib.Tactic for teaching without getting category theory notations in scope. Note that only two files needed an extra open.
@@ -22,6 +22,7 @@ homotopy equivalence. With this, the fundamental group of `X` based at `x` is ju
group of `x`.
-/
+open CategoryTheory
universe u v
@@ -345,8 +345,7 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd where
map_id := fun X => rfl
map_comp := fun {x y z} p q => by
refine' Quotient.inductionOn₂ p q fun a b => _
- simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans]
- rfl }
+ simp only [comp_eq, ← Path.Homotopic.map_lift, ← Path.Homotopic.comp_lift, Path.map_trans] }
map_id X := by
simp only
change _ = (⟨_, _, _⟩ : FundamentalGroupoid X ⥤ FundamentalGroupoid X)
I ran codespell Mathlib
and got tired halfway through the suggestions.
@@ -391,7 +391,7 @@ a topological space back to a path in that space (i.e., `Path.Homotopic.Quotient
def toPath {X : TopCat} {x₀ x₁ : πₓ X} (p : x₀ ⟶ x₁) : Path.Homotopic.Quotient (X := X) x₀ x₁ := p
#align fundamental_groupoid.to_path FundamentalGroupoid.toPath
-/-- Help the typechecker by convering a path in a topological space to an arrow in the
+/-- Help the typechecker by converting a path in a topological space to an arrow in the
fundamental groupoid of that space. -/
@[reducible]
def fromPath {X : TopCat} {x₀ x₁ : X} (p : Path.Homotopic.Quotient x₀ x₁) : x₀ ⟶ x₁ := p
@@ -50,8 +50,7 @@ theorem continuous_reflTransSymmAux : Continuous reflTransSymmAux := by
· continuity
· continuity
· continuity
- · -- Porting note: was `continuity`
- refine Continuous.mul ?_ (Continuous.sub ?_ ?_) <;> continuity
+ · continuity
intro x hx
-- Porting note: norm_num ignores arguments.
rw [hx, mul_assoc]
@@ -365,13 +364,8 @@ def fundamentalGroupoidFunctor : TopCat ⥤ CategoryTheory.Grpd where
rfl
#align fundamental_groupoid.fundamental_groupoid_functor FundamentalGroupoid.fundamentalGroupoidFunctor
--- mathport name: fundamental_groupoid_functor
scoped notation "π" => FundamentalGroupoid.fundamentalGroupoidFunctor
-
--- mathport name: fundamental_groupoid_functor.obj
scoped notation "πₓ" => FundamentalGroupoid.fundamentalGroupoidFunctor.obj
-
--- mathport name: fundamental_groupoid_functor.map
scoped notation "πₘ" => FundamentalGroupoid.fundamentalGroupoidFunctor.map
theorem map_eq {X Y : TopCat} {x₀ x₁ : X} (f : C(X, Y)) (p : Path.Homotopic.Quotient x₀ x₁) :
fix-comments.py
on all files.@@ -176,7 +176,7 @@ theorem trans_refl_reparam (p : Path x₀ x₁) :
· simp
#align path.homotopy.trans_refl_reparam Path.Homotopy.trans_refl_reparam
-/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from `p.trans (path.refl x₁)` to `p`. -/
+/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from `p.trans (Path.refl x₁)` to `p`. -/
def transRefl (p : Path x₀ x₁) : Homotopy (p.trans (Path.refl x₁)) p :=
((Homotopy.reparam p (fun t => ⟨transReflReparamAux t, transReflReparamAux_mem_I t⟩)
(by continuity) (Subtype.ext transReflReparamAux_zero)
The main breaking change is that tac <;> [t1, t2]
is now written tac <;> [t1; t2]
, to avoid clashing with tactics like cases
and use
that take comma-separated lists.
@@ -138,7 +138,7 @@ def transReflReparamAux (t : I) : ℝ :=
@[continuity]
theorem continuous_transReflReparamAux : Continuous transReflReparamAux := by
refine' continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _) _ <;>
- [continuity, continuity, continuity, continuity, skip]
+ [continuity; continuity; continuity; continuity; skip]
intro x hx
-- Porting note: norm_num ignores arguments.
simp [hx]
@@ -203,7 +203,7 @@ theorem continuous_transAssocReparamAux : Continuous transAssocReparamAux := by
refine' continuous_if_le _ _ (Continuous.continuousOn _)
(continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _) _).continuousOn
_ <;>
- [continuity, continuity, continuity, continuity, continuity, continuity, continuity, skip,
+ [continuity; continuity; continuity; continuity; continuity; continuity; continuity; skip;
skip] <;>
· intro x hx
-- Porting note: norm_num ignores arguments.
@@ -10,7 +10,7 @@ Authors: Shing Tak Lam
-/
import Mathlib.CategoryTheory.Category.Grpd
import Mathlib.CategoryTheory.Groupoid
-import Mathlib.Topology.Category.Top.Basic
+import Mathlib.Topology.Category.TopCat.Basic
import Mathlib.Topology.Homotopy.Path
/-!
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file