@@ -146,13 +146,8 @@ theorem refl_symm {a : X} : (Path.refl a).symm = Path.refl a := by
146
146
rfl
147
147
148
148
@[simp]
149
- theorem symm_range {a b : X} (γ : Path a b) : range γ.symm = range γ := by
150
- ext x
151
- simp only [mem_range, Path.symm, DFunLike.coe, unitInterval.symm, SetCoe.exists, comp_apply,
152
- Subtype.coe_mk]
153
- constructor <;> rintro ⟨y, hy, hxy⟩ <;> refine ⟨1 - y, mem_iff_one_sub_mem.mp hy, ?_⟩ <;>
154
- convert hxy
155
- simp
149
+ theorem symm_range {a b : X} (γ : Path a b) : range γ.symm = range γ :=
150
+ symm_involutive.surjective.range_comp γ
156
151
157
152
/-! #### Space of paths -/
158
153
@@ -227,6 +222,13 @@ theorem extend_of_one_le {a b : X} (γ : Path a b) {t : ℝ}
227
222
theorem refl_extend {a : X} : (Path.refl a).extend = fun _ => a :=
228
223
rfl
229
224
225
+ theorem extend_symm_apply (γ : Path x y) (t : ℝ) : γ.symm.extend t = γ.extend (1 - t) :=
226
+ congrArg γ <| symm_projIcc _
227
+
228
+ @[simp]
229
+ theorem extend_symm (γ : Path x y) : γ.symm.extend = (γ.extend <| 1 - ·) :=
230
+ funext γ.extend_symm_apply
231
+
230
232
/-- The path obtained from a map defined on `ℝ` by restriction to the unit interval. -/
231
233
def ofLine {f : ℝ → X} (hf : ContinuousOn f I) (h₀ : f 0 = x) (h₁ : f 1 = y) : Path x y where
232
234
toFun := f ∘ ((↑) : unitInterval → ℝ)
@@ -237,6 +239,11 @@ def ofLine {f : ℝ → X} (hf : ContinuousOn f I) (h₀ : f 0 = x) (h₁ : f 1
237
239
theorem ofLine_mem {f : ℝ → X} (hf : ContinuousOn f I) (h₀ : f 0 = x) (h₁ : f 1 = y) :
238
240
∀ t, ofLine hf h₀ h₁ t ∈ f '' I := fun ⟨t, t_in⟩ => ⟨t, t_in, rfl⟩
239
241
242
+ @[simp]
243
+ theorem ofLine_extend (γ : Path x y) : ofLine (by fun_prop) (extend_zero γ) (extend_one γ) = γ := by
244
+ ext t
245
+ simp [ofLine]
246
+
240
247
attribute [local simp] Iic_def
241
248
242
249
/-- Concatenation of two paths from `x` to `y` and from `y` to `z`, putting the first
0 commit comments