analysis.constant_speedMathlib.Analysis.ConstantSpeed

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -180,7 +180,7 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
 #align has_constant_speed_on_with.Icc_Icc HasConstantSpeedOnWith.Icc_Icc
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 #print hasConstantSpeedOnWith_zero_iff /-
 theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
Diff
@@ -106,7 +106,7 @@ theorem hasConstantSpeedOnWith_iff_variationOnFromTo_eq :
   by
   constructor
   · rintro h; refine' ⟨h.has_locally_bounded_variation_on, fun x xs y ys => _⟩
-    rw [hasConstantSpeedOnWith_iff_ordered] at h 
+    rw [hasConstantSpeedOnWith_iff_ordered] at h
     rcases le_total x y with (xy | yx)
     ·
       rw [variationOnFromTo.eq_of_le f s xy, h xs ys xy,
@@ -190,12 +190,12 @@ theorem hasConstantSpeedOnWith_zero_iff :
   constructor
   · by_contra!
     obtain ⟨h, hfs⟩ := this
-    simp_rw [eVariationOn.eq_zero_iff] at hfs h 
-    push_neg at hfs 
+    simp_rw [eVariationOn.eq_zero_iff] at hfs h
+    push_neg at hfs
     obtain ⟨x, xs, y, ys, hxy⟩ := hfs
     rcases le_total x y with (xy | yx)
     · exact hxy (h xs ys x ⟨xs, le_rfl, xy⟩ y ⟨ys, xy, le_rfl⟩)
-    · rw [edist_comm] at hxy 
+    · rw [edist_comm] at hxy
       exact hxy (h ys xs y ⟨ys, le_rfl, yx⟩ x ⟨xs, yx, le_rfl⟩)
   · rintro h x xs y ys
     refine' le_antisymm _ zero_le'
@@ -211,8 +211,8 @@ theorem HasConstantSpeedOnWith.ratio {l' : ℝ≥0} (hl' : l' ≠ 0) {φ : ℝ 
   by
   rintro y ys
   rw [← sub_eq_iff_eq_add, mul_comm, ← mul_div_assoc, eq_div_iff (nnreal.coe_ne_zero.mpr hl')]
-  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hf 
-  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hfφ 
+  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hf
+  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hfφ
   symm
   calc
     (y - x) * l = l * (y - x) := by rw [mul_comm]
@@ -253,7 +253,7 @@ monotonically maps `s` onto `t`, then `φ` is just a translation (on `s`).
 theorem unique_unit_speed {φ : ℝ → ℝ} (φm : MonotoneOn φ s) (hfφ : HasUnitSpeedOn (f ∘ φ) s)
     (hf : HasUnitSpeedOn f (φ '' s)) ⦃x : ℝ⦄ (xs : x ∈ s) : EqOn φ (fun y => y - x + φ x) s :=
   by
-  dsimp only [HasUnitSpeedOn] at hf hfφ 
+  dsimp only [HasUnitSpeedOn] at hf hfφ
   convert HasConstantSpeedOnWith.ratio one_ne_zero φm hfφ hf xs
   simp only [Nonneg.coe_one, div_self, Ne.def, one_ne_zero, not_false_iff, one_mul]
 #align unique_unit_speed unique_unit_speed
@@ -267,7 +267,7 @@ theorem unique_unit_speed_on_Icc_zero {s t : ℝ} (hs : 0 ≤ s) (ht : 0 ≤ t)
     (φm : MonotoneOn φ <| Icc 0 s) (φst : φ '' Icc 0 s = Icc 0 t)
     (hfφ : HasUnitSpeedOn (f ∘ φ) (Icc 0 s)) (hf : HasUnitSpeedOn f (Icc 0 t)) :
     EqOn φ id (Icc 0 s) := by
-  rw [← φst] at hf 
+  rw [← φst] at hf
   convert unique_unit_speed φm hfφ hf ⟨le_rfl, hs⟩
   have : φ 0 = 0 :=
     by
@@ -303,7 +303,7 @@ theorem edist_naturalParameterization_eq_zero {f : α → E} {s : Set α}
   obtain ⟨cs, hc⟩ :=
     @Function.invFunOn_pos _ _ _ s (variationOnFromTo f s a) (variationOnFromTo f s a b)
       ⟨b, bs, rfl⟩
-  rw [variationOnFromTo.eq_left_iff hf as cs bs] at hc 
+  rw [variationOnFromTo.eq_left_iff hf as cs bs] at hc
   apply variationOnFromTo.edist_zero_of_eq_zero hf cs bs hc
 #align edist_natural_parameterization_eq_zero edist_naturalParameterization_eq_zero
 -/
Diff
@@ -188,7 +188,7 @@ theorem hasConstantSpeedOnWith_zero_iff :
   dsimp [HasConstantSpeedOnWith]
   simp only [MulZeroClass.zero_mul, ENNReal.ofReal_zero, ← eVariationOn.eq_zero_iff]
   constructor
-  · by_contra'
+  · by_contra!
     obtain ⟨h, hfs⟩ := this
     simp_rw [eVariationOn.eq_zero_iff] at hfs h 
     push_neg at hfs 
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2023 Rémi Bottinelli. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
 -/
-import Mathbin.Data.Set.Function
-import Mathbin.Analysis.BoundedVariation
-import Mathbin.Tactic.SwapVar
+import Data.Set.Function
+import Analysis.BoundedVariation
+import Tactic.SwapVar
 
 #align_import analysis.constant_speed from "leanprover-community/mathlib"@"1b089e3bdc3ce6b39cd472543474a0a137128c6c"
 
@@ -180,7 +180,7 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
 #align has_constant_speed_on_with.Icc_Icc HasConstantSpeedOnWith.Icc_Icc
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 #print hasConstantSpeedOnWith_zero_iff /-
 theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2023 Rémi Bottinelli. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
-
-! This file was ported from Lean 3 source module analysis.constant_speed
-! leanprover-community/mathlib commit 1b089e3bdc3ce6b39cd472543474a0a137128c6c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Set.Function
 import Mathbin.Analysis.BoundedVariation
 import Mathbin.Tactic.SwapVar
 
+#align_import analysis.constant_speed from "leanprover-community/mathlib"@"1b089e3bdc3ce6b39cd472543474a0a137128c6c"
+
 /-!
 # Constant speed
 
@@ -183,7 +180,7 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
 #align has_constant_speed_on_with.Icc_Icc HasConstantSpeedOnWith.Icc_Icc
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 #print hasConstantSpeedOnWith_zero_iff /-
 theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
 
 ! This file was ported from Lean 3 source module analysis.constant_speed
-! leanprover-community/mathlib commit f0c8bf9245297a541f468be517f1bde6195105e9
+! leanprover-community/mathlib commit 1b089e3bdc3ce6b39cd472543474a0a137128c6c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Tactic.SwapVar
 /-!
 # Constant speed
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This file defines the notion of constant (and unit) speed for a function `f : ℝ → E` with
 pseudo-emetric structure on `E` with respect to a set `s : set ℝ` and "speed" `l : ℝ≥0`, and shows
 that if `f` has locally bounded variation on `s`, it can be obtained (up to distance zero, on `s`),
Diff
@@ -52,20 +52,25 @@ variable {α : Type _} [LinearOrder α] {E : Type _} [PseudoEMetricSpace E]
 
 variable (f : ℝ → E) (s : Set ℝ) (l : ℝ≥0)
 
+#print HasConstantSpeedOnWith /-
 /-- `f` has constant speed `l` on `s` if the variation of `f` on `s ∩ Icc x y` is equal to
 `l * (y - x)` for any `x y` in `s`.
 -/
 def HasConstantSpeedOnWith :=
   ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s), eVariationOn f (s ∩ Icc x y) = ENNReal.ofReal (l * (y - x))
 #align has_constant_speed_on_with HasConstantSpeedOnWith
+-/
 
 variable {f} {s} {l}
 
-theorem HasConstantSpeedOnWith.locallyBoundedVariationOn (h : HasConstantSpeedOnWith f s l) :
+#print HasConstantSpeedOnWith.hasLocallyBoundedVariationOn /-
+theorem HasConstantSpeedOnWith.hasLocallyBoundedVariationOn (h : HasConstantSpeedOnWith f s l) :
     LocallyBoundedVariationOn f s := fun x y hx hy => by
   simp only [BoundedVariationOn, h hx hy, Ne.def, ENNReal.ofReal_ne_top, not_false_iff]
-#align has_constant_speed_on_with.has_locally_bounded_variation_on HasConstantSpeedOnWith.locallyBoundedVariationOn
+#align has_constant_speed_on_with.has_locally_bounded_variation_on HasConstantSpeedOnWith.hasLocallyBoundedVariationOn
+-/
 
+#print hasConstantSpeedOnWith_of_subsingleton /-
 theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs : s.Subsingleton)
     (l : ℝ≥0) : HasConstantSpeedOnWith f s l :=
   by
@@ -73,7 +78,9 @@ theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs
   rw [eVariationOn.subsingleton f (fun y hy z hz => hs hy.1 hz.1 : (s ∩ Icc x x).Subsingleton)]
   simp only [sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
 #align has_constant_speed_on_with_of_subsingleton hasConstantSpeedOnWith_of_subsingleton
+-/
 
+#print hasConstantSpeedOnWith_iff_ordered /-
 theorem hasConstantSpeedOnWith_iff_ordered :
     HasConstantSpeedOnWith f s l ↔
       ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s),
@@ -89,7 +96,9 @@ theorem hasConstantSpeedOnWith_iff_ordered :
       cases le_antisymm (wy.trans yx) xw
       rfl
 #align has_constant_speed_on_with_iff_ordered hasConstantSpeedOnWith_iff_ordered
+-/
 
+#print hasConstantSpeedOnWith_iff_variationOnFromTo_eq /-
 theorem hasConstantSpeedOnWith_iff_variationOnFromTo_eq :
     HasConstantSpeedOnWith f s l ↔
       LocallyBoundedVariationOn f s ∧
@@ -110,7 +119,9 @@ theorem hasConstantSpeedOnWith_iff_variationOnFromTo_eq :
     rintro h x xs y ys xy
     rw [← h.2 xs ys, variationOnFromTo.eq_of_le f s xy, ENNReal.ofReal_toReal (h.1 x y xs ys)]
 #align has_constant_speed_on_with_iff_variation_on_from_to_eq hasConstantSpeedOnWith_iff_variationOnFromTo_eq
+-/
 
+#print HasConstantSpeedOnWith.union /-
 theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith f s l)
     (hft : HasConstantSpeedOnWith f t l) {x : ℝ} (hs : IsGreatest s x) (ht : IsLeast t x) :
     HasConstantSpeedOnWith f (s ∪ t) l :=
@@ -148,7 +159,9 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
       · rintro ⟨wt, zwy⟩; exact ⟨Or.inr wt, zwy⟩
     rw [this, hft zt yt zy]
 #align has_constant_speed_on_with.union HasConstantSpeedOnWith.union
+-/
 
+#print HasConstantSpeedOnWith.Icc_Icc /-
 theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWith f (Icc x y) l)
     (hft : HasConstantSpeedOnWith f (Icc y z) l) : HasConstantSpeedOnWith f (Icc x z) l :=
   by
