Skip to content

Commit 2ccecc0

Browse files
committed
feat(Topology/Path): prove Path.extend_symm (#23980)
1 parent b748741 commit 2ccecc0

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

Mathlib/Order/Interval/Set/ProjIcc.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ theorem projIic_of_le (hx : b ≤ x) : projIic b x = ⟨b, le_rfl⟩ := Subtype.
6262
theorem projIcc_of_le_left (hx : x ≤ a) : projIcc a b h x = ⟨a, left_mem_Icc.2 h⟩ := by
6363
simp [projIcc, hx, hx.trans h]
6464

65-
6665
theorem projIcc_of_right_le (hx : b ≤ x) : projIcc a b h x = ⟨b, right_mem_Icc.2 h⟩ := by
6766
simp [projIcc, hx, h]
6867

Mathlib/Topology/Path.lean

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,8 @@ theorem refl_symm {a : X} : (Path.refl a).symm = Path.refl a := by
146146
rfl
147147

148148
@[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 γ
156151

157152
/-! #### Space of paths -/
158153

@@ -227,6 +222,13 @@ theorem extend_of_one_le {a b : X} (γ : Path a b) {t : ℝ}
227222
theorem refl_extend {a : X} : (Path.refl a).extend = fun _ => a :=
228223
rfl
229224

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+
230232
/-- The path obtained from a map defined on `ℝ` by restriction to the unit interval. -/
231233
def ofLine {f : ℝ → X} (hf : ContinuousOn f I) (h₀ : f 0 = x) (h₁ : f 1 = y) : Path x y where
232234
toFun := f ∘ ((↑) : unitInterval → ℝ)
@@ -237,6 +239,11 @@ def ofLine {f : ℝ → X} (hf : ContinuousOn f I) (h₀ : f 0 = x) (h₁ : f 1
237239
theorem ofLine_mem {f : ℝ → X} (hf : ContinuousOn f I) (h₀ : f 0 = x) (h₁ : f 1 = y) :
238240
∀ t, ofLine hf h₀ h₁ t ∈ f '' I := fun ⟨t, t_in⟩ => ⟨t, t_in, rfl⟩
239241

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+
240247
attribute [local simp] Iic_def
241248

242249
/-- Concatenation of two paths from `x` to `y` and from `y` to `z`, putting the first

Mathlib/Topology/UnitInterval.lean

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,17 @@ theorem symm_bijective : Function.Bijective (symm : I → I) := symm_involutive.
107107
theorem coe_symm_eq (x : I) : (σ x : ℝ) = 1 - x :=
108108
rfl
109109

110+
@[simp]
111+
theorem symm_projIcc (x : ℝ) :
112+
symm (projIcc 0 1 zero_le_one x) = projIcc 0 1 zero_le_one (1 - x) := by
113+
ext
114+
rcases le_total x 0 with h₀ | h₀
115+
· simp [projIcc_of_le_left, projIcc_of_right_le, h₀]
116+
· rcases le_total x 1 with h₁ | h₁
117+
· lift x to I using ⟨h₀, h₁⟩
118+
simp_rw [← coe_symm_eq, projIcc_val]
119+
· simp [projIcc_of_le_left, projIcc_of_right_le, h₁]
120+
110121
@[continuity, fun_prop]
111122
theorem continuous_symm : Continuous σ :=
112123
Continuous.subtype_mk (by fun_prop) _

0 commit comments

Comments
 (0)