Commit 2023-03-23 16:06 fa9ff1ab

View on Github →

feat: port Topology.PathConnected (#2755) The major thing to note is that I have replaced the CoeFun instance (which was p ↦ p.toContinuousMap.toFun) with FunLike.coe, but previously Path did not have a FunLike instance, so I have added a ContinuousMapClass instance. These are defeq. This also meant there would have been two coercions from Path x y to C(I, X), namely, the one which was originally declared in this file (:= p ↦ p.toContinuousMap) and the one inherited from ContinuousMapClass. As a result I have opted for the deleting the former in favor of the latter. These are not definitionally equal, but with the rewrite lemmas in place, there seem to be no real issues. Note: the biggest reason for switching to FunLike was that the previous coercions were causing absolute hell early in the file with timeouts. If you want to see what I mean, checkout an early commit and attempt to start fixing.

Estimated changes

added theorem Continuous.path_eval
added theorem Continuous.path_extend
added theorem Continuous.path_trans
added theorem IsPathConnected.image
added theorem IsPathConnected.union
added def IsPathConnected
added theorem Joined.refl
added def Joined.somePath
added theorem Joined.symm
added theorem Joined.trans
added def Joined
added theorem JoinedIn.joined
added theorem JoinedIn.mem
added theorem JoinedIn.mono
added theorem JoinedIn.ofLine
added theorem JoinedIn.refl
added theorem JoinedIn.somePath_mem
added theorem JoinedIn.source_mem
added theorem JoinedIn.symm
added theorem JoinedIn.target_mem
added theorem JoinedIn.trans
added def JoinedIn
added def Path.cast
added theorem Path.cast_coe
added theorem Path.coe_mk
added theorem Path.coe_mk_mk
added theorem Path.coe_reparam
added theorem Path.continuous_eval
added theorem Path.continuous_extend
added theorem Path.continuous_symm
added theorem Path.continuous_trans
added def Path.extend
added theorem Path.extend_extends'
added theorem Path.extend_extends
added theorem Path.extend_of_le_zero
added theorem Path.extend_of_one_le
added theorem Path.extend_one
added theorem Path.extend_range
added theorem Path.extend_zero
added def Path.map
added theorem Path.map_coe
added theorem Path.map_id
added theorem Path.map_map
added theorem Path.map_symm
added theorem Path.map_trans
added def Path.ofLine
added theorem Path.ofLine_mem
added theorem Path.pi_coe
added theorem Path.prod_coe
added theorem Path.range_reparam
added def Path.refl
added theorem Path.refl_extend
added theorem Path.refl_range
added theorem Path.refl_reparam
added theorem Path.refl_symm
added theorem Path.refl_trans_refl
added def Path.reparam
added theorem Path.reparam_id
added def Path.simps.apply
added def Path.symm
added theorem Path.symm_cast
added theorem Path.symm_range
added theorem Path.symm_symm
added def Path.trans
added theorem Path.trans_apply
added theorem Path.trans_cast
added theorem Path.trans_range
added theorem Path.trans_symm
added def Path.truncate
added theorem Path.truncate_one_one
added theorem Path.truncate_range
added theorem Path.truncate_self
added theorem Path.truncate_zero_one
added structure Path
added def ZerothHomotopy
added theorem isPathConnected_iff
added theorem isPathConnected_iff_eq
added theorem joinedIn_iff_joined
added theorem joinedIn_univ
added theorem mem_pathComponent_self
added theorem pathComponent.nonempty
added def pathComponent
added def pathComponentIn
added theorem pathComponentIn_univ
added theorem pathComponent_congr
added theorem pathComponent_symm
added def pathSetoid