@@ -165,8 +178,10 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
       hft ⟨yx.trans xu, uz⟩ ⟨yx.trans xv, vz⟩, Icc_inter_Icc, sup_of_le_right (yx.trans xu),
       inf_of_le_right vz]
 #align has_constant_speed_on_with.Icc_Icc HasConstantSpeedOnWith.Icc_Icc
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+#print hasConstantSpeedOnWith_zero_iff /-
 theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
   by
@@ -187,7 +202,9 @@ theorem hasConstantSpeedOnWith_zero_iff :
     rw [← h]
     exact eVariationOn.mono f (inter_subset_left s (Icc x y))
 #align has_constant_speed_on_with_zero_iff hasConstantSpeedOnWith_zero_iff
+-/
 
+#print HasConstantSpeedOnWith.ratio /-
 theorem HasConstantSpeedOnWith.ratio {l' : ℝ≥0} (hl' : l' ≠ 0) {φ : ℝ → ℝ} (φm : MonotoneOn φ s)
     (hfφ : HasConstantSpeedOnWith (f ∘ φ) s l) (hf : HasConstantSpeedOnWith f (φ '' s) l') ⦃x : ℝ⦄
     (xs : x ∈ s) : EqOn φ (fun y => l / l' * (y - x) + φ x) s :=
@@ -205,23 +222,31 @@ theorem HasConstantSpeedOnWith.ratio {l' : ℝ≥0} (hl' : l' ≠ 0) {φ : ℝ 
     _ = l' * (φ y - φ x) := (hf.2 ⟨x, xs, rfl⟩ ⟨y, ys, rfl⟩)
     _ = (φ y - φ x) * l' := by rw [mul_comm]
 #align has_constant_speed_on_with.ratio HasConstantSpeedOnWith.ratio
+-/
 
+#print HasUnitSpeedOn /-
 /-- `f` has unit speed on `s` if it is linearly parameterized by `l = 1` on `s`. -/
 def HasUnitSpeedOn (f : ℝ → E) (s : Set ℝ) :=
   HasConstantSpeedOnWith f s 1
 #align has_unit_speed_on HasUnitSpeedOn
+-/
 
+#print HasUnitSpeedOn.union /-
 theorem HasUnitSpeedOn.union {t : Set ℝ} {x : ℝ} (hfs : HasUnitSpeedOn f s)
     (hft : HasUnitSpeedOn f t) (hs : IsGreatest s x) (ht : IsLeast t x) :
     HasUnitSpeedOn f (s ∪ t) :=
   HasConstantSpeedOnWith.union hfs hft hs ht
 #align has_unit_speed_on.union HasUnitSpeedOn.union
+-/
 
+#print HasUnitSpeedOn.Icc_Icc /-
 theorem HasUnitSpeedOn.Icc_Icc {x y z : ℝ} (hfs : HasUnitSpeedOn f (Icc x y))
     (hft : HasUnitSpeedOn f (Icc y z)) : HasUnitSpeedOn f (Icc x z) :=
   HasConstantSpeedOnWith.Icc_Icc hfs hft
 #align has_unit_speed_on.Icc_Icc HasUnitSpeedOn.Icc_Icc
+-/
 
+#print unique_unit_speed /-
 /-- If both `f` and `f ∘ φ` have unit speed (on `t` and `s` respectively) and `φ`
 monotonically maps `s` onto `t`, then `φ` is just a translation (on `s`).
 -/
@@ -232,7 +257,9 @@ theorem unique_unit_speed {φ : ℝ → ℝ} (φm : MonotoneOn φ s) (hfφ : Has
   convert HasConstantSpeedOnWith.ratio one_ne_zero φm hfφ hf xs
   simp only [Nonneg.coe_one, div_self, Ne.def, one_ne_zero, not_false_iff, one_mul]
 #align unique_unit_speed unique_unit_speed
+-/
 
+#print unique_unit_speed_on_Icc_zero /-
 /-- If both `f` and `f ∘ φ` have unit speed (on `Icc 0 t` and `Icc 0 s` respectively)
 and `φ` monotonically maps `Icc 0 s` onto `Icc 0 t`, then `φ` is the identity on `Icc 0 s`
 -/
@@ -251,7 +278,9 @@ theorem unique_unit_speed_on_Icc_zero {s t : ℝ} (hs : 0 ≤ s) (ht : 0 ≤ t)
   simp only [tsub_zero, this, add_zero]
   rfl
 #align unique_unit_speed_on_Icc_zero unique_unit_speed_on_Icc_zero
+-/
 
+#print naturalParameterization /-
 /-- The natural parameterization of `f` on `s`, which, if `f` has locally bounded variation on `s`,
 * has unit speed on `s`
   (by `natural_parameterization_has_unit_speed`).
@@ -261,7 +290,9 @@ theorem unique_unit_speed_on_Icc_zero {s t : ℝ} (hs : 0 ≤ s) (ht : 0 ≤ t)
 noncomputable def naturalParameterization (f : α → E) (s : Set α) (a : α) : ℝ → E :=
   f ∘ @Function.invFunOn _ _ ⟨a⟩ (variationOnFromTo f s a) s
 #align natural_parameterization naturalParameterization
+-/
 
+#print edist_naturalParameterization_eq_zero /-
 theorem edist_naturalParameterization_eq_zero {f : α → E} {s : Set α}
     (hf : LocallyBoundedVariationOn f s) {a : α} (as : a ∈ s) {b : α} (bs : b ∈ s) :
     edist (naturalParameterization f s a (variationOnFromTo f s a b)) (f b) = 0 :=
@@ -275,7 +306,9 @@ theorem edist_naturalParameterization_eq_zero {f : α → E} {s : Set α}
   rw [variationOnFromTo.eq_left_iff hf as cs bs] at hc 
   apply variationOnFromTo.edist_zero_of_eq_zero hf cs bs hc
 #align edist_natural_parameterization_eq_zero edist_naturalParameterization_eq_zero
+-/
 
+#print has_unit_speed_naturalParameterization /-
 theorem has_unit_speed_naturalParameterization (f : α → E) {s : Set α}
     (hf : LocallyBoundedVariationOn f s) {a : α} (as : a ∈ s) :
     HasUnitSpeedOn (naturalParameterization f s a) (variationOnFromTo f s a '' s) :=
@@ -297,4 +330,5 @@ theorem has_unit_speed_naturalParameterization (f : α → E) {s : Set α}
     · rintro x ⟨xs, bx, xc⟩
       exact edist_naturalParameterization_eq_zero hf as xs
 #align has_unit_speed_natural_parameterization has_unit_speed_naturalParameterization
+-/
 
Diff
@@ -56,33 +56,33 @@ variable (f : ℝ → E) (s : Set ℝ) (l : ℝ≥0)
 `l * (y - x)` for any `x y` in `s`.
 -/
 def HasConstantSpeedOnWith :=
-  ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s), evariationOn f (s ∩ Icc x y) = ENNReal.ofReal (l * (y - x))
+  ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s), eVariationOn f (s ∩ Icc x y) = ENNReal.ofReal (l * (y - x))
 #align has_constant_speed_on_with HasConstantSpeedOnWith
 
 variable {f} {s} {l}
 
-theorem HasConstantSpeedOnWith.hasLocallyBoundedVariationOn (h : HasConstantSpeedOnWith f s l) :
-    HasLocallyBoundedVariationOn f s := fun x y hx hy => by
-  simp only [HasBoundedVariationOn, h hx hy, Ne.def, ENNReal.ofReal_ne_top, not_false_iff]
-#align has_constant_speed_on_with.has_locally_bounded_variation_on HasConstantSpeedOnWith.hasLocallyBoundedVariationOn
+theorem HasConstantSpeedOnWith.locallyBoundedVariationOn (h : HasConstantSpeedOnWith f s l) :
+    LocallyBoundedVariationOn f s := fun x y hx hy => by
+  simp only [BoundedVariationOn, h hx hy, Ne.def, ENNReal.ofReal_ne_top, not_false_iff]
+#align has_constant_speed_on_with.has_locally_bounded_variation_on HasConstantSpeedOnWith.locallyBoundedVariationOn
 
 theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs : s.Subsingleton)
     (l : ℝ≥0) : HasConstantSpeedOnWith f s l :=
   by
   rintro x hx y hy; cases hs hx hy
-  rw [evariationOn.subsingleton f (fun y hy z hz => hs hy.1 hz.1 : (s ∩ Icc x x).Subsingleton)]
+  rw [eVariationOn.subsingleton f (fun y hy z hz => hs hy.1 hz.1 : (s ∩ Icc x x).Subsingleton)]
   simp only [sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
 #align has_constant_speed_on_with_of_subsingleton hasConstantSpeedOnWith_of_subsingleton
 
 theorem hasConstantSpeedOnWith_iff_ordered :
     HasConstantSpeedOnWith f s l ↔
       ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s),
-        x ≤ y → evariationOn f (s ∩ Icc x y) = ENNReal.ofReal (l * (y - x)) :=
+        x ≤ y → eVariationOn f (s ∩ Icc x y) = ENNReal.ofReal (l * (y - x)) :=
   by
   refine' ⟨fun h x xs y ys xy => h xs ys, fun h x xs y ys => _⟩
   rcases le_total x y with (xy | yx)
   · exact h xs ys xy
-  · rw [evariationOn.subsingleton, ENNReal.ofReal_of_nonpos]
+  · rw [eVariationOn.subsingleton, ENNReal.ofReal_of_nonpos]
     · exact mul_nonpos_of_nonneg_of_nonpos l.prop (sub_nonpos_of_le yx)
     · rintro z ⟨zs, xz, zy⟩ w ⟨ws, xw, wy⟩
       cases le_antisymm (zy.trans yx) xz
@@ -92,7 +92,7 @@ theorem hasConstantSpeedOnWith_iff_ordered :
 
 theorem hasConstantSpeedOnWith_iff_variationOnFromTo_eq :
     HasConstantSpeedOnWith f s l ↔
-      HasLocallyBoundedVariationOn f s ∧
+      LocallyBoundedVariationOn f s ∧
         ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s), variationOnFromTo f s x y = l * (y - x) :=
   by
   constructor
@@ -131,7 +131,7 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
         exacts [Or.inl ⟨ws, zw, hs.2 ws⟩, Or.inr ⟨wt, ht.2 wt, wy⟩]
       · rintro (⟨ws, zw, wx⟩ | ⟨wt, xw, wy⟩)
         exacts [⟨Or.inl ws, zw, wx.trans (ht.2 yt)⟩, ⟨Or.inr wt, (hs.2 zs).trans xw, wy⟩]
-    rw [this, @evariationOn.union _ _ _ _ f _ _ x, hfs zs hs.1 (hs.2 zs), hft ht.1 yt (ht.2 yt), ←
+    rw [this, @eVariationOn.union _ _ _ _ f _ _ x, hfs zs hs.1 (hs.2 zs), hft ht.1 yt (ht.2 yt), ←
       ENNReal.ofReal_add (mul_nonneg l.prop (sub_nonneg.mpr (hs.2 zs)))
         (mul_nonneg l.prop (sub_nonneg.mpr (ht.2 yt)))]
     ring_nf
@@ -139,7 +139,7 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
       ⟨⟨ht.1, le_rfl, ht.2 yt⟩, fun w ⟨wt, xw, wy⟩ => xw⟩]
   · cases le_antisymm zy ((hs.2 ys).trans (ht.2 zt))
     simp only [Icc_self, sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
-    exact evariationOn.subsingleton _ fun _ ⟨_, uz⟩ _ ⟨_, vz⟩ => uz.trans vz.symm
+    exact eVariationOn.subsingleton _ fun _ ⟨_, uz⟩ _ ⟨_, vz⟩ => uz.trans vz.symm
   · have : (s ∪ t) ∩ Icc z y = t ∩ Icc z y := by
       ext w; constructor
       · rintro ⟨ws | wt, zw, wy⟩
@@ -171,11 +171,11 @@ theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
   by
   dsimp [HasConstantSpeedOnWith]
-  simp only [MulZeroClass.zero_mul, ENNReal.ofReal_zero, ← evariationOn.eq_zero_iff]
+  simp only [MulZeroClass.zero_mul, ENNReal.ofReal_zero, ← eVariationOn.eq_zero_iff]
   constructor
   · by_contra'
     obtain ⟨h, hfs⟩ := this
-    simp_rw [evariationOn.eq_zero_iff] at hfs h 
+    simp_rw [eVariationOn.eq_zero_iff] at hfs h 
     push_neg at hfs 
     obtain ⟨x, xs, y, ys, hxy⟩ := hfs
     rcases le_total x y with (xy | yx)
@@ -185,7 +185,7 @@ theorem hasConstantSpeedOnWith_zero_iff :
   · rintro h x xs y ys
     refine' le_antisymm _ zero_le'
     rw [← h]
-    exact evariationOn.mono f (inter_subset_left s (Icc x y))
+    exact eVariationOn.mono f (inter_subset_left s (Icc x y))
 #align has_constant_speed_on_with_zero_iff hasConstantSpeedOnWith_zero_iff
 
 theorem HasConstantSpeedOnWith.ratio {l' : ℝ≥0} (hl' : l' ≠ 0) {φ : ℝ → ℝ} (φm : MonotoneOn φ s)
@@ -263,7 +263,7 @@ noncomputable def naturalParameterization (f : α → E) (s : Set α) (a : α) :
 #align natural_parameterization naturalParameterization
 
 theorem edist_naturalParameterization_eq_zero {f : α → E} {s : Set α}
-    (hf : HasLocallyBoundedVariationOn f s) {a : α} (as : a ∈ s) {b : α} (bs : b ∈ s) :
+    (hf : LocallyBoundedVariationOn f s) {a : α} (as : a ∈ s) {b : α} (bs : b ∈ s) :
     edist (naturalParameterization f s a (variationOnFromTo f s a b)) (f b) = 0 :=
   by
   dsimp only [naturalParameterization]
@@ -277,7 +277,7 @@ theorem edist_naturalParameterization_eq_zero {f : α → E} {s : Set α}
 #align edist_natural_parameterization_eq_zero edist_naturalParameterization_eq_zero
 
 theorem has_unit_speed_naturalParameterization (f : α → E) {s : Set α}
-    (hf : HasLocallyBoundedVariationOn f s) {a : α} (as : a ∈ s) :
+    (hf : LocallyBoundedVariationOn f s) {a : α} (as : a ∈ s) :
     HasUnitSpeedOn (naturalParameterization f s a) (variationOnFromTo f s a '' s) :=
   by
   dsimp only [HasUnitSpeedOn]
@@ -285,14 +285,14 @@ theorem has_unit_speed_naturalParameterization (f : α → E) {s : Set α}
   rintro _ ⟨b, bs, rfl⟩ _ ⟨c, cs, rfl⟩ h
   rcases le_total c b with (cb | bc)
   · rw [NNReal.coe_one, one_mul, le_antisymm h (variationOnFromTo.monotoneOn hf as cs bs cb),
-      sub_self, ENNReal.ofReal_zero, Icc_self, evariationOn.subsingleton]
+      sub_self, ENNReal.ofReal_zero, Icc_self, eVariationOn.subsingleton]
     exact fun x hx y hy => hx.2.trans hy.2.symm
   · rw [NNReal.coe_one, one_mul, sub_eq_add_neg, variationOnFromTo.eq_neg_swap, neg_neg, add_comm,
       variationOnFromTo.add hf bs as cs, ← variationOnFromTo.eq_neg_swap f]
     rw [←
-      evariationOn.comp_inter_Icc_eq_of_monotoneOn (naturalParameterization f s a) _
+      eVariationOn.comp_inter_Icc_eq_of_monotoneOn (naturalParameterization f s a) _
         (variationOnFromTo.monotoneOn hf as) bs cs]
-    rw [@evariationOn.eq_of_edist_zero_on _ _ _ _ _ f]
+    rw [@eVariationOn.eq_of_edist_zero_on _ _ _ _ _ f]
     · rw [variationOnFromTo.eq_of_le _ _ bc, ENNReal.ofReal_toReal (hf b c bs cs)]
     · rintro x ⟨xs, bx, xc⟩
       exact edist_naturalParameterization_eq_zero hf as xs
Diff
@@ -204,7 +204,6 @@ theorem HasConstantSpeedOnWith.ratio {l' : ℝ≥0} (hl' : l' ≠ 0) {φ : ℝ 
       (variationOnFromTo.comp_eq_of_monotoneOn f φ φm xs ys)
     _ = l' * (φ y - φ x) := (hf.2 ⟨x, xs, rfl⟩ ⟨y, ys, rfl⟩)
     _ = (φ y - φ x) * l' := by rw [mul_comm]
-    
 #align has_constant_speed_on_with.ratio HasConstantSpeedOnWith.ratio
 
 /-- `f` has unit speed on `s` if it is linearly parameterized by `l = 1` on `s`. -/
Diff
@@ -166,7 +166,7 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
       inf_of_le_right vz]
 #align has_constant_speed_on_with.Icc_Icc HasConstantSpeedOnWith.Icc_Icc
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
   by
Diff
@@ -176,7 +176,7 @@ theorem hasConstantSpeedOnWith_zero_iff :
   · by_contra'
     obtain ⟨h, hfs⟩ := this
     simp_rw [evariationOn.eq_zero_iff] at hfs h 
-    push_neg  at hfs 
+    push_neg at hfs 
     obtain ⟨x, xs, y, ys, hxy⟩ := hfs
     rcases le_total x y with (xy | yx)
     · exact hxy (h xs ys x ⟨xs, le_rfl, xy⟩ y ⟨ys, xy, le_rfl⟩)
Diff
@@ -97,7 +97,7 @@ theorem hasConstantSpeedOnWith_iff_variationOnFromTo_eq :
   by
   constructor
   · rintro h; refine' ⟨h.has_locally_bounded_variation_on, fun x xs y ys => _⟩
-    rw [hasConstantSpeedOnWith_iff_ordered] at h
+    rw [hasConstantSpeedOnWith_iff_ordered] at h 
     rcases le_total x y with (xy | yx)
     ·
       rw [variationOnFromTo.eq_of_le f s xy, h xs ys xy,
@@ -115,7 +115,7 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
     (hft : HasConstantSpeedOnWith f t l) {x : ℝ} (hs : IsGreatest s x) (ht : IsLeast t x) :
     HasConstantSpeedOnWith f (s ∪ t) l :=
   by
-  rw [hasConstantSpeedOnWith_iff_ordered] at hfs hft⊢
+  rw [hasConstantSpeedOnWith_iff_ordered] at hfs hft ⊢
   rintro z (zs | zt) y (ys | yt) zy
   · have : (s ∪ t) ∩ Icc z y = s ∩ Icc z y := by
       ext w; constructor
@@ -128,14 +128,14 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
       by
       ext w; constructor
       · rintro ⟨ws | wt, zw, wy⟩
-        exacts[Or.inl ⟨ws, zw, hs.2 ws⟩, Or.inr ⟨wt, ht.2 wt, wy⟩]
+        exacts [Or.inl ⟨ws, zw, hs.2 ws⟩, Or.inr ⟨wt, ht.2 wt, wy⟩]
       · rintro (⟨ws, zw, wx⟩ | ⟨wt, xw, wy⟩)
-        exacts[⟨Or.inl ws, zw, wx.trans (ht.2 yt)⟩, ⟨Or.inr wt, (hs.2 zs).trans xw, wy⟩]
+        exacts [⟨Or.inl ws, zw, wx.trans (ht.2 yt)⟩, ⟨Or.inr wt, (hs.2 zs).trans xw, wy⟩]
     rw [this, @evariationOn.union _ _ _ _ f _ _ x, hfs zs hs.1 (hs.2 zs), hft ht.1 yt (ht.2 yt), ←
       ENNReal.ofReal_add (mul_nonneg l.prop (sub_nonneg.mpr (hs.2 zs)))
         (mul_nonneg l.prop (sub_nonneg.mpr (ht.2 yt)))]
     ring_nf
-    exacts[⟨⟨hs.1, hs.2 zs, le_rfl⟩, fun w ⟨ws, zw, wx⟩ => wx⟩,
+    exacts [⟨⟨hs.1, hs.2 zs, le_rfl⟩, fun w ⟨ws, zw, wx⟩ => wx⟩,
       ⟨⟨ht.1, le_rfl, ht.2 yt⟩, fun w ⟨wt, xw, wy⟩ => xw⟩]
   · cases le_antisymm zy ((hs.2 ys).trans (ht.2 zt))
     simp only [Icc_self, sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
@@ -175,12 +175,12 @@ theorem hasConstantSpeedOnWith_zero_iff :
   constructor
   · by_contra'
     obtain ⟨h, hfs⟩ := this
-    simp_rw [evariationOn.eq_zero_iff] at hfs h
-    push_neg  at hfs
+    simp_rw [evariationOn.eq_zero_iff] at hfs h 
+    push_neg  at hfs 
     obtain ⟨x, xs, y, ys, hxy⟩ := hfs
     rcases le_total x y with (xy | yx)
     · exact hxy (h xs ys x ⟨xs, le_rfl, xy⟩ y ⟨ys, xy, le_rfl⟩)
-    · rw [edist_comm] at hxy
+    · rw [edist_comm] at hxy 
       exact hxy (h ys xs y ⟨ys, le_rfl, yx⟩ x ⟨xs, yx, le_rfl⟩)
   · rintro h x xs y ys
     refine' le_antisymm _ zero_le'
@@ -194,8 +194,8 @@ theorem HasConstantSpeedOnWith.ratio {l' : ℝ≥0} (hl' : l' ≠ 0) {φ : ℝ 
   by
   rintro y ys
   rw [← sub_eq_iff_eq_add, mul_comm, ← mul_div_assoc, eq_div_iff (nnreal.coe_ne_zero.mpr hl')]
-  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hf
-  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hfφ
+  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hf 
+  rw [hasConstantSpeedOnWith_iff_variationOnFromTo_eq] at hfφ 
   symm
   calc
     (y - x) * l = l * (y - x) := by rw [mul_comm]
@@ -229,7 +229,7 @@ monotonically maps `s` onto `t`, then `φ` is just a translation (on `s`).
 theorem unique_unit_speed {φ : ℝ → ℝ} (φm : MonotoneOn φ s) (hfφ : HasUnitSpeedOn (f ∘ φ) s)
     (hf : HasUnitSpeedOn f (φ '' s)) ⦃x : ℝ⦄ (xs : x ∈ s) : EqOn φ (fun y => y - x + φ x) s :=
   by
-  dsimp only [HasUnitSpeedOn] at hf hfφ
+  dsimp only [HasUnitSpeedOn] at hf hfφ 
   convert HasConstantSpeedOnWith.ratio one_ne_zero φm hfφ hf xs
   simp only [Nonneg.coe_one, div_self, Ne.def, one_ne_zero, not_false_iff, one_mul]
 #align unique_unit_speed unique_unit_speed
@@ -241,7 +241,7 @@ theorem unique_unit_speed_on_Icc_zero {s t : ℝ} (hs : 0 ≤ s) (ht : 0 ≤ t)
     (φm : MonotoneOn φ <| Icc 0 s) (φst : φ '' Icc 0 s = Icc 0 t)
     (hfφ : HasUnitSpeedOn (f ∘ φ) (Icc 0 s)) (hf : HasUnitSpeedOn f (Icc 0 t)) :
     EqOn φ id (Icc 0 s) := by
-  rw [← φst] at hf
+  rw [← φst] at hf 
   convert unique_unit_speed φm hfφ hf ⟨le_rfl, hs⟩
   have : φ 0 = 0 :=
     by
@@ -273,7 +273,7 @@ theorem edist_naturalParameterization_eq_zero {f : α → E} {s : Set α}
   obtain ⟨cs, hc⟩ :=
     @Function.invFunOn_pos _ _ _ s (variationOnFromTo f s a) (variationOnFromTo f s a b)
       ⟨b, bs, rfl⟩
-  rw [variationOnFromTo.eq_left_iff hf as cs bs] at hc
+  rw [variationOnFromTo.eq_left_iff hf as cs bs] at hc 
   apply variationOnFromTo.edist_zero_of_eq_zero hf cs bs hc
 #align edist_natural_parameterization_eq_zero edist_naturalParameterization_eq_zero
 
Diff
@@ -44,7 +44,7 @@ arc-length, parameterization
 -/
 
 
-open BigOperators NNReal ENNReal
+open scoped BigOperators NNReal ENNReal
 
 open Set MeasureTheory Classical
 
Diff
@@ -96,8 +96,7 @@ theorem hasConstantSpeedOnWith_iff_variationOnFromTo_eq :
         ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s), variationOnFromTo f s x y = l * (y - x) :=
   by
   constructor
-  · rintro h
-    refine' ⟨h.has_locally_bounded_variation_on, fun x xs y ys => _⟩
+  · rintro h; refine' ⟨h.has_locally_bounded_variation_on, fun x xs y ys => _⟩
     rw [hasConstantSpeedOnWith_iff_ordered] at h
     rcases le_total x y with (xy | yx)
     ·
@@ -119,18 +118,15 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
   rw [hasConstantSpeedOnWith_iff_ordered] at hfs hft⊢
   rintro z (zs | zt) y (ys | yt) zy
   · have : (s ∪ t) ∩ Icc z y = s ∩ Icc z y := by
-      ext w
-      constructor
+      ext w; constructor
       · rintro ⟨ws | wt, zw, wy⟩
         · exact ⟨ws, zw, wy⟩
         · exact ⟨(le_antisymm (wy.trans (hs.2 ys)) (ht.2 wt)).symm ▸ hs.1, zw, wy⟩
-      · rintro ⟨ws, zwy⟩
-        exact ⟨Or.inl ws, zwy⟩
+      · rintro ⟨ws, zwy⟩; exact ⟨Or.inl ws, zwy⟩
     rw [this, hfs zs ys zy]
   · have : (s ∪ t) ∩ Icc z y = s ∩ Icc z x ∪ t ∩ Icc x y :=
       by
-      ext w
-      constructor
+      ext w; constructor
       · rintro ⟨ws | wt, zw, wy⟩
         exacts[Or.inl ⟨ws, zw, hs.2 ws⟩, Or.inr ⟨wt, ht.2 wt, wy⟩]
       · rintro (⟨ws, zw, wx⟩ | ⟨wt, xw, wy⟩)
@@ -145,13 +141,11 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
     simp only [Icc_self, sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
     exact evariationOn.subsingleton _ fun _ ⟨_, uz⟩ _ ⟨_, vz⟩ => uz.trans vz.symm
   · have : (s ∪ t) ∩ Icc z y = t ∩ Icc z y := by
-      ext w
-      constructor
+      ext w; constructor
       · rintro ⟨ws | wt, zw, wy⟩
         · exact ⟨le_antisymm ((ht.2 zt).trans zw) (hs.2 ws) ▸ ht.1, zw, wy⟩
         · exact ⟨wt, zw, wy⟩
-      · rintro ⟨wt, zwy⟩
-        exact ⟨Or.inr wt, zwy⟩
+      · rintro ⟨wt, zwy⟩; exact ⟨Or.inr wt, zwy⟩
     rw [this, hft zt yt zy]
 #align has_constant_speed_on_with.union HasConstantSpeedOnWith.union
 
Diff
@@ -4,12 +4,10 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
 
 ! This file was ported from Lean 3 source module analysis.constant_speed
-! leanprover-community/mathlib commit 168eeff2a36ad2298744206421f5d33784e9b3d4
+! leanprover-community/mathlib commit f0c8bf9245297a541f468be517f1bde6195105e9
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
-import Mathbin.MeasureTheory.Measure.Lebesgue
-import Mathbin.Analysis.Calculus.Monotone
 import Mathbin.Data.Set.Function
 import Mathbin.Analysis.BoundedVariation
 import Mathbin.Tactic.SwapVar
Diff
@@ -73,7 +73,7 @@ theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs
   by
   rintro x hx y hy; cases hs hx hy
   rw [evariationOn.subsingleton f (fun y hy z hz => hs hy.1 hz.1 : (s ∩ Icc x x).Subsingleton)]
-  simp only [sub_self, mul_zero, ENNReal.ofReal_zero]
+  simp only [sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
 #align has_constant_speed_on_with_of_subsingleton hasConstantSpeedOnWith_of_subsingleton
 
 theorem hasConstantSpeedOnWith_iff_ordered :
@@ -144,7 +144,7 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
     exacts[⟨⟨hs.1, hs.2 zs, le_rfl⟩, fun w ⟨ws, zw, wx⟩ => wx⟩,
       ⟨⟨ht.1, le_rfl, ht.2 yt⟩, fun w ⟨wt, xw, wy⟩ => xw⟩]
   · cases le_antisymm zy ((hs.2 ys).trans (ht.2 zt))
-    simp only [Icc_self, sub_self, mul_zero, ENNReal.ofReal_zero]
+    simp only [Icc_self, sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
     exact evariationOn.subsingleton _ fun _ ⟨_, uz⟩ _ ⟨_, vz⟩ => uz.trans vz.symm
   · have : (s ∪ t) ∩ Icc z y = t ∩ Icc z y := by
       ext w
@@ -179,7 +179,7 @@ theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
   by
   dsimp [HasConstantSpeedOnWith]
-  simp only [zero_mul, ENNReal.ofReal_zero, ← evariationOn.eq_zero_iff]
+  simp only [MulZeroClass.zero_mul, ENNReal.ofReal_zero, ← evariationOn.eq_zero_iff]
   constructor
   · by_contra'
     obtain ⟨h, hfs⟩ := this
Diff
@@ -50,7 +50,7 @@ open BigOperators NNReal ENNReal
 
 open Set MeasureTheory Classical
 
-variable {α : Type _} [LinearOrder α] {E : Type _} [PseudoEmetricSpace E]
+variable {α : Type _} [LinearOrder α] {E : Type _} [PseudoEMetricSpace E]
 
 variable (f : ℝ → E) (s : Set ℝ) (l : ℝ≥0)
 
Diff
@@ -174,7 +174,7 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
       inf_of_le_right vz]
 #align has_constant_speed_on_with.Icc_Icc HasConstantSpeedOnWith.Icc_Icc
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
   by
@@ -209,8 +209,8 @@ theorem HasConstantSpeedOnWith.ratio {l' : ℝ≥0} (hl' : l' ≠ 0) {φ : ℝ 
     (y - x) * l = l * (y - x) := by rw [mul_comm]
     _ = variationOnFromTo (f ∘ φ) s x y := (hfφ.2 xs ys).symm
     _ = variationOnFromTo f (φ '' s) (φ x) (φ y) :=
-      variationOnFromTo.comp_eq_of_monotoneOn f φ φm xs ys
-    _ = l' * (φ y - φ x) := hf.2 ⟨x, xs, rfl⟩ ⟨y, ys, rfl⟩
+      (variationOnFromTo.comp_eq_of_monotoneOn f φ φm xs ys)
+    _ = l' * (φ y - φ x) := (hf.2 ⟨x, xs, rfl⟩ ⟨y, ys, rfl⟩)
     _ = (φ y - φ x) * l' := by rw [mul_comm]
     
 #align has_constant_speed_on_with.ratio HasConstantSpeedOnWith.ratio
Diff
@@ -46,7 +46,7 @@ arc-length, parameterization
 -/
 
 
-open BigOperators NNReal Ennreal
+open BigOperators NNReal ENNReal
 
 open Set MeasureTheory Classical
 
@@ -58,14 +58,14 @@ variable (f : ℝ → E) (s : Set ℝ) (l : ℝ≥0)
 `l * (y - x)` for any `x y` in `s`.
 -/
 def HasConstantSpeedOnWith :=
-  ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s), evariationOn f (s ∩ Icc x y) = Ennreal.ofReal (l * (y - x))
+  ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s), evariationOn f (s ∩ Icc x y) = ENNReal.ofReal (l * (y - x))
 #align has_constant_speed_on_with HasConstantSpeedOnWith
 
 variable {f} {s} {l}
 
 theorem HasConstantSpeedOnWith.hasLocallyBoundedVariationOn (h : HasConstantSpeedOnWith f s l) :
     HasLocallyBoundedVariationOn f s := fun x y hx hy => by
-  simp only [HasBoundedVariationOn, h hx hy, Ne.def, Ennreal.ofReal_ne_top, not_false_iff]
+  simp only [HasBoundedVariationOn, h hx hy, Ne.def, ENNReal.ofReal_ne_top, not_false_iff]
 #align has_constant_speed_on_with.has_locally_bounded_variation_on HasConstantSpeedOnWith.hasLocallyBoundedVariationOn
 
 theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs : s.Subsingleton)
@@ -73,18 +73,18 @@ theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs
   by
   rintro x hx y hy; cases hs hx hy
   rw [evariationOn.subsingleton f (fun y hy z hz => hs hy.1 hz.1 : (s ∩ Icc x x).Subsingleton)]
-  simp only [sub_self, mul_zero, Ennreal.ofReal_zero]
+  simp only [sub_self, mul_zero, ENNReal.ofReal_zero]
 #align has_constant_speed_on_with_of_subsingleton hasConstantSpeedOnWith_of_subsingleton
 
 theorem hasConstantSpeedOnWith_iff_ordered :
     HasConstantSpeedOnWith f s l ↔
       ∀ ⦃x⦄ (hx : x ∈ s) ⦃y⦄ (hy : y ∈ s),
-        x ≤ y → evariationOn f (s ∩ Icc x y) = Ennreal.ofReal (l * (y - x)) :=
+        x ≤ y → evariationOn f (s ∩ Icc x y) = ENNReal.ofReal (l * (y - x)) :=
   by
   refine' ⟨fun h x xs y ys xy => h xs ys, fun h x xs y ys => _⟩
   rcases le_total x y with (xy | yx)
   · exact h xs ys xy
-  · rw [evariationOn.subsingleton, Ennreal.ofReal_of_nonpos]
+  · rw [evariationOn.subsingleton, ENNReal.ofReal_of_nonpos]
     · exact mul_nonpos_of_nonneg_of_nonpos l.prop (sub_nonpos_of_le yx)
     · rintro z ⟨zs, xz, zy⟩ w ⟨ws, xw, wy⟩
       cases le_antisymm (zy.trans yx) xz
@@ -104,14 +104,14 @@ theorem hasConstantSpeedOnWith_iff_variationOnFromTo_eq :
     rcases le_total x y with (xy | yx)
     ·
       rw [variationOnFromTo.eq_of_le f s xy, h xs ys xy,
-        Ennreal.toReal_ofReal (mul_nonneg l.prop (sub_nonneg.mpr xy))]
+        ENNReal.toReal_ofReal (mul_nonneg l.prop (sub_nonneg.mpr xy))]
     ·
       rw [variationOnFromTo.eq_of_ge f s yx, h ys xs yx,
-        Ennreal.toReal_ofReal (mul_nonneg l.prop (sub_nonneg.mpr yx)), mul_comm ↑l, mul_comm ↑l, ←
+        ENNReal.toReal_ofReal (mul_nonneg l.prop (sub_nonneg.mpr yx)), mul_comm ↑l, mul_comm ↑l, ←
         neg_mul, neg_sub]
   · rw [hasConstantSpeedOnWith_iff_ordered]
     rintro h x xs y ys xy
-    rw [← h.2 xs ys, variationOnFromTo.eq_of_le f s xy, Ennreal.ofReal_toReal (h.1 x y xs ys)]
+    rw [← h.2 xs ys, variationOnFromTo.eq_of_le f s xy, ENNReal.ofReal_toReal (h.1 x y xs ys)]
 #align has_constant_speed_on_with_iff_variation_on_from_to_eq hasConstantSpeedOnWith_iff_variationOnFromTo_eq
 
 theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith f s l)
@@ -138,13 +138,13 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
       · rintro (⟨ws, zw, wx⟩ | ⟨wt, xw, wy⟩)
         exacts[⟨Or.inl ws, zw, wx.trans (ht.2 yt)⟩, ⟨Or.inr wt, (hs.2 zs).trans xw, wy⟩]
     rw [this, @evariationOn.union _ _ _ _ f _ _ x, hfs zs hs.1 (hs.2 zs), hft ht.1 yt (ht.2 yt), ←
-      Ennreal.ofReal_add (mul_nonneg l.prop (sub_nonneg.mpr (hs.2 zs)))
+      ENNReal.ofReal_add (mul_nonneg l.prop (sub_nonneg.mpr (hs.2 zs)))
         (mul_nonneg l.prop (sub_nonneg.mpr (ht.2 yt)))]
     ring_nf
     exacts[⟨⟨hs.1, hs.2 zs, le_rfl⟩, fun w ⟨ws, zw, wx⟩ => wx⟩,
       ⟨⟨ht.1, le_rfl, ht.2 yt⟩, fun w ⟨wt, xw, wy⟩ => xw⟩]
   · cases le_antisymm zy ((hs.2 ys).trans (ht.2 zt))
-    simp only [Icc_self, sub_self, mul_zero, Ennreal.ofReal_zero]
+    simp only [Icc_self, sub_self, mul_zero, ENNReal.ofReal_zero]
     exact evariationOn.subsingleton _ fun _ ⟨_, uz⟩ _ ⟨_, vz⟩ => uz.trans vz.symm
   · have : (s ∪ t) ∩ Icc z y = t ∩ Icc z y := by
       ext w
@@ -179,7 +179,7 @@ theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 :=
   by
   dsimp [HasConstantSpeedOnWith]
-  simp only [zero_mul, Ennreal.ofReal_zero, ← evariationOn.eq_zero_iff]
+  simp only [zero_mul, ENNReal.ofReal_zero, ← evariationOn.eq_zero_iff]
   constructor
   · by_contra'
     obtain ⟨h, hfs⟩ := this
@@ -294,7 +294,7 @@ theorem has_unit_speed_naturalParameterization (f : α → E) {s : Set α}
   rintro _ ⟨b, bs, rfl⟩ _ ⟨c, cs, rfl⟩ h
   rcases le_total c b with (cb | bc)
   · rw [NNReal.coe_one, one_mul, le_antisymm h (variationOnFromTo.monotoneOn hf as cs bs cb),
-      sub_self, Ennreal.ofReal_zero, Icc_self, evariationOn.subsingleton]
+      sub_self, ENNReal.ofReal_zero, Icc_self, evariationOn.subsingleton]
     exact fun x hx y hy => hx.2.trans hy.2.symm
   · rw [NNReal.coe_one, one_mul, sub_eq_add_neg, variationOnFromTo.eq_neg_swap, neg_neg, add_comm,
       variationOnFromTo.add hf bs as cs, ← variationOnFromTo.eq_neg_swap f]
@@ -302,7 +302,7 @@ theorem has_unit_speed_naturalParameterization (f : α → E) {s : Set α}
       evariationOn.comp_inter_Icc_eq_of_monotoneOn (naturalParameterization f s a) _
         (variationOnFromTo.monotoneOn hf as) bs cs]
     rw [@evariationOn.eq_of_edist_zero_on _ _ _ _ _ f]
-    · rw [variationOnFromTo.eq_of_le _ _ bc, Ennreal.ofReal_toReal (hf b c bs cs)]
+    · rw [variationOnFromTo.eq_of_le _ _ bc, ENNReal.ofReal_toReal (hf b c bs cs)]
     · rintro x ⟨xs, bx, xc⟩
       exact edist_naturalParameterization_eq_zero hf as xs
 #align has_unit_speed_natural_parameterization has_unit_speed_naturalParameterization

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 2 (#12361)

A PR analogous to #12338: reformatting proofs following the multiple goals linter of #12339.

Diff
@@ -118,11 +118,11 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
       · rintro (⟨ws, zw, wx⟩ | ⟨wt, xw, wy⟩)
         exacts [⟨Or.inl ws, zw, wx.trans (ht.2 yt)⟩, ⟨Or.inr wt, (hs.2 zs).trans xw, wy⟩]
     rw [this, @eVariationOn.union _ _ _ _ f _ _ x, hfs zs hs.1 (hs.2 zs), hft ht.1 yt (ht.2 yt)]
-    have q := ENNReal.ofReal_add (mul_nonneg l.prop (sub_nonneg.mpr (hs.2 zs)))
-      (mul_nonneg l.prop (sub_nonneg.mpr (ht.2 yt)))
-    simp only [NNReal.val_eq_coe] at q
-    rw [← q]
-    ring_nf
+    · have q := ENNReal.ofReal_add (mul_nonneg l.prop (sub_nonneg.mpr (hs.2 zs)))
+        (mul_nonneg l.prop (sub_nonneg.mpr (ht.2 yt)))
+      simp only [NNReal.val_eq_coe] at q
+      rw [← q]
+      ring_nf
     exacts [⟨⟨hs.1, hs.2 zs, le_rfl⟩, fun w ⟨_, _, wx⟩ => wx⟩,
       ⟨⟨ht.1, le_rfl, ht.2 yt⟩, fun w ⟨_, xw, _⟩ => xw⟩]
   · cases le_antisymm zy ((hs.2 ys).trans (ht.2 zt))
@@ -140,13 +140,13 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
 theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWith f (Icc x y) l)
     (hft : HasConstantSpeedOnWith f (Icc y z) l) : HasConstantSpeedOnWith f (Icc x z) l := by
   rcases le_total x y with (xy | yx)
-  rcases le_total y z with (yz | zy)
-  · rw [← Set.Icc_union_Icc_eq_Icc xy yz]
-    exact hfs.union hft (isGreatest_Icc xy) (isLeast_Icc yz)
-  · rintro u ⟨xu, uz⟩ v ⟨xv, vz⟩
-    rw [Icc_inter_Icc, sup_of_le_right xu, inf_of_le_right vz, ←
-      hfs ⟨xu, uz.trans zy⟩ ⟨xv, vz.trans zy⟩, Icc_inter_Icc, sup_of_le_right xu,
-      inf_of_le_right (vz.trans zy)]
+  · rcases le_total y z with (yz | zy)
+    · rw [← Set.Icc_union_Icc_eq_Icc xy yz]
+      exact hfs.union hft (isGreatest_Icc xy) (isLeast_Icc yz)
+    · rintro u ⟨xu, uz⟩ v ⟨xv, vz⟩
+      rw [Icc_inter_Icc, sup_of_le_right xu, inf_of_le_right vz, ←
+        hfs ⟨xu, uz.trans zy⟩ ⟨xv, vz.trans zy⟩, Icc_inter_Icc, sup_of_le_right xu,
+        inf_of_le_right (vz.trans zy)]
   · rintro u ⟨xu, uz⟩ v ⟨xv, vz⟩
     rw [Icc_inter_Icc, sup_of_le_right xu, inf_of_le_right vz, ←
       hft ⟨yx.trans xu, uz⟩ ⟨yx.trans xv, vz⟩, Icc_inter_Icc, sup_of_le_right (yx.trans xu),
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11801)
Diff
@@ -58,7 +58,7 @@ variable {f s l}
 
 theorem HasConstantSpeedOnWith.hasLocallyBoundedVariationOn (h : HasConstantSpeedOnWith f s l) :
     LocallyBoundedVariationOn f s := fun x y hx hy => by
-  simp only [BoundedVariationOn, h hx hy, Ne.def, ENNReal.ofReal_ne_top, not_false_iff]
+  simp only [BoundedVariationOn, h hx hy, Ne, ENNReal.ofReal_ne_top, not_false_iff]
 #align has_constant_speed_on_with.has_locally_bounded_variation_on HasConstantSpeedOnWith.hasLocallyBoundedVariationOn
 
 theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs : s.Subsingleton)
chore(*): remove empty lines between variable statements (#11418)

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)
Diff
@@ -45,7 +45,6 @@ open scoped BigOperators NNReal ENNReal
 open Set MeasureTheory Classical
 
 variable {α : Type*} [LinearOrder α] {E : Type*} [PseudoEMetricSpace E]
-
 variable (f : ℝ → E) (s : Set ℝ) (l : ℝ≥0)
 
 /-- `f` has constant speed `l` on `s` if the variation of `f` on `s ∩ Icc x y` is equal to
chore(*): use ∃ x ∈ s, _ instead of ∃ (x) (_ : x ∈ s), _ (#9184)

Search for [∀∃].*(_ and manually replace some occurrences with more readable versions. In case of , the new expressions are defeq to the old ones. In case of , they differ by exists_prop.

In some rare cases, golf proofs that needed fixing.

Diff
@@ -155,7 +155,7 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
 #align has_constant_speed_on_with.Icc_Icc HasConstantSpeedOnWith.Icc_Icc
 
 theorem hasConstantSpeedOnWith_zero_iff :
-    HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 := by
+    HasConstantSpeedOnWith f s 0 ↔ ∀ᵉ (x ∈ s) (y ∈ s), edist (f x) (f y) = 0 := by
   dsimp [HasConstantSpeedOnWith]
   simp only [zero_mul, ENNReal.ofReal_zero, ← eVariationOn.eq_zero_iff]
   constructor
chore: rename by_contra' to by_contra! (#8797)

To fit with the "please try harder" convention of ! tactics.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -159,7 +159,7 @@ theorem hasConstantSpeedOnWith_zero_iff :
   dsimp [HasConstantSpeedOnWith]
   simp only [zero_mul, ENNReal.ofReal_zero, ← eVariationOn.eq_zero_iff]
   constructor
-  · by_contra'
+  · by_contra!
     obtain ⟨h, hfs⟩ := this
     simp_rw [ne_eq, eVariationOn.eq_zero_iff] at hfs h
     push_neg at hfs
chore: bump to v4.3.0-rc2 (#8366)

PR contents

This is the supremum of

along with some minor fixes from failures on nightly-testing as Mathlib master is merged into it.

Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.

I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0 branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.

Lean PRs involved in this bump

In particular this includes adjustments for the Lean PRs

leanprover/lean4#2778

We can get rid of all the

local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)

macros across Mathlib (and in any projects that want to write natural number powers of reals).

leanprover/lean4#2722

Changes the default behaviour of simp to (config := {decide := false}). This makes simp (and consequentially norm_num) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp or norm_num to decide or rfl, or adding (config := {decide := true}).

leanprover/lean4#2783

This changed the behaviour of simp so that simp [f] will only unfold "fully applied" occurrences of f. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true }). We may in future add a syntax for this, e.g. simp [!f]; please provide feedback! In the meantime, we have made the following changes:

  • switching to using explicit lemmas that have the intended level of application
  • (config := { unfoldPartialApp := true }) in some places, to recover the old behaviour
  • Using @[eqns] to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp and Function.flip.

This change in Lean may require further changes down the line (e.g. adding the !f syntax, and/or upstreaming the special treatment for Function.comp and Function.flip, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!

Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>

Diff
@@ -227,7 +227,7 @@ theorem unique_unit_speed_on_Icc_zero {s t : ℝ} (hs : 0 ≤ s) (ht : 0 ≤ t)
   rw [← φst] at hf
   convert unique_unit_speed φm hfφ hf ⟨le_rfl, hs⟩ using 1
   have : φ 0 = 0 := by
-    have hm : 0 ∈ φ '' Icc 0 s := by simp only [mem_Icc, le_refl, ht, φst]
+    have hm : 0 ∈ φ '' Icc 0 s := by simp only [φst, ht, mem_Icc, le_refl, and_self]
     obtain ⟨x, xs, hx⟩ := hm
     apply le_antisymm ((φm ⟨le_rfl, hs⟩ xs xs.1).trans_eq hx) _
     have := φst ▸ mapsTo_image φ (Icc 0 s)
chore: drop MulZeroClass. in mul_zero/zero_mul (#6682)

Search&replace MulZeroClass.mul_zero -> mul_zero, MulZeroClass.zero_mul -> zero_mul.

These were introduced by Mathport, as the full name of mul_zero is actually MulZeroClass.mul_zero (it's exported with the short name).

Diff
@@ -66,7 +66,7 @@ theorem hasConstantSpeedOnWith_of_subsingleton (f : ℝ → E) {s : Set ℝ} (hs
     (l : ℝ≥0) : HasConstantSpeedOnWith f s l := by
   rintro x hx y hy; cases hs hx hy
   rw [eVariationOn.subsingleton f (fun y hy z hz => hs hy.1 hz.1 : (s ∩ Icc x x).Subsingleton)]
-  simp only [sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
+  simp only [sub_self, mul_zero, ENNReal.ofReal_zero]
 #align has_constant_speed_on_with_of_subsingleton hasConstantSpeedOnWith_of_subsingleton
 
 theorem hasConstantSpeedOnWith_iff_ordered :
@@ -127,7 +127,7 @@ theorem HasConstantSpeedOnWith.union {t : Set ℝ} (hfs : HasConstantSpeedOnWith
     exacts [⟨⟨hs.1, hs.2 zs, le_rfl⟩, fun w ⟨_, _, wx⟩ => wx⟩,
       ⟨⟨ht.1, le_rfl, ht.2 yt⟩, fun w ⟨_, xw, _⟩ => xw⟩]
   · cases le_antisymm zy ((hs.2 ys).trans (ht.2 zt))
-    simp only [Icc_self, sub_self, MulZeroClass.mul_zero, ENNReal.ofReal_zero]
+    simp only [Icc_self, sub_self, mul_zero, ENNReal.ofReal_zero]
     exact eVariationOn.subsingleton _ fun _ ⟨_, uz⟩ _ ⟨_, vz⟩ => uz.trans vz.symm
   · have : (s ∪ t) ∩ Icc z y = t ∩ Icc z y := by
       ext w; constructor
@@ -157,7 +157,7 @@ theorem HasConstantSpeedOnWith.Icc_Icc {x y z : ℝ} (hfs : HasConstantSpeedOnWi
 theorem hasConstantSpeedOnWith_zero_iff :
     HasConstantSpeedOnWith f s 0 ↔ ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), edist (f x) (f y) = 0 := by
   dsimp [HasConstantSpeedOnWith]
-  simp only [MulZeroClass.zero_mul, ENNReal.ofReal_zero, ← eVariationOn.eq_zero_iff]
+  simp only [zero_mul, ENNReal.ofReal_zero, ← eVariationOn.eq_zero_iff]
   constructor
   · by_contra'
     obtain ⟨h, hfs⟩ := this
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -44,7 +44,7 @@ open scoped BigOperators NNReal ENNReal
 
 open Set MeasureTheory Classical
 
-variable {α : Type _} [LinearOrder α] {E : Type _} [PseudoEMetricSpace E]
+variable {α : Type*} [LinearOrder α] {E : Type*} [PseudoEMetricSpace E]
 
 variable (f : ℝ → E) (s : Set ℝ) (l : ℝ≥0)
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2023 Rémi Bottinelli. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
-
-! This file was ported from Lean 3 source module analysis.constant_speed
-! leanprover-community/mathlib commit f0c8bf9245297a541f468be517f1bde6195105e9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Set.Function
 import Mathlib.Analysis.BoundedVariation
 
+#align_import analysis.constant_speed from "leanprover-community/mathlib"@"f0c8bf9245297a541f468be517f1bde6195105e9"
+
 /-!
 # Constant speed
 
feat: port Analysis.ConstantSpeed (#5298)

Dependencies 12 + 1034

1035 files ported (98.9%)
471897 lines ported (98.8%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file