@@ -66,7 +66,7 @@ instance Path.instFunLike : FunLike (Path x y) I X where
6666instance Path.continuousMapClass : ContinuousMapClass (Path x y) I X where
6767 map_continuous γ := show Continuous γ.toContinuousMap by fun_prop
6868
69- @[ext]
69+ @[ext, grind ext ]
7070protected theorem Path.ext : ∀ {γ₁ γ₂ : Path x y}, (γ₁ : I → X) = γ₂ → γ₁ = γ₂ := by
7171 rintro ⟨⟨x, h11⟩, h12, h13⟩ ⟨⟨x, h21⟩, h22, h23⟩ rfl
7272 rfl
@@ -87,11 +87,11 @@ variable (γ : Path x y)
8787protected theorem continuous : Continuous γ :=
8888 γ.continuous_toFun
8989
90- @[simp]
90+ @[simp, grind = ]
9191protected theorem source : γ 0 = x :=
9292 γ.source'
9393
94- @[simp]
94+ @[simp, grind = ]
9595protected theorem target : γ 1 = y :=
9696 γ.target'
9797
@@ -123,16 +123,16 @@ instance instHasUncurryPath {α : Type*} {x y : α → X} :
123123 HasUncurry (∀ a : α, Path (x a) (y a)) (α × I) X :=
124124 ⟨fun φ p => φ p.1 p.2 ⟩
125125
126- @[simp high]
126+ @[simp high, grind! . ]
127127lemma source_mem_range (γ : Path x y) : x ∈ range ⇑γ :=
128128 ⟨0 , Path.source γ⟩
129129
130- @[simp high]
130+ @[simp high, grind! . ]
131131lemma target_mem_range (γ : Path x y) : y ∈ range ⇑γ :=
132132 ⟨1 , Path.target γ⟩
133133
134134/-- The constant path from a point to itself -/
135- @[refl, simps!]
135+ @[refl, simps! (attr := grind =) ]
136136def refl (x : X) : Path x x where
137137 toContinuousMap := .const I x
138138 source' := rfl
@@ -142,18 +142,15 @@ def refl (x : X) : Path x x where
142142theorem refl_range {a : X} : range (Path.refl a) = {a} := range_const
143143
144144/-- The reverse of a path from `x` to `y`, as a path from `y` to `x` -/
145- @[symm, simps]
145+ @[symm, simps (attr := grind =) ]
146146def symm (γ : Path x y) : Path y x where
147147 toFun := γ ∘ σ
148148 continuous_toFun := by fun_prop
149149 source' := by simp
150150 target' := by simp
151151
152152@[simp]
153- theorem symm_symm (γ : Path x y) : γ.symm.symm = γ := by
154- ext t
155- change γ (σ (σ t)) = γ t
156- rw [unitInterval.symm_symm]
153+ theorem symm_symm (γ : Path x y) : γ.symm.symm = γ := by grind
157154
158155theorem symm_bijective : Function.Bijective (Path.symm : Path x y → Path y x) :=
159156 Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
@@ -218,11 +215,14 @@ theorem _root_.ContinuousAt.pathExtend {g : Y → ℝ} {l r : Y → X} (γ : ∀
218215@[deprecated (since := "2025-05-02")]
219216alias _root_.ContinuousAt.path_extend := ContinuousAt.pathExtend
220217
221- @[simp]
222- theorem extend_extends {a b : X} (γ : Path a b) {t : ℝ}
218+ @[simp, grind = ]
219+ theorem extend_apply {a b : X} (γ : Path a b) {t : ℝ}
223220 (ht : t ∈ (Icc 0 1 : Set ℝ)) : γ.extend t = γ ⟨t, ht⟩ :=
224221 IccExtend_of_mem _ γ ht
225222
223+ @[deprecated (since := "2025-11-05")]
224+ alias extend_extends := extend_apply
225+
226226theorem extend_zero : γ.extend 0 = x := by simp
227227
228228theorem extend_one : γ.extend 1 = y := by simp
@@ -289,11 +289,12 @@ def trans (γ : Path x y) (γ' : Path y z) : Path x z where
289289 source' := by simp
290290 target' := by norm_num
291291
292+ @[grind =]
292293theorem trans_apply (γ : Path x y) (γ' : Path y z) (t : I) :
293294 (γ.trans γ') t =
294295 if h : (t : ℝ) ≤ 1 / 2 then γ ⟨2 * t, (mul_pos_mem_iff zero_lt_two).2 ⟨t.2 .1 , h⟩⟩
295296 else γ' ⟨2 * t - 1 , two_mul_sub_one_mem_iff.2 ⟨(not_le.1 h).le, t.2 .2 ⟩⟩ :=
296- show ite _ _ _ = _ by split_ifs <;> rw [extend_extends ]
297+ show ite _ _ _ = _ by split_ifs <;> rw [extend_apply ]
297298
298299@[simp]
299300theorem trans_symm (γ : Path x y) (γ' : Path y z) : (γ.trans γ').symm = γ'.symm.trans γ.symm := by
@@ -314,7 +315,7 @@ theorem extend_trans_of_le_half (γ₁ : Path x y) (γ₂ : Path y z) {t : ℝ}
314315 (γ₁.trans γ₂).extend t = γ₁.extend (2 * t) := by
315316 obtain _ | ht₀ := le_total t 0
316317 · repeat rw [extend_of_le_zero _ (by linarith)]
317- · rwa [extend_extends _ ⟨ht₀, by linarith⟩, trans_apply, dif_pos, extend_extends ]
318+ · rwa [extend_apply _ ⟨ht₀, by linarith⟩, trans_apply, dif_pos, extend_apply ]
318319
319320theorem extend_trans_of_half_le (γ₁ : Path x y) (γ₂ : Path y z) {t : ℝ} (ht : 1 / 2 ≤ t) :
320321 (γ₁.trans γ₂).extend t = γ₂.extend (2 * t - 1 ) := by
@@ -349,7 +350,7 @@ def map' (γ : Path x y) {f : X → Y} (h : ContinuousOn f (range γ)) : Path (f
349350def map (γ : Path x y) {f : X → Y} (h : Continuous f) :
350351 Path (f x) (f y) := γ.map' h.continuousOn
351352
352- @[simp]
353+ @[simp, grind = ]
353354theorem map_coe (γ : Path x y) {f : X → Y} (h : Continuous f) :
354355 (γ.map h : I → Y) = f ∘ γ := by
355356 ext t
@@ -364,8 +365,8 @@ theorem map_symm (γ : Path x y) {f : X → Y} (h : Continuous f) :
364365theorem map_trans (γ : Path x y) (γ' : Path y z) {f : X → Y}
365366 (h : Continuous f) : (γ.trans γ').map h = (γ.map h).trans (γ'.map h) := by
366367 ext t
367- rw [trans_apply, map_coe, Function.comp_apply, trans_apply]
368- split_ifs <;> rfl
368+ rw [trans_apply, map_coe, Function.comp_apply, trans_apply, map_coe, map_coe ]
369+ grind
369370
370371@[simp]
371372theorem map_id (γ : Path x y) : γ.map continuous_id = γ := by
@@ -478,19 +479,18 @@ protected def prod (γ₁ : Path a₁ a₂) (γ₂ : Path b₁ b₂) : Path (a
478479 source' := by simp
479480 target' := by simp
480481
481- @[simp]
482+ @[simp, grind = ]
482483theorem prod_coe (γ₁ : Path a₁ a₂) (γ₂ : Path b₁ b₂) :
483484 ⇑(γ₁.prod γ₂) = fun t => (γ₁ t, γ₂ t) :=
484485 rfl
485486
486487/-- Path composition commutes with products -/
487488theorem trans_prod_eq_prod_trans (γ₁ : Path a₁ a₂) (δ₁ : Path a₂ a₃) (γ₂ : Path b₁ b₂)
488489 (δ₂ : Path b₂ b₃) : (γ₁.prod γ₂).trans (δ₁.prod δ₂) = (γ₁.trans δ₁).prod (γ₂.trans δ₂) := by
490+ unfold Path.trans
489491 ext t <;>
490- unfold Path.trans <;>
491- simp only [Path.coe_mk_mk, Path.prod_coe, Function.comp_apply] <;>
492- split_ifs <;>
493- rfl
492+ · simp only [Path.coe_mk_mk, Path.prod_coe]
493+ grind
494494
495495end Prod
496496
@@ -505,7 +505,7 @@ protected def pi (γ : ∀ i, Path (as i) (bs i)) : Path as bs where
505505 source' := by simp
506506 target' := by simp
507507
508- @[simp]
508+ @[simp, grind = ]
509509theorem pi_coe (γ : ∀ i, Path (as i) (bs i)) : ⇑(Path.pi γ) = fun t i => γ i t :=
510510 rfl
511511
@@ -515,7 +515,9 @@ theorem trans_pi_eq_pi_trans (γ₀ : ∀ i, Path (as i) (bs i)) (γ₁ : ∀ i,
515515 ext t i
516516 unfold Path.trans
517517 simp only [Path.coe_mk_mk, Function.comp_apply, pi_coe]
518- split_ifs <;> rfl
518+ split_ifs
519+ · rfl
520+ · rfl
519521
520522end Pi
521523
0 commit comments